Подробный гайд: Настройка bond0 → vlan → br0 в Debian 13

Пошаговая настройка сетевого стека в Debian 13: агрегация каналов bond0, тегирование VLAN и создание моста br0 через классический конфиг interfaces.

2026.05.16                  


Подробный гайд: Настройка bond0 → vlan → br0 в Debian 13Подробный гайд: Настройка bond0 → vlan → br0 в Debian 13

Важно:

Если вы подключены по SSH, применяйте конфигурацию только через консоль (KVM/IPMI/physically) или используйте механизм автоматического отката (см. шаг 4). Ошибка в конфигурации может привести к потере сетевого доступа.


1. Подготовка системы

Debian 13 (Trixie) по умолчанию использует ifupdown для обработки /etc/network/interfaces в server-установках.

Убедимся, что всё необходимое установлено:

sudo apt update
sudo apt install ifupdown bridge-utils vlan iproute2

В современных ядрах Linux модули bonding, 8021q и bridge встроены. Пакеты ifenslave и bridge-utils оставлены для обратной совместимости с ifupdown.


Загрузите модули вручную (один раз):

sudo modprobe bonding 8021q bridge

Добавьте их в автозагрузку:

echo -e "bonding\n8021q\nbridge" | sudo tee -a /etc/modules

Сделайте резервную копию текущей конфигурации:

sudo cp /etc/network/interfaces /etc/network/interfaces.backup.$(date +%F)

2. Конфигурация /etc/network/interfaces

Отредактируйте файл:

sudo nano /etc/network/interfaces

Замените содержимое на следующее (адаптируйте IP, VLAN ID и имена интерфейсов под вашу инфраструктуру):

# Loopback
auto lo
iface lo inet loopback

# ----------------------------------------------------------------
# 1. Физические интерфейсы (без IP, будут захвачены bond'ом)
# ----------------------------------------------------------------
auto eth0 eth1
iface eth0 inet manual
iface eth1 inet manual

# ----------------------------------------------------------------
# 2. Bonding (агрегация каналов)
# ----------------------------------------------------------------
auto bond0
iface bond0 inet manual
    bond-slaves eth0 eth1
    bond-mode 4              # 802.3ad (LACP). Для active-backup используйте 1
    bond-miimon 100          # Проверка линка каждые 100 мс
    bond-xmit-hash-policy layer2+3  # Балансировка по IP+MAC
    # bond-lacp-rate fast    # Раскомментировать, если свитч поддерживает fast LACP

# ----------------------------------------------------------------
# 3. VLAN 10 на bond0
# ----------------------------------------------------------------
auto bond0.10
iface bond0.10 inet manual
    vlan-raw-device bond0

# ----------------------------------------------------------------
# 4. Мост (br0) поверх VLAN
# ----------------------------------------------------------------
auto br0
iface br0 inet static
    address 192.168.10.10/24
    gateway 192.168.10.1
    dns-nameservers 8.8.8.8 1.1.1.1
    bridge-ports bond0.10
    bridge-stp off           # Отключаем STP (включите, если есть петли)
    bridge-fd 0              # Forward delay = 0
    bridge-vlan-aware no     # Упрощённый мост (для продвинутой работы с VLAN включите yes)

Пояснения к ключевым директивам:

Директива Назначение
iface X inet manual Не назначает IP, отдаёт управление вышестоящему интерфейсу
bond-mode 4 LACP. Требует поддержки LACP на коммутаторе. Если свитч не управляемый → используйте bond-mode 1 (active-backup)
vlan-raw-device Указывает, на каком устройстве тегировать трафик
bridge-ports Физические/виртуальные интерфейсы, включаемые в мост
bridge-stp off Отключает Spanning Tree. Включите (on), если в сети возможны петли

3. Применение конфигурации

Безопасный способ (рекомендуется)

# Запуск отложенного отката через 5 минут (если соединение прервётся)
echo 'sleep 300 && cp /etc/network/interfaces.backup* /etc/network/interfaces && systemctl restart networking' | sudo at now +5 min

# Применяем
sudo systemctl restart networking

Если всё работает, отмените таймер:

sudo atrm -a  # удаляет все задачи at

Прямой способ (только при наличии консоли)

sudo ifdown -a && sudo ifup -a
# или
sudo systemctl restart networking

4. Проверка и диагностика

# 1. Состояние интерфейсов
ip -br a
# Ожидаемо: br0 UP с IP, bond0.10 UP, bond0 UP, eth0/eth1 UP

# 2. Статус bonding
cat /proc/net/bonding/bond0
# Обратите внимание: "Currently Active Slave", "MII Status", "Aggregator ID"

# 3. VLAN теги
ip -d link show bond0.10
# Должно содержать: vlan protocol 802.1Q id 10

# 4. Состав моста
bridge link show
ip link show master br0

# 5. Тест связности
ping -c 3 192.168.10.1
traceroute -m 10 8.8.8.8

5. Типовые проблемы и решения

Симптом Причина Решение
bond0 не поднимается Свитч не поддерживает LACP или порты не настроены Переключите на bond-mode 1 или настройте LACP Group на свитче
bond0.10 не тегирован Модуль 8021q не загружен или vlan-raw-device указан неверно modprobe 8021q, проверьте синтаксис, перезагрузите networking
br0 не пингует шлюз STP блокирует порт или VLAN не разрешён на свитче bridge-stp off, проверьте allowed VLAN на порту свитча
После перезагрузки сеть не поднимается ifupdown не загружает модули или порядок auto нарушен Проверьте /etc/modules, убедитесь, что auto bond0 идёт после auto eth0 eth1
MAC-адрес меняется при перезагрузке Bond/bridge генерирует случайный MAC Добавьте pre-up ip link set bond0 address 00:11:22:33:44:55

Примечания для Debian 13

  1. ifupdown vs systemd-networkd: Debian 13 продолжает поддерживать ifupdown, но upstream рекомендует systemd-networkd для новых проектов. Если в будущем захотите мигрировать, конфигурация переводится в .network файлы без потери функционала.
2. Безопасность: Убедитесь, что bridge-nf-call-iptables включён, если используете nftables/iptables для фильтрации трафика моста:
   echo 1 | sudo tee /proc/sys/net/bridge/bridge-nf-call-iptables
  1. Виртуализация: br0 идеально подходит для libvirt/Proxmox. В конфиге VM указывайте bridge=br0.
  2. Мониторинг: Установите ethtool, bmon, vnstat для отслеживания состояния bonding и трафика.

Готовый чек-лист перед применением

  • [ ] Сделан бэкап /etc/network/interfaces
  • [ ] Известен режим коммутатора (LACP / active-backup / standalone)
  • [ ] VLAN ID разрешён на порту свитча (tagged)
  • [ ] Есть доступ к консоли или настроен таймер отката
  • [ ] IP/gateway/DNS корректны для вашей сети
  • [ ] Протестировано в tmux или screen