Виртуальный сетевой мост: почему ему должен быть назначен IP-адрес?

Либо используйтеgrep -E(современную форму для egrep), чтобы |рассматривалось как расширенное регулярное выражение оператор чередования , но тогда вам нужно экранировать все остальные операторы регулярного выражения (как ., ?, *, ^, $, \, [, (, ), {,})в вашем фиксированные строки .

Или используйте -Fи передавайте строки по одной в строке или несколькими -eс:

grep -Fe string1 -e string2 -e string3

Или:

grep -F 'string1
string2
string3'

Добавьте параметр -x, если эти фиксированные строки должны составлять всю совпадающую строку (, а не находиться в любом месте в пределах строки без нее ). Большинство реализаций grepтакже имеют параметр -wдля соответствия слову , где, например, string1будет соответствовать внутри foo string1-2, но не внутри foostring12.

Для вашего конкретного примера в комментариях это будет:

grep -wE 'Allow from (8\.8\.2\.5|192\.3\.0\.4)|DenyAll'

Или:

grep -we 'Allow from 8.8.2.5' -e 'Allow from 192.3.0.4' -e 'DenyAll'

Вам нужно либо -w, либо -x(, предполагая, что это целые строки, даже не пробелы вокруг )здесь, так как в противном случае он также будет совпадать в строках, подобных Allow from 8.8.2.51.

Вы также можете написать это:

grep -xE '[[:space:]]*(Allow from (8\.8\.2\.5|192\.3\.0\.4)|DenyAll)[[:space:]]*'

Для соответствия всей строке (-x), но разрешая начальные и конечные символы пробела (здесь с использованием [[:space:]]вместо [[:blank:]], чтобы также разрешить символы CR, найденные в конце строк, исходящих из MS -Мир DOS ).

Чтобы искать эти фиксированные строки в любом месте строки, но не внутри комментариев, необходимо убедиться, что часть строки, ведущая к этим фиксированным строкам, не содержит #символов. Что-то вроде:

grep -wE '^[^#]*(Allow from (8\.8\.2\.5|192\.3\.0\.4)|DenyAll)'

Обратите внимание, что -wне применяется к Allow, поскольку применяется ко всей совпадающей строке. Например, это будет соответствовать GAllow from. Некоторые реализации grepподдерживают \<, \>для соответствия границам слов явно (, также известным как \bв некоторых):

grep -E '^[^#]*\<(Allow from (8\.8\.2\.5|192\.3\.0\.4)|DenyAll)\>'

Также обратите внимание, что в apache2директивы конфигурации нечувствительны к регистру и между словами допускается любое количество пробелов. Кроме того, я подозреваю, что вы имели в виду Deny from allвместо DenyAll, так что, возможно, вы захотите:

grep -iE '^[^#]*\<(allow[[:blank:]]+from[[:blank:]]+(8\.8\.2\.5|192\.3\.0\.4)|deny[[:blank:]]+from[[:blank:]]+all)\>'
0
11.03.2020, 04:31
1 ответ
  1. Why does a virtual bridge need an IP address when a physical one does not?

Существует заблуждение, что виртуальному мосту нужен IP-адрес. Это не нужно.

На самом деле вы можете иметь виртуальный мост без IP-адреса. Но тогда сам хост вообще не будет доступен по IP на этом физическом интерфейсе :, только виртуальные машины.

Это может быть полезно на узле виртуализации предприятия. :У вас может быть клиентская сеть, которую необходимо подключить к клиентским виртуальным машинам. Возможно, вы не захотите предоставлять доступ из такой сети к самому хосту виртуализации, а только к соответствующим виртуальным машинам. Тогда у вас будет другая, физически отдельная сеть управления, которую вы будете использовать для администрирования хостов виртуализации. Эта сеть будет подключена к хосту через отдельную сетевую карту, которая не будет членом какого-либо виртуального моста.

  1. How does the physical NIC know to use the virtual bridge's IP address when the NIC doesn't have one?

Если физический сетевой адаптер не имеет специальных функций ускорения IPv4, IP-адрес является просто полезными данными для сетевого адаптера. Базовая физическая сетевая карта работает только с уровнем -2, то есть с MAC-адресами. IP-протокол — это уровень -3, который обычно остается для стека сетевых драйверов операционной системы. Когда вы «настраиваете IP-адрес для сетевой карты» с помощью ifconfigили ip addr, вы не обязательно вносите какие-либо изменения в реальную конфигурацию физического оборудования, но в абстрактную конструкцию, которая включает в себя как физическую сетевую карту, так и ОС -уровень поддержки IP-протокола, связанного с сетевой картой.

Когда физическая сетевая карта настроена на работу в качестве члена моста, все функции ускорения Уровня -3, возможно, придется отключить в любом случае. :При работе в качестве части моста сетевая карта должна все входящие пакеты, независимо от MAC-адреса или IP-адреса назначения, и код моста будет решать, будет ли пакет пересылаться и какому члену моста. Базовый мост вообще не должен заботиться об IP-адресах. Любая функциональность Уровня -3 в мосте выходит за рамки базовой функциональности моста и является/должна быть необязательной в виртуальном мосту.

Если физический сетевой адаптер сконфигурирован с IP-адресом при настройке в качестве части моста, он активирует функцию ARP на этом сетевом адаптере (+ его драйвере ). Но исходящие сообщения ARP от этой физической сетевой карты не смогут достичь виртуальных машин :, чтобы достичь всего сегмента с их ARP (, поскольку для надлежащей функциональности уровня -2 требуется ), драйвер сетевой карты должен будет генерировать сообщение ARP как исходящее и входящее сообщение одновременно, и у драйвера сетевой карты не будет кода для этого.

Наличие виртуального моста с виртуальными машинами означает, что некоторые части IP-сегмента моста будут физически находиться за пределами хоста, а другие будут содержаться в виртуальных машинах, расположенных внутри хоста. Если бы хост, как обычно, использовал сетевую карту для связи с одной из виртуальных машин, пакеты без необходимости отправлялись бы с хоста на физический коммутатор или маршрутизатор, к которому подключен хост, а оттуда им пришлось бы вернуться к хосту и через мост к виртуальной машине назначения.

Это, безусловно, было бы неэффективно и могло бы вообще не работать. :У физического коммутатора, к которому подключен хост с виртуальным мостом, обычно не было бы причин отправлять какие-либо пакеты, исходящие от этого хоста, обратно на сам хост..

Вместо этогоИсходящие пакеты от хоста к сетевому сегменту моста должны быть отправлены через код моста, который сначала ищет, какой интерфейс моста (, виртуальный или физический ), будет «ближайшим» к месту назначения. Если адресат известен мосту, исходящий пакет отправляется прямо к нему. Для связи между хостом и его виртуальными машинами это означает, что связь происходит полностью внутри физического хоста и вообще не использует пропускную способность физической сети за пределами хоста.

Если MAC-адрес получателя неизвестен мосту, исходящие пакеты сначала рассылаются через все интерфейсы-члены моста. :Как только получен ответ, мост узнает местоположение получателя пакет и может вернуться к эффективному методу работы (, как указано выше ).

При отправке запросов ARP от хоста, содержащего мост, запросы должны транслироваться как виртуальным машинам , так и из физического сетевого адаптера, чтобы запросы фактически отправлялись на весь сегмент сети :код моста может это сделать, а отдельный физический сетевой адаптер не может.

Я думаю, что нет требования, чтобы мост Linux был исключительно физическим или виртуальным :Я не понимаю, почему мост Linux не может иметь несколько физических интерфейсов и любое количество виртуальных машин, связанных с Это. Но в корпоративной среде вы, как правило, не хотели бы создавать такой хост «делай -все». Он может легко превратиться в сложную, критически важную часть инфраструктуры, которая не может иметь простоев никогда; иными словами, головная боль для системных администраторов.

  1. Why do VMs need to communicate with the bridge while physical machines don't actually communicate with a physical bridge directly?

Опять неправильное представление :о том, что виртуальным машинам не нужен IP-адрес на мосту "для связи с мостом" как таковой.

Но если вы хотите, чтобы хост и виртуальные машины могли взаимодействовать друг с другом в одном сегменте IP-сети, можно назначить IP-адрес мостовому устройству.

IP-адрес на мостовом устройстве предназначен в первую очередь для удовлетворения коммуникационных потребностей хоста , а не виртуальных машин -, но он может позволить хосту обмениваться данными с виртуальными машинами через IP эффективно без зацикливания на внешних устройствах, если это то, что вам нужно.

3
28.04.2021, 23:20

Теги

Похожие вопросы