Для чего нужен virbr0-nic

При использовании KVM в списке интерфейсов основной системы появляется минимум два дополнительных интерфейса virbr0 и virbr0-nic. Назначение первого говорит само за себя — виртуальный мост, который будет связывать созданные Вами виртуальные машины с основной машиной. Назначение второго является не очевидным и в первые минуты загадочным. Если выполнить команду:

# brctl show
bridge name	bridge id		STP enabled	interfaces
virbr0		8000.52540072bcb8	yes		virbr0-nic

видно, что virbr0-nic является одним из сетевых интерфейсов созданного моста virbr0. Оказывается virbr0-nic создается исключительно как workaround для следующей задачи.

Когда мы создаем любой мост, его MAC адрес назначается на основании MAC адреса первого добавленного сетевого интерфейса. Если из моста удалить все привязанные интерфейсы и добавить новый, то MAC адрес существующего моста измениться на MAC адрес нового привязанного сетевого интерфейса. А так как с виртуальными машинами происходят постоянные включения/выключения, то их виртуальные интерфейсы vnetX постоянно появляются и исчезают. Чтобы сохранить MAC адрес созданного моста virbr0 постоянным разработчики пошли на такой финт ушами и создали виртуальный интерфейс virbr0-nic, значением которого инициализируется MAC адрес моста и остается постоянным вне зависимости от создаваемых и удаляемых виртуальных машин. Убедиться в этом можно выполнением следующей команды:

# ip link
...
3: virbr0:  mtu 1500 qdisc noqueue state UP 
    link/ether 52:54:00:72:bc:b8 brd ff:ff:ff:ff:ff:ff
4: virbr0-nic:  mtu 1500 qdisc noop master virbr0 state DOWN qlen 500
    link/ether 52:54:00:72:bc:b8 brd ff:ff:ff:ff:ff:ff
...

Наглядно видно, что MAC адреса virbr0 и virbr0-nic идентичные.

Добавить комментарий

Ваш e-mail не будет опубликован.