← Назад к вопросам

Как настраивать Bonding сетей на Linux

2.0 Middle🔥 121 комментариев
#Сети и протоколы

Комментарии (1)

🐱
deepseek-v3.2PrepBro AI5 апр. 2026 г.(ред.)

Ответ сгенерирован нейросетью и может содержать ошибки

Настройка Bonding (агрегации) интерфейсов в Linux

Bonding (или Link Aggregation) — это технология объединения нескольких физических сетевых интерфейсов (slaves) в один логический (master) для повышения отказоустойчивости и/или производительности. В Linux это реализуется через модуль ядра bonding.

Основные режимы работы (mode)

  1. mode=0 (balance-rr) — циклическое распределение пакетов для балансировки нагрузки.
  2. mode=1 (active-backup) — активный-резервный, работает один интерфейс, остальные в резерве.
  3. mode=2 (balance-xor) — балансировка на основе XOR хеша (по умолчанию MAC-адресов).
  4. mode=3 (broadcast) — все пакеты дублируются на все интерфейсы.
  5. mode=4 (802.3ad) — динамическая агрегация LACP (требует поддержки коммутатора).
  6. mode=5 (balance-tlb) — адаптивная балансировка входящей/исходящей нагрузки.
  7. mode=6 (balance-alb) — адаптивная балансировка с ARP-поддержкой.

Практическая настройка через NetworkManager (актуально для RHEL/CentOS 8+, Fedora, Ubuntu с NM)

1. Проверка поддержки bonding в ядре

# Убедимся, что модуль загружен
sudo modprobe bonding
lsmod | grep bonding

# Проверим доступные режимы
cat /sys/class/net/bonding_masters 2>/dev/null || echo "Проверьте поддержку bonding"

2. Создание bond-интерфейса с помощью nmcli (рекомендуемый способ)

# Создаем bond-интерфейс в режиме active-backup
sudo nmcli connection add type bond con-name bond0 ifname bond0 \
    mode active-backup ipv4.method manual ipv4.addresses 192.168.1.100/24 \
    ipv4.gateway 192.168.1.1 ipv4.dns 8.8.8.8

# Добавляем физические интерфейсы в bond
sudo nmcli connection add type ethernet slave-type bond con-name bond0-slave1 \
    ifname eth0 master bond0
sudo nmcli connection add type ethernet slave-type bond con-name bond0-slave2 \
    ifname eth1 master bond0

# Активируем соединения
sudo nmcli connection up bond0
sudo nmcli connection up bond0-slave1
sudo nmcli connection up bond0-slave2

3. Ручная настройка через network-scripts (устаревший, но встречающийся метод)

Для RHEL/CentOS 7 и систем с network-scripts:

Файл конфигурации bond-интерфейса /etc/sysconfig/network-scripts/ifcfg-bond0:

DEVICE=bond0
TYPE=Bond
BONDING_MASTER=yes
IPADDR=192.168.1.100
NETMASK=255.255.255.0
GATEWAY=192.168.1.1
DNS1=8.8.8.8
ONBOOT=yes
BOOTPROTO=none
BONDING_OPTS="mode=1 miimon=100 updelay=0 downdelay=0"

Файлы конфигурации slave-интерфейсов (пример для eth0):

# /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
TYPE=Ethernet
BOOTPROTO=none
ONBOOT=yes
MASTER=bond0
SLAVE=yes
USERCTL=no

4. Проверка работы bonding

# Проверяем состояние bond-интерфейса
cat /proc/net/bonding/bond0

# Пример вывода:
# Bonding Mode: fault-tolerance (active-backup)
# Primary Slave: eth0 (active)
# Slave Interface: eth0 (link up)
# Slave Interface: eth1 (link down, backup)

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

Ключевые опции BONDING_OPTS:

  • miimon=100 — интервал проверки связи (мс)
  • mode=1 — режим работы bonding
  • primary=eth0 — предпочитаемый интерфейс (для active-backup)
  • updelay=2000 — задержка перед включением интерфейса (мс)
  • downdelay=0 — задержка перед отключением

Тонкая настройка для режима 802.3ad (LACP)

# Для LACP требуется специальная конфигурация
BONDING_OPTS="mode=4 miimon=100 lacp_rate=fast xmit_hash_policy=layer3+4"

Алгоритмы балансировки (xmit_hash_policy):

  • layer2 — по MAC-адресам (по умолчанию)
  • layer2+3 — по MAC и IP адресам
  • layer3+4 — по IP адресам и портам TCP/UDP

Управление bonding через sysfs

# Изменение режима на лету
echo 4 > /sys/class/net/bond0/bonding/mode

# Добавление интерфейса
echo +eth2 > /sys/class/net/bond0/bonding/slaves

# Установка primary интерфейса
echo eth0 > /sys/class/net/bond0/bonding/primary

Рекомендации по выбору режима

  • Для отказоустойчивости — используйте mode=1 (active-backup)
  • Для балансировки нагрузкиmode=0 или mode=2
  • В профессиональных окруженияхmode=4 (LACP) с поддержкой коммутатора
  • Для виртуальных окружений — часто используется mode=2 или mode=6

Важное предупреждение: При настройке bonding через коммутатор необходимо согласовать настройки на обеих сторонах, особенно для режимов 0, 2, 3, 4. Неправильная конфигурация может вызвать петли или потерю связи.

Для отладки используйте команды:

# Мониторинг состояния
watch -n 1 'cat /proc/net/bonding/bond0'

# Просмотр статистики
ip -s link show bond0

# Проверка скорости передачи
ethtool bond0

Настройка bonding требует тщательного тестирования в вашей среде, особенно важно проверять отработку отказов и фактическую производительность при разных режимах работы.

Как настраивать Bonding сетей на Linux | PrepBro