Короче: у вас несколько сетевых карт, нужна отказоустойчивость или больше пропускной способности. Bonding/NIC Teaming — это когда несколько интерфейсов работают как один. Настраивается за 10 минут, работает годами.
Эта шпаргалка — для тех, кто хочет быстро поднять bonding на Windows Server 2022, Ubuntu, Proxmox, настроить коммутатор и забыть про проблемы с единственным сетевым кабелем.
Когда это использовать
Реальные кейсы:
- Отказоустойчивость серверов — один кабель выдернули, сервер работает через второй
- Увеличение пропускной способности — два гигабитных канала = до 2 Гбит/с
- Гипервизоры (Hyper-V, Proxmox) — разные VM на разных физических интерфейсах
- Критичные сервисы — где простой стоит дороже, чем час работы админа
Типовые ситуации:
- В сервере 2+ сетевых карты
- Есть управляемый коммутатор с поддержкой LACP/802.3ad
- Нужна защита от отказа одного канала
- Нужно распределить нагрузку между интерфейсами
Ошибки новичков:
- Включили bonding на сервере, забыли настроить коммутатор — не работает
- Выбрали режим balance-rr без поддержки на свитче — пакеты теряются
- Не проверили совместимость карт — разные скорости = проблемы
- Настроили LACP, но не включили на порту коммутатора
- Думали, что два канала по 1 Гбит/с дадут 2 Гбит/с для одного TCP соединения — не дадут
Быстрый старт
Ubuntu (режим LACP):
# Установка ifenslave
sudo apt install ifenslave
# Загрузка модуля bonding
sudo modprobe bonding
# Редактируем /etc/netplan/01-netcfg.yaml (пример ниже)
sudo nano /etc/netplan/01-netcfg.yaml
# Применяем конфигурацию
sudo netplan apply
# Проверяем статус
cat /proc/net/bonding/bond0
Windows Server 2022:
# Создание NIC Team через PowerShell
New-NetLbfoTeam -Name "Team1" -TeamMembers "Ethernet1","Ethernet2" -TeamingMode LACP -LoadBalancingAlgorithm Dynamic
# Проверка статуса
Get-NetLbfoTeam
Get-NetLbfoTeamMember
Proxmox (через веб-интерфейс):
- Datacenter → [Ваш узел] → System → Network
- Create → Linux Bond
- Name: bond0
- Slaves: enp3s0, enp4s0
- Mode: LACP (802.3ad)
- Hash policy: layer3+4
- Apply Configuration
Коммутатор (TP-Link TL-SG3428x):
- Заходим в веб-интерфейс
- LAG → Static LAG или LACP
- Добавляем порты в группу (например, 1-2)
- Сохраняем и применяем
Пропускная способность bonding: развенчание мифов
Миф №1: Два канала по 1 Гбит/с = 2 Гбит/с для одного соединения
Реальность: НЕТ. Одно TCP соединение использует ОДИН физический канал. Bonding балансирует нагрузку между разными соединениями, а не внутри одного.
Пример:
- У вас bonding из двух интерфейсов по 1 Гбит/с
- Скачиваете один файл по FTP — скорость 1 Гбит/с (идёт через один интерфейс)
- Запускаете 10 параллельных закачек — суммарно до 2 Гбит/с (распределяются между двумя интерфейсами)
Почему так: Балансировка происходит на уровне потоков (flow). Один поток = один интерфейс. Это сделано для предотвращения переупорядочивания пакетов.
Миф №2: Любой режим bonding удваивает скорость
Реальность: Только некоторые режимы дают балансировку нагрузки:
| Режим | Балансировка | Реальная пропускная способность | Примечание |
|---|---|---|---|
| Mode 0 (balance-rr) | Да | До N×1Гбит/с (для разных потоков) | Требует настройки коммутатора, может быть packet reordering |
| Mode 1 (active-backup) | НЕТ | 1 Гбит/с (только один активный) | Отказоустойчивость, но не увеличение скорости |
| Mode 2 (balance-xor) | Да | До N×1Гбит/с (для разных потоков) | Балансировка по MAC/IP |
| Mode 4 (802.3ad/LACP) | Да | До N×1Гбит/с (для разных потоков) | Стандарт, требует LACP на коммутаторе |
| Mode 5 (balance-tlb) | Исходящий | Исходящий до N×1Гбит/с, входящий 1Гбит/с | Работает без настройки коммутатора |
| Mode 6 (balance-alb) | Входящий/Исходящий | До N×1Гбит/с (для разных потоков) | Работает без настройки коммутатора |
Как работает балансировка: transmit-hash-policy
Bonding использует хеш-функцию для определения, через какой интерфейс отправить пакет. Хеш вычисляется на основе:
- layer2 — только MAC-адреса (почти бесполезно)
- layer2+3 — MAC + IP-адреса (лучше)
- layer3+4 — IP-адреса + TCP/UDP порты (рекомендуется)
Пример layer3+4:
Хеш = hash(Source_IP + Dest_IP + Source_Port + Dest_Port) % Количество_интерфейсов
Если хеш одинаковый — пакеты идут через один и тот же интерфейс (это гарантирует правильный порядок).
Реальные сценарии пропускной способности
Сценарий 1: Веб-сервер с множеством клиентов
- Конфигурация: bonding из 2×1Гбит/с, режим LACP, layer3+4
- Нагрузка: 1000 одновременных HTTP соединений от разных IP
- Результат: Близко к 2 Гбит/с суммарно (соединения распределяются между интерфейсами)
Сценарий 2: Файловый сервер (один клиент)
- Конфигурация: bonding из 2×1Гбит/с, режим LACP, layer3+4
- Нагрузка: Один клиент копирует файлы по SMB
- Результат: ~1 Гбит/с (одно TCP соединение = один интерфейс)
- Решение: Использовать SMB Multichannel (Windows) или несколько параллельных копирований
Сценарий 3: Proxmox с несколькими VM
- Конфигурация: bonding из 2×1Гбит/с, режим LACP, layer3+4
- Нагрузка: 10 VM, каждая с активной сетевой нагрузкой
- Результат: Близко к 2 Гбит/с (VM распределяются между интерфейсами по IP+порту)
Сценарий 4: iSCSI storage
- Конфигурация: bonding из 2×1Гбит/с, режим LACP, layer3+4
- Нагрузка: Один инициатор iSCSI
- Результат: ~1 Гбит/с (одна iSCSI сессия = одно TCP соединение)
- Решение: Multipath iSCSI (несколько путей) или несколько iSCSI сессий
Как получить максимум от bonding
1. Используйте правильный режим:
# Ubuntu - режим LACP с правильным хешированием
parameters:
mode: 802.3ad
lacp-rate: fast
transmit-hash-policy: layer3+4
2. Включите множественные соединения:
- SMB Multichannel (Windows Server) — автоматически использует несколько интерфейсов
- NFS over RDMA — для высокоскоростных сетей
- Параллельные потоки — rsync с —parallel, aria2c для закачек
3. Proxmox: используйте несколько bridge для разных VM:
# Создаём два моста на разных VLAN
auto vmbr0
iface vmbr0 inet manual
bridge-ports bond0.100
bridge-stp off
auto vmbr1
iface vmbr1 inet manual
bridge-ports bond0.200
bridge-stp off
Теперь VM на разных bridge будут использовать разные пути через bonding.
Тестирование реальной пропускной способности
Тест 1: Один поток (iperf3):
# На сервере
iperf3 -s
# На клиенте
iperf3 -c 192.168.1.100 -t 30
# Ожидаемый результат: ~1 Гбит/с (один поток)
Тест 2: Несколько параллельных потоков:
# 4 параллельных потока
iperf3 -c 192.168.1.100 -P 4 -t 30
# Ожидаемый результат: ~1.8-2.0 Гбит/с (потоки распределяются)
Тест 3: Несколько клиентов одновременно:
# Запускаем с трёх разных машин одновременно
# Клиент 1:
iperf3 -c 192.168.1.100 -t 30
# Клиент 2:
iperf3 -c 192.168.1.100 -t 30
# Клиент 3:
iperf3 -c 192.168.1.100 -t 30
# Суммарная пропускная способность: ~2 Гбит/с
Проверка распределения нагрузки:
# Во время теста смотрим статистику
watch -n 1 'cat /proc/net/bonding/bond0 | grep -A 3 "Slave Interface"'
# Или более детально
watch -n 1 'ip -s link show bond0 && ip -s link show enp3s0 && ip -s link show enp4s0'
Настройка Proxmox VE
Способ 1: Через веб-интерфейс
Шаг 1: Создание Linux Bond
- Datacenter → [Имя узла] → System → Network
- Create → Linux Bond
- Заполняем параметры:
- Name: bond0
- Slaves: enp3s0 enp4s0 (выбираем физические интерфейсы)
- Mode: LACP (802.3ad)
- Hash policy: layer3+4
- OK
Шаг 2: Создание Linux Bridge
- Create → Linux Bridge
- Заполняем:
- Name: vmbr0
- Bridge ports: bond0
- IPv4/CIDR: 192.168.1.100/24 (IP хоста Proxmox)
- Gateway: 192.168.1.1
- OK
Шаг 3: Apply Configuration
Нажимаем Apply Configuration вверху страницы.
ВАЖНО: Если вы подключены по SSH — потеряете соединение на 10-20 секунд. Приготовьте IPMI/iLO/физический доступ на случай проблем.
Способ 2: Редактирование /etc/network/interfaces
# Подключаемся по SSH
ssh root@proxmox-host
# Делаем бэкап
cp /etc/network/interfaces /etc/network/interfaces.backup
# Редактируем конфигурацию
nano /etc/network/interfaces
Конфигурация bonding + bridge для Proxmox:
auto lo
iface lo inet loopback
# Физические интерфейсы (не назначаем им IP)
auto enp3s0
iface enp3s0 inet manual
auto enp4s0
iface enp4s0 inet manual
# Bonding интерфейс
auto bond0
iface bond0 inet manual
bond-slaves enp3s0 enp4s0
bond-mode 802.3ad
bond-miimon 100
bond-downdelay 200
bond-updelay 200
bond-lacp-rate fast
bond-xmit-hash-policy layer3+4
# Bridge для VM (подключен к bond0)
auto vmbr0
iface vmbr0 inet static
address 192.168.1.100/24
gateway 192.168.1.1
bridge-ports bond0
bridge-stp off
bridge-fd 0
# Применяем конфигурацию
ifreload -a
# Или перезагружаем сеть (более надёжно)
systemctl restart networking
# Проверяем
ip addr show
cat /proc/net/bonding/bond0
Proxmox: Bonding + VLAN + несколько Bridge
Если у вас несколько VLAN и нужно разделить VM по разным сетям:
auto lo
iface lo inet loopback
auto enp3s0
iface enp3s0 inet manual
auto enp4s0
iface enp4s0 inet manual
# Bonding
auto bond0
iface bond0 inet manual
bond-slaves enp3s0 enp4s0
bond-mode 802.3ad
bond-miimon 100
bond-lacp-rate fast
bond-xmit-hash-policy layer3+4
# VLAN 100 — Management (Proxmox host)
auto bond0.100
iface bond0.100 inet static
address 192.168.100.10/24
gateway 192.168.100.1
# Bridge для VM в VLAN 100
auto vmbr100
iface vmbr100 inet manual
bridge-ports bond0.100
bridge-stp off
bridge-fd 0
# Bridge для VM в VLAN 200 (без IP на хосте)
auto vmbr200
iface vmbr200 inet manual
bridge-ports bond0.200
bridge-stp off
bridge-fd 0
bridge-vlan-aware yes
# Bridge для VM в VLAN 300
auto vmbr300
iface vmbr300 inet manual
bridge-ports bond0.300
bridge-stp off
bridge-fd 0
Теперь при создании VM вы выбираете нужный bridge (vmbr100, vmbr200, vmbr300), и VM автоматически попадает в соответствующий VLAN.
Proxmox: режим active-backup (без LACP)
Если коммутатор не поддерживает LACP или нужна максимальная совместимость:
auto bond0
iface bond0 inet manual
bond-slaves enp3s0 enp4s0
bond-mode active-backup
bond-miimon 100
bond-downdelay 200
bond-updelay 200
bond-primary enp3s0
В этом режиме настройка коммутатора НЕ требуется. Работает из коробки.
Создание VM с использованием bonding
- При создании VM выбираем Network Device
- Bridge: vmbr0 (или vmbr100, vmbr200 — в зависимости от нужного VLAN)
- Model: VirtIO (рекомендуется для производительности)
- OK
VM автоматически будет использовать bonding через bridge.
Мониторинг bonding в Proxmox
# Статус bonding
cat /proc/net/bonding/bond0
# Краткая проверка
ip link show bond0
ip addr show vmbr0
# Статистика по интерфейсам
ip -s link show bond0
ip -s link show enp3s0
ip -s link show enp4s0
# Проверка bridge
brctl show
# Логи (если есть проблемы)
journalctl -u networking.service -b
dmesg | grep bond
Proxmox: распределение нагрузки между VM
С правильной настройкой transmit-hash-policy: layer3+4 каждая VM получает свой хеш (по IP+порту), и трафик разных VM распределяется между физическими интерфейсами.
Пример:
- VM1 (192.168.1.101) → хеш = 0 → enp3s0
- VM2 (192.168.1.102) → хеш = 1 → enp4s0
- VM3 (192.168.1.103) → хеш = 0 → enp3s0
- VM4 (192.168.1.104) → хеш = 1 → enp4s0
Результат: равномерное распределение между двумя интерфейсами.
Proxmox: bonding для Ceph/Storage network
Если используете Ceph или другой распределённый storage, можно создать отдельный bonding для storage network:
# Storage bonding (отдельные физические интерфейсы)
auto bond1
iface bond1 inet manual
bond-slaves enp5s0 enp6s0
bond-mode 802.3ad
bond-miimon 100
bond-lacp-rate fast
bond-xmit-hash-policy layer3+4
# Storage bridge
auto vmbr1
iface vmbr1 inet static
address 10.0.0.10/24
bridge-ports bond1
bridge-stp off
bridge-fd 0
Теперь у вас есть:
- vmbr0 (bond0) — для VM и Management
- vmbr1 (bond1) — для Ceph/Storage трафика
Основные режимы bonding
Mode 0 — balance-rr (Round Robin)
Пакеты отправляются по очереди на все интерфейсы. Максимальная пропускная способность, но требует поддержки на коммутаторе.
НЕ ИСПОЛЬЗУЙТЕ без правильной настройки свитча — будет packet reordering.
# Ubuntu - режим 0
sudo nano /etc/netplan/01-netcfg.yaml
network:
version: 2
ethernets:
enp0s3:
dhcp4: no
enp0s8:
dhcp4: no
bonds:
bond0:
interfaces: [enp0s3, enp0s8]
addresses: [192.168.1.100/24]
gateway4: 192.168.1.1
nameservers:
addresses: [8.8.8.8]
parameters:
mode: balance-rr
mii-monitor-interval: 100
Mode 1 — active-backup (Отказоустойчивость)
Один интерфейс активен, остальные в резерве. При падении основного — переключение на резервный.
Самый простой и надёжный режим. Не требует настройки коммутатора.
# Ubuntu - режим 1 (active-backup)
network:
version: 2
ethernets:
enp0s3:
dhcp4: no
enp0s8:
dhcp4: no
bonds:
bond0:
interfaces: [enp0s3, enp0s8]
addresses: [192.168.1.100/24]
gateway4: 192.168.1.1
parameters:
mode: active-backup
primary: enp0s3
mii-monitor-interval: 100
# Windows - режим Active/Standby
New-NetLbfoTeam -Name "Team1" -TeamMembers "Ethernet1","Ethernet2" -TeamingMode SwitchIndependent -LoadBalancingAlgorithm Dynamic
Mode 4 — 802.3ad (LACP)
Динамическое объединение каналов по стандарту IEEE 802.3ad. Требует поддержки LACP на коммутаторе.
Даёт отказоустойчивость + балансировку нагрузки.
network:
version: 2
ethernets:
enp0s3:
dhcp4: no
enp0s8:
dhcp4: no
bonds:
bond0:
interfaces: [enp0s3, enp0s8]
addresses: [192.168.1.100/24]
gateway4: 192.168.1.1
parameters:
mode: 802.3ad
lacp-rate: fast
mii-monitor-interval: 100
transmit-hash-policy: layer3+4
# Windows - LACP режим
New-NetLbfoTeam -Name "Team1" -TeamMembers "Ethernet1","Ethernet2" -TeamingMode LACP -LoadBalancingAlgorithm Dynamic
Mode 6 — balance-alb (Adaptive Load Balancing)
Балансировка исходящего трафика без поддержки коммутатора. Входящий трафик идёт на один интерфейс.
Работает без настройки свитча, но менее эффективен, чем LACP.
parameters:
mode: balance-alb
mii-monitor-interval: 100
Настройка Windows Server 2022
Через PowerShell (рекомендуется)
# Просмотр доступных интерфейсов
Get-NetAdapter
# Создание команды в режиме LACP
New-NetLbfoTeam -Name "ProductionTeam" -TeamMembers "Ethernet 1","Ethernet 2" -TeamingMode LACP -LoadBalancingAlgorithm Dynamic
# Создание команды в режиме Switch Independent (без LACP)
New-NetLbfoTeam -Name "ProductionTeam" -TeamMembers "Ethernet 1","Ethernet 2" -TeamingMode SwitchIndependent -LoadBalancingAlgorithm HyperVPort
# Добавление IP-адреса на team interface
New-NetIPAddress -InterfaceAlias "ProductionTeam" -IPAddress 192.168.1.100 -PrefixLength 24 -DefaultGateway 192.168.1.1
# Проверка статуса команды
Get-NetLbfoTeam | Format-List
Get-NetLbfoTeamMember | Format-Table Name, Team, Status, LinkSpeed
# Удаление команды (если нужно переделать)
Remove-NetLbfoTeam -Name "ProductionTeam"
Через GUI (Server Manager)
- Server Manager → Local Server → NIC Teaming: Disabled (клик)
- TASKS → New Team
- Team name: ProductionTeam
- Выбираем сетевые адаптеры (Ctrl+клик)
- Additional properties:
- Teaming mode: LACP (если свитч поддерживает) или Switch Independent
- Load balancing mode: Dynamic (рекомендуется)
- OK
Алгоритмы балансировки Windows
- Dynamic — автоматическая балансировка (рекомендуется для большинства случаев)
- HyperVPort — для Hyper-V, каждая VM на своём интерфейсе
- TransportPorts — балансировка по TCP/UDP портам
- IPAddresses — балансировка по IP-адресам
- MacAddresses — балансировка по MAC (редко используется)
Настройка Ubuntu
Способ 1: Netplan (Ubuntu 18.04+)
# Резервная копия конфига
sudo cp /etc/netplan/01-netcfg.yaml /etc/netplan/01-netcfg.yaml.bak
# Редактируем конфигурацию
sudo nano /etc/netplan/01-netcfg.yaml
Пример конфига для LACP:
network:
version: 2
renderer: networkd
ethernets:
enp3s0:
dhcp4: no
dhcp6: no
enp4s0:
dhcp4: no
dhcp6: no
bonds:
bond0:
interfaces: [enp3s0, enp4s0]
addresses: [192.168.100.50/24]
gateway4: 192.168.100.1
nameservers:
addresses: [8.8.8.8, 8.8.4.4]
parameters:
mode: 802.3ad
lacp-rate: fast
mii-monitor-interval: 100
transmit-hash-policy: layer3+4
# Применяем конфигурацию
sudo netplan apply
# Если ошибки - смотрим что не так
sudo netplan --debug apply
Способ 2: /etc/network/interfaces (старые версии)
sudo nano /etc/network/interfaces
auto bond0
iface bond0 inet static
address 192.168.100.50
netmask 255.255.255.0
gateway 192.168.100.1
dns-nameservers 8.8.8.8
bond-slaves enp3s0 enp4s0
bond-mode 802.3ad
bond-miimon 100
bond-lacp-rate fast
bond-xmit-hash-policy layer3+4
auto enp3s0
iface enp3s0 inet manual
bond-master bond0
auto enp4s0
iface enp4s0 inet manual
bond-master bond0
# Перезапуск сети
sudo systemctl restart networking
Загрузка модуля bonding при старте
# Добавляем модуль в автозагрузку
echo "bonding" | sudo tee -a /etc/modules
# Опции bonding в отдельный файл
sudo nano /etc/modprobe.d/bonding.conf
alias bond0 bonding
options bonding mode=802.3ad miimon=100 lacp_rate=fast xmit_hash_policy=layer3+4
Настройка Mikrotik RouterOS 7
Mikrotik использует термин bonding (не LAG). Поддерживает все основные режимы.
Через CLI
# Создание bonding интерфейса
/interface bonding add name=bond1 slaves=ether1,ether2 mode=802.3ad lacp-rate=1sec transmit-hash-policy=layer-3-and-4
# Назначение IP
/ip address add address=192.168.100.1/24 interface=bond1
# Проверка статуса
/interface bonding print detail
/interface bonding monitor bond1
Через WebFig/WinBox
- Interfaces → Bonding → Add
- Name: bond1
- Slaves: ether1, ether2
- Mode: 802.3ad
- LACP Rate: 1sec (fast)
- Transmit Hash Policy: layer-3-and-4
- Apply
Режимы Mikrotik
- balance-rr — round-robin
- active-backup — отказоустойчивость
- balance-xor — XOR балансировка
- broadcast — отправка на все интерфейсы
- 802.3ad — LACP
- balance-tlb — adaptive transmit load balancing
- balance-alb — adaptive load balancing
Настройка TP-Link TL-SG3428x
Включение LACP (802.3ad)
- Заходим в веб-интерфейс:
http://192.168.0.1 - L2 Features → LAG → LAG Config
- LAG ID: 1
- LAG Type: LACP
- Member Ports: выбираем порты (например, 1-2)
- Apply
Проверка статуса LACP
- L2 Features → LAG → LACP Config
- Видим статус портов: Active или Inactive
Важные настройки
- LACP Activity: Active (на обоих концах)
- LACP Timeout: Short (быстрое обнаружение отказов)
- Load Balance: Source/Destination IP + Port
Альтернатива: Static LAG (без LACP)
Если устройство не поддерживает LACP — можно использовать Static LAG.
- LAG Type: Static
- Выбираем порты
- Apply
Минус: нет автоматического определения отказов, работает проще.
Частые ошибки и подводные камни
Ошибка 1: Bonding на сервере есть, на коммутаторе забыли
Симптомы: сеть не работает или работает с потерями пакетов.
Решение:
# Проверяем статус на сервере (Ubuntu)
cat /proc/net/bonding/bond0
# Должно быть: Bonding Mode: IEEE 802.3ad Dynamic link aggregation
# Aggregator ID: 1 (активный aggregator)
# Проверяем LACP на коммутаторе
# Должны быть активные порты в LAG группе
Ошибка 2: Разные скорости интерфейсов
Симптомы: один интерфейс 1 Гбит/с, второй 100 Мбит/с — bonding работает на минимальной скорости.
Решение: используйте интерфейсы с одинаковой скоростью. Проверяем:
# Ubuntu
ethtool enp3s0 | grep Speed
ethtool enp4s0 | grep Speed
# Windows
Get-NetAdapter | Select Name, LinkSpeed
Ошибка 3: Режим balance-rr без настройки коммутатора
Симптомы: пакеты приходят не по порядку, TCP соединения разрываются.
Решение: используйте режим active-backup (mode 1) или 802.3ad (mode 4) с LACP.
Ошибка 4: Забыли miimon (мониторинг линка)
Симптомы: bonding не переключается при обрыве кабеля.
Решение: добавляем mii-monitor-interval: 100 (проверка каждые 100 мс).
parameters:
mode: active-backup
mii-monitor-interval: 100
Ошибка 5: Неправильный transmit-hash-policy
Симптомы: весь трафик идёт через один интерфейс.
Решение: используйте layer3+4 (балансировка по IP + порту):
parameters:
mode: 802.3ad
transmit-hash-policy: layer3+4
Ошибка 6: На Windows выбран режим HyperVPort без Hyper-V
Симптомы: балансировка не работает.
Решение: используйте Dynamic для обычных серверов, HyperVPort только для хостов Hyper-V.
Ошибка 7: Proxmox — забыли про bridge
Симптомы: bonding работает, но VM не имеют доступа к сети.
Решение: создайте Linux Bridge поверх bonding интерфейса и подключайте VM к bridge, а не напрямую к bond.
Полезные хаки
Быстрая проверка bonding на Ubuntu
# Статус bonding
cat /proc/net/bonding/bond0
# Краткий вывод активных интерфейсов
grep -E "Slave Interface|MII Status" /proc/net/bonding/bond0
Alias для быстрой проверки
# Добавляем в ~/.bashrc
alias checkbond='cat /proc/net/bonding/bond0 | grep -E "Bonding Mode|MII Status|Slave Interface"'
# Использование
checkbond
Windows: PowerShell one-liner статуса
Get-NetLbfoTeamMember | ft Name, Team, Status, LinkSpeed, AdminStatus -AutoSize
Автоматический failback на primary интерфейс (Ubuntu)
parameters:
mode: active-backup
primary: enp3s0
primary-reselect: always
fail-over-mac: none
primary-reselect: always — всегда возвращаться на primary после восстановления.
Установка приоритета на Windows
# Делаем Ethernet 1 основным
Set-NetLbfoTeamMember -Name "Ethernet 1" -AdministrativeMode Standby
Set-NetLbfoTeamMember -Name "Ethernet 2" -AdministrativeMode Active
Bonding + VLAN на Ubuntu
network:
version: 2
ethernets:
enp3s0:
dhcp4: no
enp4s0:
dhcp4: no
bonds:
bond0:
interfaces: [enp3s0, enp4s0]
parameters:
mode: 802.3ad
lacp-rate: fast
mii-monitor-interval: 100
vlans:
vlan100:
id: 100
link: bond0
addresses: [192.168.100.50/24]
vlan200:
id: 200
link: bond0
addresses: [192.168.200.50/24]
Mikrotik: bonding + VLAN
# Создание bonding
/interface bonding add name=bond1 slaves=ether1,ether2 mode=802.3ad
# Создание VLAN поверх bonding
/interface vlan add name=vlan100 vlan-id=100 interface=bond1
/interface vlan add name=vlan200 vlan-id=200 interface=bond1
# Назначение IP
/ip address add address=192.168.100.1/24 interface=vlan100
/ip address add address=192.168.200.1/24 interface=vlan200
Proxmox: быстрый скрипт проверки статуса
#!/bin/bash
echo "=== Bond Status ==="
cat /proc/net/bonding/bond0 | grep -E "Bonding Mode|MII Status|Slave Interface|Aggregator ID"
echo ""
echo "=== Bridge Status ==="
brctl show
echo ""
echo "=== Network Stats ==="
ip -s link show bond0 | grep -A 2 "RX:\|TX:"
Сохраняем как /usr/local/bin/check-network, делаем исполняемым:
chmod +x /usr/local/bin/check-network
Теперь просто запускаем check-network.
Проверка и диагностика
Ubuntu: полная проверка
# Статус bonding
cat /proc/net/bonding/bond0
# Информация об интерфейсах
ip link show bond0
ip addr show bond0
# Скорость интерфейсов
ethtool bond0
# Проверка физических интерфейсов
ethtool enp3s0 | grep "Link detected"
ethtool enp4s0 | grep "Link detected"
# Статистика по пакетам
ip -s link show bond0
# Логи (если есть проблемы)
sudo journalctl -u systemd-networkd | tail -50
dmesg | grep bond
Windows: полная проверка
# Статус команды
Get-NetLbfoTeam | Format-List
# Статус членов команды
Get-NetLbfoTeamMember | Format-Table Name, Team, Status, LinkSpeed, AdminStatus
# Детальная информация
Get-NetLbfoTeam -Name "Team1" | Get-NetLbfoTeamMember
Get-NetLbfoTeam -Name "Team1" | Get-NetLbfoTeamNic
# Статистика
Get-NetAdapterStatistics -Name "Team1"
# Event Log (ошибки)
Get-EventLog -LogName System -Source "Microsoft-Windows-NlbMux" -Newest 20
Proxmox: полная проверка
# Bonding статус
cat /proc/net/bonding/bond0
# Bridge статус
brctl show
ip link show vmbr0
# Проверка физических интерфейсов
ethtool enp3s0 | grep "Link detected"
ethtool enp4s0 | grep "Link detected"
# Статистика
ip -s link show bond0
ip -s link show enp3s0
ip -s link show enp4s0
# Логи
journalctl -u networking.service -b | tail -50
dmesg | grep -E "bond|bridge"
Проверка на коммутаторе (TP-Link)
- LAG → LAG Status — проверяем статус портов
- LACP → LACP Status — смотрим активность LACP
- Port Statistics — проверяем трафик на портах
Тест отказоустойчивости
# Запускаем ping в фоне
ping -i 0.2 192.168.1.1 > /tmp/ping.log &
# Вытаскиваем один кабель из сервера
# Смотрим логи
tail -f /tmp/ping.log
# Должно быть: потеря 1-2 пакетов, потом восстановление
Тест производительности
# Установка iperf3
sudo apt install iperf3
# На сервере (сервер)
iperf3 -s
# На клиенте (тест одного потока)
iperf3 -c 192.168.1.100 -t 30
# На клиенте (тест 4 параллельных потоков)
iperf3 -c 192.168.1.100 -P 4 -t 30
# -P 4 — 4 параллельных потока
# -t 30 — тест 30 секунд
Где смотреть логи
Ubuntu:
# Системные логи
sudo journalctl -xe | grep bond
# Dmesg
dmesg | grep -i bond
# Syslog
sudo tail -f /var/log/syslog | grep bond
Windows:
# Event Viewer → Windows Logs → System
# Фильтр: Source = NlbMux, Tcpip
# Через PowerShell
Get-WinEvent -LogName System | Where-Object {$_.ProviderName -like "*lbfo*"} | Select -First 20
Mikrotik:
# Системный лог
/log print where topics~"system"
# Мониторинг bonding в реальном времени
/interface bonding monitor bond1
Proxmox:
# Системные логи
journalctl -u networking -b
# Dmesg
dmesg | grep -E "bond|vmbr"
# Syslog
tail -f /var/log/syslog | grep -E "bond|bridge"
Краткий чек-лист
Перед настройкой:
- ☐ Все сетевые карты одинаковой скорости (1G + 1G или 10G + 10G)
- ☐ Коммутатор поддерживает LACP/802.3ad (если планируете использовать)
- ☐ Резервная копия текущей конфигурации сети
- ☐ Физический доступ к серверу (на случай потери связи)
- ☐ IPMI/iLO доступен (для Proxmox/серверов без KVM)
После настройки сервера:
- ☐ Bonding интерфейс создан и активен
- ☐ IP-адрес назначен на bonding (или bridge), не на физических интерфейсах
- ☐
mii-monitor-intervalустановлен (обычно 100) - ☐ Режим bonding выбран правильно (mode 1 или mode 4)
- ☐ Физические интерфейсы включены и в статусе UP
- ☐ (Proxmox) Bridge создан поверх bonding
После настройки коммутатора:
- ☐ LACP включён на портах (если используете mode 4)
- ☐ Порты добавлены в LAG группу
- ☐ LACP Activity: Active
- ☐ LACP Timeout: Short (fast)
- ☐ Статус портов: Active
Проверка работоспособности:
- ☐
cat /proc/net/bonding/bond0(Ubuntu/Proxmox) илиGet-NetLbfoTeam(Windows) показывает корректный статус - ☐ Все интерфейсы в статусе UP
- ☐ Ping проходит
- ☐ Тест отказоустойчивости: вытащили кабель — сеть работает
- ☐ Тест производительности: iperf3 показывает ожидаемую скорость
- ☐ (Proxmox) VM могут подключиться к сети через bridge
Перед продом:
- ☐ Документация обновлена (схема сети, IP-адреса)
- ☐ Резервная копия конфигурации сохранена
- ☐ Команда знает о изменениях
- ☐ Мониторинг настроен (если есть)
- ☐ Тест failover выполнен успешно
Резюме
Bonding сетевых интерфейсов — это просто, если понимаешь четыре вещи:
- Режим bonding должен соответствовать настройкам коммутатора — mode 1 (active-backup) работает всегда, mode 4 (802.3ad) требует LACP на свитче
- Используйте одинаковые интерфейсы — разные скорости = проблемы
- Настраивайте ОБЕ стороны — сервер И коммутатор
- Понимайте ограничения пропускной способности — одно соединение = один канал, для увеличения скорости нужны множественные потоки
Для Proxmox не забывайте создавать bridge поверх bonding — иначе VM не получат доступ к сети.
Эта команда спасала прод чаще, чем бэкапы: cat /proc/net/bonding/bond0. Запомните её.
Сохраните статью в закладки — в следующий раз настроите bonding за 5 минут, а не за час.
Следующая шпаргалка: настройка VLAN на Linux и управляемых коммутаторах.




