Подробный гайд по агрегации каналов (bonding) в Debian 13 - Часть 1

Практический гайд по агрегации каналов (bonding) в Debian 13. Настройка режимов LACP и active-backup через ifupdown, nmcli и systemd-networkd.

2026.09.29                  


Подробный гайд по агрегации каналов (bonding) в Debian 13 - Часть 1Подробный гайд по агрегации каналов (bonding) в Debian 13 - Часть 1

Важно:

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


1. Что такое bonding

Bonding — это объединение нескольких физических сетевых интерфейсов в один логический интерфейс, например bond0.

Цели:

  • отказоустойчивость: при падении одного линка трафик идёт через другой;
  • увеличение пропускной способности: распределение трафика по нескольким физическим каналам;
  • единая логическая сетевая точка: один IP, один MAC, один маршрут.


Пример:

bond0
├── enp3s0
└── enp4s0

IP-адрес назначается на bond0, а не на физические интерфейсы.


2. Основные режимы bonding

В Linux есть несколько режимов. Выбор режима зависит от коммутатора и задачи.

Режим Название Назначение Требования к коммутатору Комментарий
0 balance-rr Round-robin Желательна поддержка агрегации Редко рекомендуется для TCP-трафика
1 active-backup Активный и резервный канал Не требуются Самый простой и надёжный режим для отказоустойчивости
2 balance-xor Распределение по hash Желательна статическая агрегация Хорош, если коммутатор поддерживает статический LAG
3 broadcast Отправка во все порты Специфичные сценарии Редко используется
4 802.3ad LACP Обязательна поддержка LACP на коммутаторе Стандартный вариант для динамической агрегации
5 balance-tlb Adaptive transmit load balancing Обычно не требует настройки коммутатора Балансировка исходящего трафика
6 balance-alb Adaptive load balancing Обычно не требует настройки коммутатора, но возможны нюансы Балансировка входящего и исходящего трафика через ARP

Практические рекомендации

  • Нужна только отказоустойчивость?

Используйте:

mode=active-backup
  • Коммутатор поддерживает LACP?

Используйте:

mode=802.3ad
  • Коммутатор поддерживает только статическую агрегацию без LACP?

Обычно используют:

mode=balance-xor
  • Нет управляемого коммутатора, но хочется балансировку исходящего трафика?

Можно рассмотреть:

mode=balance-tlb
mode=balance-alb

Но режимы 5 и 6 имеют особенности и подходят не всегда.


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

3.1. Обновите систему

apt update
apt upgrade

3.2. Установите полезные пакеты

apt install ethtool

Пакет ifenslave в современных системах часто не обязателен, так как ядро и iproute2 умеют управлять bonding напрямую, но в Debian он может использоваться некоторыми старыми сценариями.

apt install ifenslave || true

Если пакет не найден — ничего страшного, дальше можно работать через ip link.

3.3. Определите имена сетевых интерфейсов

ip -br link

Пример вывода:

lo               UNKNOWN        00:00:00:00:00:00 <LOOPBACK,UP,LOWER_UP>
enp3s0           UP             52:54:00:aa:bb:01 <BROADCAST,MULTICAST,UP,LOWER_UP>
enp4s0           UP             52:54:00:aa:bb:02 <BROADCAST,MULTICAST,UP,LOWER_UP>

В примерах дальше будут использоваться:

enp3s0
enp4s0

Замените их на свои реальные интерфейсы.

3.4. Посмотрите состояние линков

ethtool enp3s0
ethtool enp4s0

Обратите внимание на:

Speed:
Duplex:
Link detected:

Желательно, чтобы интерфейсы были подключены к одному коммутатору или к согласованным портам, имели одинаковую скорость и дуплекс.


4. Быстрая проверка bonding без перезагрузки

Перед сохранением конфигурации полезно проверить режим вручную.

4.1. Загрузите модуль bonding

modprobe bonding

Проверка:

lsmod | grep bonding

4.2. Освободите интерфейсы

Перед добавлением в bond интерфейсы должны быть без IP-адресов и не должны состоять в другом bridge/bond/team.

ip addr flush dev enp3s0
ip addr flush dev enp4s0

ip link set enp3s0 down
ip link set enp4s0 down

4.3. Пример ручного создания active-backup

Создаём bond0 в режиме active-backup:

ip link add bond0 type bond mode active-backup miimon 100

Добавляем интерфейсы:



ip link set enp3s0 master bond0
ip link set enp4s0 master bond0

Поднимаем:

ip link set enp3s0 up
ip link set enp4s0 up
ip link set bond0 up

Назначаем IP:

ip addr add 192.168.10.10/24 dev bond0

Если нужен маршрут по умолчанию:

ip route replace default via 192.168.10.1 dev bond0

Проверка:

cat /proc/net/bonding/bond0

5. Постоянная настройка через ifupdown

Классический способ для серверных редакций Debian — файлы:

/etc/network/interfaces
/etc/network/interfaces.d/

5.1. Сделайте резервную копию

cp -a /etc/network/interfaces /root/interfaces.backup.$(date +%F)

Если используете каталог:

mkdir -p /root/network-backup
cp -a /etc/network/interfaces.d /root/network-backup/ 2>/dev/null || true

5.2. Проверьте подключение каталога

Файл /etc/network/interfaces обычно содержит строку:

source /etc/network/interfaces.d/*

Проверить:

grep -R "source /etc/network/interfaces.d" /etc/network/interfaces

Если строки нет, добавьте:

echo "source /etc/network/interfaces.d/*" >> /etc/network/interfaces

6. Пример: active-backup со статическим IP

Это самый простой отказоустойчивый режим. Один интерфейс активен, второй — резервный.

Создайте файл:

nano /etc/network/interfaces.d/bond0

Содержимое:

auto enp3s0
iface enp3s0 inet manual

auto enp4s0
iface enp4s0 inet manual

auto bond0
iface bond0 inet static
    address 192.168.10.10/24
    gateway 192.168.10.1
    bond-mode active-backup
    bond-miimon 100
    bond-primary enp3s0
    bond-slaves enp3s0 enp4s0

Пояснения:

  • auto enp3s0, auto enp4s0 — поднимать интерфейсы при загрузке;
  • inet manual — не назначать им IP напрямую;
  • bond0 — логический интерфейс;
  • bond-mode active-backup — режим отказоустойчивости;
  • bond-miimon 100 — проверка состояния линка каждые 100 мс;
  • bond-primary enp3s0 — предпочтительный интерфейс;
  • bond-slaves enp3s0 enp4s0 — список физических интерфейсов.

Применение:

ifdown enp3s0 || true
ifdown enp4s0 || true
ifup bond0

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

Проверка:

ip -br addr show bond0
cat /proc/net/bonding/bond0

Мы делимся этой технической информацией, чтобы помочь вам в решении задач — используйте её с пониманием. Статья носит рекомендательный характер, поэтому, пожалуйста, применяйте описанные методы осмотрительно.


Статью подготовил: Аверко Денис Сергеевич @Nymexis г. Омск (специалист по ЗИ)

Комментарии

Загрузка...
Если комментарии не загружаются, можете попробовать отключить блокировщик рекламы для этого сайта