vlan

Ответить
ya
^-^
Сообщения: 2336
Зарегистрирован: 16 дек 2021, 19:56

vlan

Сообщение ya »

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 должно быть достаточно.

Код: Выделить всё

# 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
# (...)
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).

Код: Выделить всё

# 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
# (...)
Похоже, что ifupdown2 может установить необходимые сетевые интерфейсы bond-slaves (даже vlans), не конфигурируя их ранее.

Я основывался на конфигурации на этой странице:
https://docs.nvidia.com/networking-ethernet-software/knowledge-base/Configuration-and-Usage/Network-Interfaces/Compare-ifupdown2-with-ifupdown/
Вложения
vlan-interface-300x177.jpg
vlan-interface-300x177.jpg (12.96 КБ) 8853 просмотра
vlan-interface-300x177.jpg
vlan-interface-300x177.jpg (12.96 КБ) 8853 просмотра
ya
^-^
Сообщения: 2336
Зарегистрирован: 16 дек 2021, 19:56

Re: vlan

Сообщение ya »

для конфигурирования vlan можно использовать vconfig и ifupdown2

Необходимые пакеты:

vlan - ifupdown integration for vlan configuration
ifupdown2 - Network Interface Management tool similar to ifupdown

vconfig - VLAN (802.1q) configuration program.
Программа vconfig позволяет создавать и удалять vlan-устройства на ядре с поддержкой vlan. Vlan-устройства - это виртуальные ethernet-устройства, которые представляют виртуальные ланы на физическом канале.
https://manpages.debian.org/bookworm/vlan/vconfig.8.en.html

VLAN будет использовать интерфейс Broadcom NICE, если сетевое устройство поддерживает его. Это необходимо, поскольку обычно аппаратное обеспечение таких устройств уже удаляет метку vlan из ethernet-пакета. Опция set_flag для vlan-устройств, созданных на таком физическом сетевом устройстве, будет проигнорирована. Дампинг сетевого устройства покажет только нетегированный (не vlan) трафик, а дампинг vlan-устройств покажет только трафик, предназначенный для данного vlan, без тегов.


настройка разных типов VLAN на коммутаторах Cisco.
https://wiki.merionet.ru/articles/polnoe-rukovodstvo-po-nastrojke-vlan

Типичные примеры конфигураци коммутаторов серии CloudEngine
https://support.huawei.com/enterprise/ru/doc/EDOC1100112933/7fcb0f74

Код: Выделить всё

#!/bin/sh -e

ip link add link eth4 name vlan22 type vlan id 22
ip addr add 192.168.122.254/24 dev vlan22
ifconfig vlan22 up
ya
^-^
Сообщения: 2336
Зарегистрирован: 16 дек 2021, 19:56

Понятие VLAN, Trunk и протоколы VTP и DTP

Сообщение ya »

Понятие VLAN, Trunk и протоколы VTP и DTP
https://habr.com/ru/articles/319080/

Хочу заострить внимание на том, что тегирование кадров осуществляется между сетевыми устройствами (коммутаторы, маршрутизаторы и т.д.), а между конечным узлом (компьютер, ноутбук) и сетевым устройством кадры не тегируются. Поэтому порт сетевого устройства может находиться в 2-х состояниях: access или trunk.

Access port или порт доступа — порт, находящийся в определенном VLAN и передающий не тегированные кадры. Как правило, это порт, смотрящий на пользовательское устройство.
Trunk port или магистральный порт — порт, передающий тегированный трафик. Как правило, этот порт поднимается между сетевыми устройствами.
Ответить