Объединение сетевых интерфейсов: шпаргалка IT-инженера с примерами bonding

Объединение сетевых интерфейсов: шпаргалка IT-инженера с примерами bonding

Короче: у вас несколько сетевых карт, нужна отказоустойчивость или больше пропускной способности. 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 (через веб-интерфейс):

  1. Datacenter → [Ваш узел] → System → Network
  2. Create → Linux Bond
  3. Name: bond0
  4. Slaves: enp3s0, enp4s0
  5. Mode: LACP (802.3ad)
  6. Hash policy: layer3+4
  7. Apply Configuration

Коммутатор (TP-Link TL-SG3428x):

  1. Заходим в веб-интерфейс
  2. LAG → Static LAG или LACP
  3. Добавляем порты в группу (например, 1-2)
  4. Сохраняем и применяем

Пропускная способность 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

  1. Datacenter → [Имя узла] → System → Network
  2. Create → Linux Bond
  3. Заполняем параметры:
    • Name: bond0
    • Slaves: enp3s0 enp4s0 (выбираем физические интерфейсы)
    • Mode: LACP (802.3ad)
    • Hash policy: layer3+4
  4. OK

Шаг 2: Создание Linux Bridge

  1. Create → Linux Bridge
  2. Заполняем:
    • Name: vmbr0
    • Bridge ports: bond0
    • IPv4/CIDR: 192.168.1.100/24 (IP хоста Proxmox)
    • Gateway: 192.168.1.1
  3. 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

  1. При создании VM выбираем Network Device
  2. Bridge: vmbr0 (или vmbr100, vmbr200 — в зависимости от нужного VLAN)
  3. Model: VirtIO (рекомендуется для производительности)
  4. 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)

  1. Server Manager → Local Server → NIC Teaming: Disabled (клик)
  2. TASKS → New Team
  3. Team name: ProductionTeam
  4. Выбираем сетевые адаптеры (Ctrl+клик)
  5. Additional properties:
    • Teaming mode: LACP (если свитч поддерживает) или Switch Independent
    • Load balancing mode: Dynamic (рекомендуется)
  6. 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

  1. Interfaces → Bonding → Add
  2. Name: bond1
  3. Slaves: ether1, ether2
  4. Mode: 802.3ad
  5. LACP Rate: 1sec (fast)
  6. Transmit Hash Policy: layer-3-and-4
  7. 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)

  1. Заходим в веб-интерфейс: http://192.168.0.1
  2. L2 Features → LAG → LAG Config
  3. LAG ID: 1
  4. LAG Type: LACP
  5. Member Ports: выбираем порты (например, 1-2)
  6. Apply

Проверка статуса LACP

  1. L2 Features → LAG → LACP Config
  2. Видим статус портов: Active или Inactive

Важные настройки

  • LACP Activity: Active (на обоих концах)
  • LACP Timeout: Short (быстрое обнаружение отказов)
  • Load Balance: Source/Destination IP + Port

Альтернатива: Static LAG (без LACP)

Если устройство не поддерживает LACP — можно использовать Static LAG.

  1. LAG Type: Static
  2. Выбираем порты
  3. 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)

  1. LAG → LAG Status — проверяем статус портов
  2. LACP → LACP Status — смотрим активность LACP
  3. 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 сетевых интерфейсов — это просто, если понимаешь четыре вещи:

  1. Режим bonding должен соответствовать настройкам коммутатора — mode 1 (active-backup) работает всегда, mode 4 (802.3ad) требует LACP на свитче
  2. Используйте одинаковые интерфейсы — разные скорости = проблемы
  3. Настраивайте ОБЕ стороны — сервер И коммутатор
  4. Понимайте ограничения пропускной способности — одно соединение = один канал, для увеличения скорости нужны множественные потоки

Для Proxmox не забывайте создавать bridge поверх bonding — иначе VM не получат доступ к сети.

Эта команда спасала прод чаще, чем бэкапы: cat /proc/net/bonding/bond0. Запомните её.

Сохраните статью в закладки — в следующий раз настроите bonding за 5 минут, а не за час.

Следующая шпаргалка: настройка VLAN на Linux и управляемых коммутаторах.

over_dude
Author: over_dude

Поделитесь:

Оставьте комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Прокрутить вверх