Сетевые технологии · 2 min read · Oct 30, 2025
NIC Bonding/Teaming - Debian Sarge
Резюме:
Вы можете найти более удобную для чтения версию здесь: 5dollarwhitebox.org
Концепция объединения NIC (или иногда называемая командованием NIC) заключается в том, что у вас есть два NIC, объединенных вместе, чтобы они выглядели как одно физическое устройство. То есть, они оба будут представлять один и тот же аппаратный (MAC) адрес. Это достигается с помощью утилиты ifenslave, которая позволяет ядру видеть/использовать только одно устройство, в то время как оно отправляет пакеты через два подчиненных устройства, используя планировщик round-robin.
Система: Debian Sarge 3.1 (ванильное ядро 2.6.12.4)
Задействованные модули: bonding, mii, nic_module (e100 в этом примере)
Утилиты: ifenslave, mii-tool
Подготовка:
Перед тем как пытаться объединить два NIC, настоятельно рекомендуется проверить целостность и функциональность каждого NIC по отдельности. Этот документ предполагает, что вы уже это сделали. Используя ‘mii-tool’, вы должны увидеть что-то вроде следующего:
testbox:/# mii-tool
eth0: согласовано 100baseTx-FD, связь в порядке
eth1: согласовано 100baseTx-FD, связь в порядке
Чтобы это работало, ядро должно поддерживать объединение
устройств. Несколько способов проверить это:
testbox:/# modprobe –list | grep* bonding /lib/modules/2.6.12.4-vs2.0/kernel/drivers/net/bonding/bonding.ko
- testbox:/# cat /boot/config-2.6.12.4-vs2.0 | grep -i bonding
CONFIG_BONDING=m
Мы используем mii-tool (модуль mii.o) для мониторинга интерфейсов на
отказоустойчивость… хотя, поскольку большинство Ethernet-адаптеров используют MII (Media
Independant Interface) для автоматического согласования скоростей соединения, это довольно стандартно,
что у вас это будет.
testbox:/# cat /boot/config-2.6.12.4-vs2.0 | grep -i mii ** *# CONFIG_MPENTIUMII не установлен
CONFIG_MII=y ** *
testbox:/# modprobe –list | grep -i mii
/lib/modules/2.4.26-2-686/kernel/drivers/net/mii.ko
Во-вторых, вам нужно будет установить утилиту ifenslave.
testbox:/# apt-get update && apt-get install ifenslave
………. удален стандартный вывод (ничего интересного)
Здесь нет конфигурации, так что это и все. Теперь мы готовы к
конфигурационным файлам.
Конфигурационные файлы:
Существует множество различных вариантов этого, но на данный момент… вот как я это сделал, чтобы это заработало.
vi /etc/modutils/aliases и добавьте/измените следующее:
alias bond0 bonding
alias eth0 e100
alias eth1 e100
options bonding mode=0 miimon=100
vi /etc/modutils/actions и добавьте/измените следующее:
probeall bond0 eth0 eth1 bonding
После редактирования конфигурационных файлов modprobe вам нужно выполнить команду:
testbox# update-modules
vi /etc/network/interfaces и добавьте/измените следующее:
auto bond0
iface bond0 inet static
address 10.1.100.63
netmask 255.255.255.0
hwaddress ether 00:02:B3:48:50:2C
gateway 10.1.100.1
up ifenslave bond0 eth0 eth1
down ifenslave -d bond0 eth0 eth1
Вы НЕ настраиваете записи для ‘eth0’ или ‘eth1’ вне того, что указано выше в записи ‘bond0’. Bond0 теперь будет интерфейсом, с которым работает ядро. Выполнение ‘ifconfig’ покажет все три интерфейса (bond0, eth0, eth1), все с одинаковыми MAC и IP адресами.
И это, в общем-то, все. Теперь вам просто нужно загрузить модуль ‘bonding’ и остановить/запустить сеть… и соответствующие модули должны загрузиться автоматически:
testbox:/# modprobe bonding
testbox:/# /etc/init.d/networking stop testbox:/# /etc/init.d/networking start
Вам, возможно, придется немного поиграть с этой частью. Для меня мне пришлось вручную поднять устройство bond0:
testbox:/# ifconfig bond0 10.1.15.63 netmask 255.255.255.0 up
Предполагая, что ошибок не было, вы должны быть в состоянии протестировать это. Попробуйте пинговать ваш IP-адрес с другого устройства. Вы заметите, что оба NIC отвечают на запросы пинга по очереди (round robin). Если вы отключите eth0, вы получите ошибку в консоли “eth0 не работает, eth1 становится основным” или что-то в этом роде (и наоборот, если вы отключите eth1). Но вы не должны потерять ни один из запросов пинга (или не более нескольких), так как у вас теперь есть резервное сетевое соединение.
В более высоком классе окружения вы можете подключить каждый NIC к отдельному коммутатору (оставаясь на том же VLAN) и еще больше улучшить вашу конфигурацию высокой доступности… и так далее.
BJ Dierkes, RHCE4-LPIC1
wdierkes [at] 5dollarwhitebox [dot] org
Техас, США
Ресурсы:
Debian GNU/Linux: https://www.debian.org
Get new posts in your inbox
No spam. Unsubscribe anytime.