Подробный гайд: Настройка бондинга в Ubuntu 16.04: как сделать Primary Slave None
Настройка сетевого бондинга (агрегации каналов) в Ubuntu 16.04 отличается от более новых версий, так как в этой ОС используется классический сетевой стек ifupdown (файл /etc/network/interfaces), а не Netplan.
Состояние Primary Slave: None означает, что в бондинге не задан жёсткий приоритет для конкретного физического интерфейса. Система будет выбирать активный интерфейс на основе порядка их инициализации или состояния линка (что является поведением по умолчанию, если параметр bond-primary не указан).
Ниже представлен подробный пошаговый гайд.
Шаг 1. Установка необходимых пакетов
Для работы бондинга в Ubuntu 16.04 требуется пакет ifenslave.
Откройте терминал и выполните:
sudo apt-get update
sudo apt-get install ifenslave
Шаг 2. Загрузка модуля ядра bonding
Загрузим модуль bonding в ядро, чтобы убедиться, что он работает:
sudo modprobe bonding
Чтобы модуль загружался автоматически при каждой загрузке системы, добавьте его в файл /etc/modules:
echo "bonding" | sudo tee -a /etc/modules
Шаг 3. Настройка сетевых интерфейсов
Перед редактированием обязательно сделайте резервную копию текущего файла настроек сети:
sudo cp /etc/network/interfaces /etc/network/interfaces.backup
Теперь откройте файл для редактирования:
sudo nano /etc/network/interfaces
Вам нужно настроить виртуальный интерфейс bond0 и подчинить ему ваши физические интерфейсы (в примере используем eth0 и eth1 — замените их на названия ваших реальных интерфейсов, которые можно посмотреть через ip a).
Пример конфигурации:
# Настройка физического интерфейса 1
auto eth0
iface eth0 inet manual
bond-master bond0
bond-primary none
# Настройка физического интерфейса 2
auto eth1
iface eth1 inet manual
bond-master bond0
bond-primary none
# Настройка виртуального интерфейса бондинга
auto bond0
iface bond0 inet static
address 192.168.1.100 # Ваш IP-адрес
netmask 255.255.255.0 # Ваша маска сети
gateway 192.168.1.1 # Ваш шлюз
dns-nameservers 8.8.8.8 1.1.1.1
# Указываем физические интерфейсы
bond-slaves eth0 eth1
# Выбираем режим бондинга (примеры ниже)
bond-mode 802.3ad # Режим LACP (требует поддержки коммутатора)
# bond-mode active-backup # Режим активного резервирования (не требует настроек свитча)
bond-miimon 100 # Проверка состояния линка каждые 100 мс
bond-downdelay 200
bond-updelay 200
# Параметры для режима 802.3ad (LACP)
bond-lacp-rate fast
bond-xmit-hash-policy layer2+3
# ВАЖНО: Чтобы Primary Slave был None, СТРОКУ bond-primary МЫ НЕ УКАЗЫВАЕМ!
Как гарантировать "Primary Slave: None":
В режиме active-backup (mode 1) бондинг использует параметр bond-primary. Если вы не пишете строку bond-primary eth0 (или bond-primary none), система по умолчанию оставляет Primary Slave равным None. Первый интерфейс из bond-slaves, который поднимется, станет активным.
Шаг 4. Применение настроек
В Ubuntu 16.04 safest way (самый безопасный способ) применить изменения сети — это перезагрузка.
Но если вы подключены по SSH и не хотите перезагружать сервер, можно попробовать перезапустить сетевую службу:
sudo systemctl restart networking
Примечание:
Если после этого вы потеряли связь, просто перезагрузите сервер физически или через панель управления хостингом — настройки применятся при старте.
Если сервер доступен локально или через IPMI/iLO, лучше выполнить:
sudo reboot
Шаг 5. Проверка результата
После загрузки системы проверьте статус бондинга.
Выполните команду:
cat /proc/net/bonding/bond0
В выводе вы должны увидеть примерно следующее (обратите внимание на строку Primary Slave):
Ethernet Channel Bonding Driver: v3.7.1 (April 27, 2011)
Bonding Mode: IEEE 802.3ad Dynamic link aggregation
Transmit Hash Policy: layer2+3 (1)
MII Status: up
MII Polling Interval (ms): 100
Up Delay (ms): 200
Down Delay (ms): 200
802.3ad info
lacp rate: fast
...
Slave Interface: eth0
MII Status: up
...
Slave Interface: eth1
MII Status: up
...
Чтобы убедиться, что Primary Slave именно None, выполните специфичную проверку через grep (особенно полезно для режима active-backup):
cat /proc/net/bonding/bond0 | grep "Primary Slave"
Ожидаемый вывод:
Primary Slave: None
Также проверьте, что IP-адрес назначен именно на bond0, а не на физические интерфейсы:
ip addr show bond0
Справка по режимам бондинга (bond-mode)
balance-rr(0) — Round-robin. Пакеты идут по очереди. Требует настройки свитча.active-backup(1) — Активный/резервный. Работает только один интерфейс, второй спит. Именно в этом режиме параметр Primary Slave имеет значение. Не требует настройки свитча.balance-xor(2) — Распределение по MAC-адресам. Требует настройки свитча.802.3ad(4) — LACP. Динамическая агрегация. Требует включения LACP на портах коммутатора. Самый популярный и эффективный режим.balance-tlb(5) — Адаптивная передача на основе загрузки. Не требует настройки свитча.balance-alb(6) — Адаптивный баланс. Включает tlb + балансировку входящего трафика. Не требует настройки свитча.
Мы делимся этой технической информацией, чтобы помочь вам в решении задач — используйте её с пониманием. Статья носит рекомендательный характер, поэтому, пожалуйста, применяйте описанные методы осмотрительно.