Перейти к содержанию

Сетевой мост Linux bridge

Программный мост объединяет несколько L2-интерфейсов в один домен широковещательной передачи. Он нужен, например, когда гостевые виртуальные машины должны видеть обычную сеть сервера. В НАЙС.ОС CLOUD сетевой мост создаётся .netdev/.network файлами systemd-networkd.

При переносе адреса на bridge легко потерять SSH

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

Схема

                сеть L2 / гипервизор
                       |
                      ens3  (порт моста, без IP)
                       |
                      br0   (IP / DHCP управления)
                       |
              tap0, veth..., гостевые VM

Прежде чем конфигурировать мост, убедитесь, что провайдер разрешает несколько MAC-адресов за интерфейсом и допускает мостовую сеть. В некоторых облаках такой режим технически запрещён.

1. Создание виртуального интерфейса

# /etc/systemd/network/20-br0.netdev
[NetDev]
Name=br0
Kind=bridge

2. Присоединение физического порта

# /etc/systemd/network/10-ens3.network
[Match]
Name=ens3

[Network]
Bridge=br0

Здесь физический порт ens3 становится участником br0. Прежние Address=, DHCP=, Gateway= и DNS физического порта необходимо перенести в профиль моста после согласования схемы. Не редактируйте только эту часть на живом удалённом узле.

3. Настройка адреса на мосту

Вариант с DHCP:

# /etc/systemd/network/20-br0.network
[Match]
Name=br0

[Network]
DHCP=ipv4

Вариант со статическим адресом (используйте вместо DHCP, не одновременно):

[Match]
Name=br0

[Network]
Address=192.0.2.30/24
Gateway=192.0.2.1
DNS=192.0.2.53

Адреса приведены только как пример. Не создавайте второй маршрут по умолчанию на ens3.

4. Проверки перед перезагрузкой

networkctl reload
networkctl reconfigure ens3
networkctl reconfigure br0
networkctl status br0
ip -d link show br0
ip -br addr
ip -4 route
bridge link show
journalctl -b -u systemd-networkd --no-pager -n 100

Некоторые устройства при первом создании требуют дополнительного события инициализации. Если br0 не появился, читайте журнал networkd, а не выполняйте ip link delete ens3.

Что часто ломается

Симптом Вероятная причина Проверка
Нет IP на br0 DHCP недоступен, профиль моста не выбран networkctl status br0
Одновременно IP у ens3 и br0 Не удалена адресация физического порта ip -br addr
ВМ без связи Ограничения MAC / bridge порт не подключён bridge link, настройки гипервизора
Нельзя выйти в интернет Нет маршрута по умолчанию или OUTPUT DROP ip route, iptables -S OUTPUT
Трафик маршрутизируется неожиданно Смешаны L2-мост и L3-форвардинг ip route, sysctl net.ipv4.ip_forward

Мост сам по себе не обязан включать IP-маршрутизацию между подсетями. Для неё нужна отдельная архитектура с ip_forward и iptables FORWARD/NAT.

Откат

Если связь пропала, работайте через консоль. Верните прежний профиль ens3, удалите добавленные файлы 20-br0.* и выполните networkctl reload, затем проверьте адреса и маршруты. Не закрывайте консоль до восстановления SSH.

Источники: systemd.netdev, systemd.network.