vlan
Добавлено: 02 май 2024, 21:58
ifupdown2 - Network Interface Management tool similar to ifupdown
Как настроить интерфейс VLAN в Debian 12/11/10
https://techviewleo.com/how-to-configure-vlan-interface-on-debian/
Создание Linux-моста на интерфейсе VLAN в Debian 12/11/10
https://techviewleo.com/create-linux-bridge-on-vlan-interface-in-debian-ubuntu/
Связывание с VLAN и мостом на Debian 11
https://unix.stackexchange.com/questions/696582/bonding-with-vlan-and-bridge-on-debian-11
Пытаюсь настроить на Linux бондинг active-backup (2 физических интерфейса eth2 и eth3, один используется), но также с двумя VLAN, и в дальнейшем подключить его к внутренним мостам. Я вижу два варианта подключения, оба работают,
Первый метод работает хорошо и выглядит просто, но все VLAN маршрутизируются через один физический интерфейс (более низкая пропускная способность).
Второй способ проблематичен (для меня), но я предпочитаю второй, потому что он позволяет маршрутизировать одну VLAN через eth2, а вторую VLAN через eth3 (большая пропускная способность с отказоустойчивостью).
Я не хочу использовать bond-mode 4 = 802.3ad AKA LACP (серверы подключены к разным коммутаторам Cisco, я слышал и видел некоторые проблемы с такими конфигурациями), поэтому bond-mode active-backup должно быть достаточно.
У меня есть сервер с Debian 11, 2 сетевых интерфейса, установлены пакеты vlan, bridge-utils и ifenslave (в версии 2.13 из тестового репо, из-за этой проблемы с 2.12). Модули 8021q и bonding загружены в систему.
Вопрос 1: Является ли первый вариант подключения наилучшей практикой в данном случае? И почему? Я спрашиваю, потому что большинство (или, возможно, все) руководства, найденные в интернете, посвящены первому варианту подключения (даже Debian Wiki)
Вариант 1
Это работает отлично, я могу сделать это как с консоли, так и через конфигурационный файл. Недостаток этого варианта: оба VLAN отправляются всегда через один интерфейс. Мой текущий /etc/network/interfaces (неважные элементы удалены)
После перезагрузки системы этот конфиг работает корректно, но я хотел бы настроить и использовать второй вариант.
Вариант 2: работает из оболочки, не удается сделать это из файла конфигурации
Я могу выполнить эту настройку из командной строки:
И сеть работает:
Но я не могу создать файл конфигурации, чтобы сделать это постоянным. Я перепробовал множество вариантов, но безуспешно. Если я подключаю интерфейс eth2.10 напрямую к какому-нибудь xenbr10, он работает.
После перезагрузки системы обычно возникают следующие ошибки:
ifup[686]: Failed to enslave eth2.10 to bond10. Является ли bond10 готовым и связующим интерфейсом?
Вопрос 2: Что не так с этой конфигурацией? Я пробовал
установить конфигурацию eth2.10 выше или ниже конфигурации bond10,
использовать запись bond-master bond10 для eth2.10 и bond-slaves none в части конфигурации bond10
использовать bond-slaves eth2.10 eth3.10 в части bond10
использовать auto eth2.10
set eth2.10 config above or below the bond10 configuration,
use bond-master bond10 entry for eth2.10 and bond-slaves none in bond10 config part
use bond-slaves eth2.10 eth3.10 entry in bond10 part
use auto eth2.10
Первая конфигурация, возможно, не слишком элегантна, но работает:
Thanks to A.B.'s comment (link) I found even better solution using ifupdown2. Beaware: during installation of this package (it removes older ifupdown) I've lost network until reboot (perhaps restarting network would be enough, not tested).
Похоже, что ifupdown2 может установить необходимые сетевые интерфейсы bond-slaves (даже vlans), не конфигурируя их ранее.
Я основывался на конфигурации на этой странице:
https://docs.nvidia.com/networking-ethernet-software/knowledge-base/Configuration-and-Usage/Network-Interfaces/Compare-ifupdown2-with-ifupdown/
Как настроить интерфейс VLAN в Debian 12/11/10
https://techviewleo.com/how-to-configure-vlan-interface-on-debian/
Создание Linux-моста на интерфейсе VLAN в Debian 12/11/10
https://techviewleo.com/create-linux-bridge-on-vlan-interface-in-debian-ubuntu/
Связывание с VLAN и мостом на Debian 11
https://unix.stackexchange.com/questions/696582/bonding-with-vlan-and-bridge-on-debian-11
Пытаюсь настроить на Linux бондинг active-backup (2 физических интерфейса eth2 и eth3, один используется), но также с двумя VLAN, и в дальнейшем подключить его к внутренним мостам. Я вижу два варианта подключения, оба работают,
Первый метод работает хорошо и выглядит просто, но все VLAN маршрутизируются через один физический интерфейс (более низкая пропускная способность).
Второй способ проблематичен (для меня), но я предпочитаю второй, потому что он позволяет маршрутизировать одну VLAN через eth2, а вторую VLAN через eth3 (большая пропускная способность с отказоустойчивостью).
Я не хочу использовать bond-mode 4 = 802.3ad AKA LACP (серверы подключены к разным коммутаторам Cisco, я слышал и видел некоторые проблемы с такими конфигурациями), поэтому bond-mode active-backup должно быть достаточно.
Код: Выделить всё
# 1. Two NICs agregated to one bonding, and then separate VLANS from bonding interface:
eth2 bond1.10 - xenbr10
> bond1 <
eth3 bond1.15 - xenbr15
# 2. VLANs separated form physical NIC, then aggregate to separate binding interfaces.
eth2.15 ...
eth2 <
eth2.10
> bond10 - xenbr10
eth3.10
eth3 <
eth3.15 ...
У меня есть сервер с Debian 11, 2 сетевых интерфейса, установлены пакеты vlan, bridge-utils и ifenslave (в версии 2.13 из тестового репо, из-за этой проблемы с 2.12). Модули 8021q и bonding загружены в систему.
Вопрос 1: Является ли первый вариант подключения наилучшей практикой в данном случае? И почему? Я спрашиваю, потому что большинство (или, возможно, все) руководства, найденные в интернете, посвящены первому варианту подключения (даже Debian Wiki)
Вариант 1
Это работает отлично, я могу сделать это как с консоли, так и через конфигурационный файл. Недостаток этого варианта: оба VLAN отправляются всегда через один интерфейс. Мой текущий /etc/network/interfaces (неважные элементы удалены)
Код: Выделить всё
iface eth2 inet manual
iface eth3 inet manual
auto bond1
iface bond1 inet manual
bond-slaves eth2 eth3
bond-mode active-backup
bond-miimon 100
bond-downdelay 200
bond-updelay 200
iface bond1.10 inet manual
vlan-raw-device bond1
iface bond1.15 inet manual
vlan-raw-device bond1
auto xenbr10
iface xenbr10 inet static
address 1.2.3.4/24
bridge_ports bond1.10
Вариант 2: работает из оболочки, не удается сделать это из файла конфигурации
Я могу выполнить эту настройку из командной строки:
Код: Выделить всё
ifconfig eth2 up
ifconfig eth3 up
#setting up VLANs
ip link add link eth2 name eth2.10 type vlan id 10
ip link add link eth3 name eth3.10 type vlan id 10
#creating bonding interface with 2 slaves NIC
ip link add name bond1 type bond mode active-backup
ip link set dev eth2.10 down
ip link set dev eth3.10 down
ip link set master bond10 dev eth2.10
ip link set master bond10 dev eth3.10
ip link set up dev bond10
ip link set dev eth2.10 up
ip link set dev eth3.10 up
### Bridge + bonding
brctl addbr xenbr10
brctl addif xenbr10 bond10
ip addr add 1.2.3.4/24 dev xenbr10
ip link set dev xenbr10 up
Код: Выделить всё
cat /proc/net/bonding/bond10
Ethernet Channel Bonding Driver: v5.10.0-12-amd64
Bonding Mode: fault-tolerance (active-backup)
Primary Slave: None
Currently Active Slave: eth2.10
MII Status: up
(..)
Slave Interface: eth2.10
MII Status: up
Speed: 1000 Mbps
Duplex: full
Link Failure Count: 0
Permanent HW addr: (..)
Slave Interface: eth3.10
MII Status: up
(..)
Но я не могу создать файл конфигурации, чтобы сделать это постоянным. Я перепробовал множество вариантов, но безуспешно. Если я подключаю интерфейс eth2.10 напрямую к какому-нибудь xenbr10, он работает.
Код: Выделить всё
iface eth2.10 inet manual
vlan-raw-device eth2
iface eth3.10 inet manual
vlan-raw-device eth3
bond-master bond10 #It doesn't change nothing, for testing
auto bond10
iface bond10 inet manual
bond-slaves eth2.10 eth3.10
#bond-slaves none
bond-mode active-backup
bond-miimon 100
bond-downdelay 200
bond-updelay 200
auto xenbr10
iface xenbr10 inet static
address 1.2.3.4/24
bridge_ports bond1.10
ifup[686]: Failed to enslave eth2.10 to bond10. Является ли bond10 готовым и связующим интерфейсом?
Вопрос 2: Что не так с этой конфигурацией? Я пробовал
установить конфигурацию eth2.10 выше или ниже конфигурации bond10,
использовать запись bond-master bond10 для eth2.10 и bond-slaves none в части конфигурации bond10
использовать bond-slaves eth2.10 eth3.10 в части bond10
использовать auto eth2.10
set eth2.10 config above or below the bond10 configuration,
use bond-master bond10 entry for eth2.10 and bond-slaves none in bond10 config part
use bond-slaves eth2.10 eth3.10 entry in bond10 part
use auto eth2.10
Первая конфигурация, возможно, не слишком элегантна, но работает:
Код: Выделить всё
# Using default ifupdown on Debian 11:
# Set up NIC and NIC's alias with VLAN:
auto eth2
iface eth2 inet manual
post-up ip link add link eth2 name eth2.10 type vlan id 10
post-up ip link add link eth2 name eth2.15 type vlan id 15
auto eth3
iface eth3 inet manual
post-up ip link add link eth3 name eth3.10 type vlan id 10
post-up ip link add link eth3 name eth3.15 type vlan id 15
auto bond533
iface bond533 inet manual
bond-slaves eth2.533 eth3.533
bond-mode active-backup
# (...)
Код: Выделить всё
# After installing ifupdown2:
# No need to set up physical NIC or VLAN interface!
#iface eth2.10 inet manual
# vlan-raw-device eth2
#iface eth2.533 inet manual
# vlan-raw-device eth2
#Set up bonding and brige (the same as with ifupdown)
auto bond533
iface bond533 inet manual
bond-slaves eth2.533 eth3.533
bond-mode active-backup
# (...)
Я основывался на конфигурации на этой странице:
https://docs.nvidia.com/networking-ethernet-software/knowledge-base/Configuration-and-Usage/Network-Interfaces/Compare-ifupdown2-with-ifupdown/