Подробный гайд: Настройка 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
ifupdownvssystemd-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
- Виртуализация:
br0идеально подходит дляlibvirt/Proxmox. В конфиге VM указывайтеbridge=br0. - Мониторинг: Установите
ethtool,bmon,vnstatдля отслеживания состояния bonding и трафика.
Готовый чек-лист перед применением
- [ ] Сделан бэкап
/etc/network/interfaces - [ ] Известен режим коммутатора (LACP / active-backup / standalone)
- [ ] VLAN ID разрешён на порту свитча (tagged)
- [ ] Есть доступ к консоли или настроен таймер отката
- [ ] IP/gateway/DNS корректны для вашей сети
- [ ] Протестировано в
tmuxилиscreen