Агрегация сетевых интерфейсов в Debian Lenny

Объеденение двух сетевых интерфейсов в один в терминологии Windows называется teaming, а в терминологии Linux — . Этот режим может использоваться для повышения отказоустойчивости и/или пропускной способности сетевого подключения.

Linux поддерживает несколько режимов агрегации интерфейсов:

  • 0 (balance-rr) — round-robin распределение пакетов между интерфейсами. Обеспечивает отказоустойчивость и повышение пропускной способности.
  • 1 (active-backup) — в каждый момент времени работает только один интерфейс, в случае его выхода из строя, mac-адрес назначается второму интерфейсу и трафик переключается на него.
  • 2 (balance-xor) — обеспечивает балансировку между интерфейсами на основании MAC-адресов отправителя и получателя.
  • 3 (broadcast) — отправляет пакеты через все интерфейсы одновременно, обеспечивает отказоустойчивость.
  • 4 (802.3ad) — обеспечивает агрегацию на основании протокола 802.3ad.
  • 5 (balance-tlb) — в этом режиме входящий трафик приходит только на один «активный» интерфейс, исходящий же распределяется по всем интерфейсам.
  • 6 (balance-alb) — балансирует исходящий трафик как tlb, а так же входящий IPv4 трафик используя ARP.

Настроим агрегацию сетевых интерфейсов eth0 и eth1 в один bond0, используя round-robin алгоритм балансировки пропускной способности.

Установим ifenslave:

 [email protected]:~$ apt-get install ifenslave-2.6 

Далее нужно привести конфиг /etc/network/interfaces примерно к такому виду:

 auto bond0 iface bond0 inet static address 192.168.0.2 netmask 255.255.255.0 network 192.168.0.0 broadcast 192.168.0.255 gateway 192.168.0.1 up /sbin/ifenslave bond0 eth0 eth1 down /sbin/ifenslave -d bond0 eth0 eth1 

Создаем файл /etc/modprobe.d/bonding.conf:

 alias bond0 bonding options bonding mode=0 miimon=100 downdelay=200 updelay=200 

Добавляем модуль bonding в /etc/modules:

 [email protected]:~$ echo "bonding" >> /etc/modules 

Перезапускаем службу настройки сети:

 [email protected]:~$ invoke-rc.d networking restart 

Если все получилось, выглядеть должно примерно так:

 [email protected]:~$ ifconfig bond0 Link encap:Ethernet HWaddr 00:1e:58:99:f2:a0 inet addr:192.168.0.2 Bcast:192.168.0.255 Mask:255.255.255.0 UP BROADCAST RUNNING MASTER MULTICAST MTU:1500 Metric:1 RX packets:6533845 errors:0 dropped:0 overruns:0 frame:0 TX packets:6583132 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0 RX bytes:3584238626 (3.3 GiB) TX bytes:5339636447 (4.9 GiB) eth0 Link encap:Ethernet HWaddr 00:1e:58:99:f2:a0 UP BROADCAST RUNNING SLAVE MULTICAST MTU:1500 Metric:1 RX packets:3741006 errors:0 dropped:0 overruns:0 frame:0 TX packets:3291562 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:1893688937 (1.7 GiB) TX bytes:2677192063 (2.4 GiB) Interrupt:21 eth1 Link encap:Ethernet HWaddr 00:1e:58:99:f2:a0 UP BROADCAST RUNNING SLAVE MULTICAST MTU:1500 Metric:1 RX packets:2792839 errors:0 dropped:0 overruns:0 frame:0 TX packets:3291570 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:1690549689 (1.5 GiB) TX bytes:2662444384 (2.4 GiB) Interrupt:28 Base address:0xa000