klink0v (klink0v) wrote,
klink0v
klink0v

Неприятный косяк с bridge / KVM

При виртуализации методом QEMU / KVM транзит трафика из реальной физической сети в виртуальную машину и обратно происходит через сетевые мосты (bridge). На хост машине в такой мост слинкован физический интерфейс (например, eth0) с одной стороны и интерфейсы-заглушки (например, tap100i0), принадлежащие виртуальной машине, с другой стороны. При этом имеет место быть одна неочевидная особенность поведения таких мостов.

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

С одной стороны, не так уж страшно. С другой стороны, при этом мы теряем связь с хост-машиной до момента обновления ARP-записей в свитчах. И тут уместно вспомнить о том, что каждый настраивает время "протухания" ARP-записей в коммутаторах так, как ему нравится. Оно может составлять от 30 секунд до 10 минут и более. Можно, конечно, принудительно "пнуть" свитчик приветственным (gratuitous) ARP-запросом. Но дык до этого ещё ж нужно во-первых догадаться, а во-вторых, иметь контроль над проблемным сервером.

Решение есть. Нужно явно прописывать в конфиге желаемый MAC-адрес моста таким, чтобы он всегда совпадал бы с MAC-адресом физического интерфейса. В deb-образных дистрибутивах это делается заклинанием вида

post-up ip link set br0 address 00:0a:e7:2c:44:2a

Более подробное описание (на буржуйском) есть вот здесь.

P.S. Конечно же, под словом "свитч" я имею в виду управляемые умные телекомовские коммутаторы, которые скорее маршрутизаторы, нежели коммутаторы. И ещё у меня есть подозрение, что он назначает не минимальный MAC-адрес, а MAC первого интерфейса в списке (в алфавитном порядке). Но проверять лениво.

Tags: linux, администрирование, виртуализация, грабли, сети
Subscribe
  • Post a new comment

    Error

    Anonymous comments are disabled in this journal

    default userpic

    Your reply will be screened

    Your IP address will be recorded 

  • 5 comments