Как соединить 2 виртуальных моста, чтобы трафик шел от одного к другому?

Система Debian, текущая ситуация, настроенная через etc / network / interfaces

Мост “br0” имеет 2 физических интерфейса Ethernet eth0 (сторона WAN, подключенная к модему / маршрутизатору ISP) eth1 (сторона LAN идет к физическому коммутатору)

Трафик между eth0 и eth1 проходит через межсетевой экран IPtables и Suricata как IPS. Эта настройка в настоящее время работает нормально.

Теперь я хочу добавить «пи-дыру» в эту настройку через контейнер Linux. Контейнеру Linux необходим виртуальный мост для добавления его виртуального интерфейса Ethernet.

Поэтому я хочу добиться следующего:

Виртуальный мост “br0” – с eth0 (WAN)

подключен к виртуальному мосту “lanbr0” – с eth1 (LAN) – с veth0 (виртуальный интерфейс Ethernet для LXC)

Таким образом, я могу добавить больше интерфейсов к мосту «lanbr0», если потребуется в будущем.

я смог сделать это с помощью следующих команд ip link add veth0 type veth peer name veth1

затем добавление veth0 к br0 и veth1 к lanbr0 + перемещение eth1 с br0 на lanbr0 после поднятия всех интерфейсов

Тем не менее, как мне сделать это через / etc / network / interfaces (чтобы он загружался при запуске, как это?

2 Solutions collect form web for “Как соединить 2 виртуальных моста, чтобы трафик шел от одного к другому?”

Не предусмотрено специально для обработки виртуальных двойных интерфейсов type veth . Так что немного повозится в порядке, в основном, используя опцию pre-up . Я сохранил здесь veth0 и veth1 , но вам следует рассмотреть возможность выбора любых других имен (например, veth-br0 и veth-lanbr0 ), потому что это имена по умолчанию, выбранные, если они не указаны (например: ip link add type veth ), и они могут столкновение.

Для интерфейсов veth :

 iface veth0 inet manual pre-up ip link add veth0 type veth peer name veth1 || : hwaddress 02:00:00:01:00:00 iface veth1 inet manual pre-up ip link add veth1 type veth peer name veth0 || : hwaddress 02:00:00:01:00:01 

Это позволяет использовать оба интерфейса при вызове любого из них. || : || : здесь, чтобы не потерпеть неудачу, потому что одноранговый интерфейс уже был настроен “другим” интерфейсом. Обратите внимание, что для внутреннего состояния ifup оба должны быть подняты в конце, даже если при поднятии одного из них появится другой. Для предполагаемого использования hwaddress , вероятно, является необязательным и в любом случае может быть установлено любое другое правильное значение. Мост берет MAC-адрес первого порабощенного интерфейса.

Теперь используйте их в мостах. Я не буду ставить все ваши настройки (потому что вы на самом деле не дали), только veth связанные с veth . Вам придется адаптировать то, что я не мог догадаться, и где я оставил XXXX или ... (например, inet XXXX inet manual inet static или inet dhcp ?)

 auto br0 iface br0 inet XXXX pre-up ifup veth0 bridge_ports eth0 veth0 ... auto lanbr0 iface lanbr0 inet XXXX pre-up ifup veth1 bridge_ports veth1 eth1 address xx.xx.xx.xx netmask 255.255.255.0 ... 

Примечание. ifup vethX я ifup vethX команду ifup vethX , потому что иначе он будет жаловаться, что интерфейс не существует, выведет мост без этого интерфейса и посчитает, что это сделано. Я не должен был использовать || : || : здесь, потому что ifupdown уже логически (что означает состояние ifupdown ) up не является ошибкой.

После заполнения недостающих частей поместите их в отдельные (или нет) файлы конфигурации в /etc/network/interfaces.d (или даже в /etc/network/interfaces ), и это должно работать.

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

Также обратите внимание, что могут быть взаимодействия с другими сетевыми менеджерами, например … NetworkManager. Возможно, есть варианты, чтобы они игнорировали некоторые интерфейсы, но это выходит за frameworks этого ответа.

Для справки вот полный скрипт интерфейса (добавив xx для некоторых адресов):

 # The loopback network interface auto lo iface lo inet loopback # IPv4 address auto enp8s0 iface enp8s0 inet manual offload-gro off offload-lro off auto enp0s31f6 iface enp0s31f6 inet manual iface veth0 inet manual pre-up ip link add veth0 type veth peer name veth1 || : hwaddress 02:00:00:01:00:00 iface veth1 inet manual pre-up ip link add veth1 type veth peer name veth0 || : hwaddress 02:00:00:01:00:01 # Bridge setup auto br0 iface br0 inet static pre-up ifup veth0 bridge_ports enp8s0 veth0 bridge_fd 0 bridge_maxwait 0 address 192.168.xx.xx broadcast 192.168.xx.xx network 192.168.xx.xx netmask 255.255.255.0 gateway 192.168.xx.xx dns-nameservers xx.xx.xx.xx xx.xx.xx.xx auto lanbr0 iface lanbr0 inet manual pre-up ifup veth1 bridge_ports veth1 enp0s31f6 

Еще раз спасибо AB

  • Автоматизировать процесс удаления отводных устройств
  • Избегайте тайм-аута запуска сети при поднятии моста при загрузке
  • Есть ли способ кэшировать последний IP-адрес, назначенный на DHCP-клиентах, и использовать его, если DHCP-сервер не работает?
  • Не удается настроить eth0 при загрузке
  • Есть ли способ сделать фильтрацию 7 уровня в Linux?
  • Почему непривилегированные пользователи не могут вкладывать монтирования FUSE, но они могут монтировать FUSE внутри NFS с помощью root_squash?
  • Сетевой интерфейс не работает
  • Как использовать ISC KEA DHCP для информирования моих клиентов DHCPv4 «DNS» и «GATEWAY»?
  • Клиент CentOS 7 DHCP - Как использовать «бесclassовые статические маршруты» («код 121»)?
  • Как направить трафик из Ethernet на устройство Tun (создать порт Ethernet с VPN-соединением)
  • Пинг пропускает правила iptables / postrouting
  • Linux и Unix - лучшая ОС в мире.