Как настроить NIC teaming (bonding) используя nmcli в CentOS

Как настроить NIC teaming (bonding) используя nmcli в CentOS

Roman Bogachev VMware Specialist | Drone Pilot | Traveler

Bonding - это технология, поддерживаемая ядром Linux и Red Hat Enterprise Linux, которая позволяет объединить два и более сетевых интерфейса в один логический интерфейс для избыточности или увеличения пропускной способности.

Существует несколько режимом работы при организации NIC teaming.

Режим Тип Описание Fail Tolerance Balancing
0 Round Robin Пакеты последовательно отправляются/принимаются через каждый интерфейс один за другим. - +
1 Active Backup Активен один интерфейс, другой находится в standby. Если активный интерфейс выходит из строя или отключается, другой интерфейс становится активным. + -
2 XOR [exclusive OR] В этом режиме MAC-адрес вспомогательного интерфейса сопоставляется с MAC входящего запроса, и как только это соединение установлено, тот же интерфейс используется для отправки/получения для MAC-адреса назначения. + +
3 Broadcast Происходит передача во все объединенные интерфейсы, тем самым обеспечивая отказоустойчивость. Рекомендуется только для использования MULTICAST трафика. + -
4 Dynamic Link Aggregation Динамическое объединение одинаковых портов. В данном режиме можно значительно увеличить пропускную способность входящего так и исходящего трафика. Для данного режима необходима поддержка и настройка коммутатора/коммутаторов. + +

Создаём bonding интерфейс

Используем команду nmcli connection без каких-либо аргументов для просмотра существующих сетевых подключений (аргумент connection можно сократить до con).

1
2
3
4
# nmcli con
NAME UUID TYPE DEVICE
eth0 3db91b5b-9a96-4bd7-82fc-9935747bd697 ethernet eth0
eth1 57f16c54-5bad-4ceb-83ea-e9411b73f11f ethernet --

Создаём связанный интерфейс с именем bond0, определяем интерфейс как bond0, устанавливаем режим «Active Backup» и назначаем IP-адрес для связанного интерфейса.

1
2
# nmcli con add type bond con-name bond0 ifname bond0 mode active-backup ip4 172.16.1.7/24
Connection 'bond0' (a50bfcfb-ed3c-41f2-b220-2b43124b2665) successfully added.

Проверяем создание интерфейса:

1
2
3
4
5
# nmcli con
NAME UUID TYPE DEVICE
bond0 a50bfcfb-ed3c-41f2-b220-2b43124b2665 bond bond0
eth0 3db91b5b-9a96-4bd7-82fc-9935747bd697 ethernet eth0
eth1 57f16c54-5bad-4ceb-83ea-e9411b73f11f ethernet --

Создаём вспомогательные интерфейсы

Для каждого интерфейса, который хотим связать, используем команду nmcli con add type bond-slave.

Команда не содержит аргумента con-name, поэтому имя генерируется автоматически. Добавим интерфейсы eth0 и eth1 в качестве вспомогательных.

1
2
# nmcli con add type bond-slave ifname eth0 master bond0
Connection 'bond-slave-eth0' (7bd32836-c258-424e-ae08-44fe2597defe) successfully added.
1
2
# nmcli con add type bond-slave ifname eth1 master bond0
Connection 'bond-slave-eth1' (3ed2b57c-371e-4aab-8f51-f9d56e0d3344) successfully added.

Команда nmcli con add type bond-slave автоматически создаёт необходимые файлы конфигурации интерфейса в директории /etc/sysconfig/network-scripts.

Активируем bonding

Сперва поднимаем вспомогательные интерфейсы.

1
2
# nmcli con up bond-slave-eth0
# nmcli con up bond-slave-eth1

Затем поднимаем логический интерфейс bond0.

1
nmcli connection up bond0

Проверяем статус bonding-интерфейса:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
 cat /proc/net/bonding/bond0
Ethernet Channel Bonding Driver: v3.7.1 (April 27, 2011)

Bonding Mode: fault-tolerance (active-backup)
Primary Slave: None
Currently Active Slave: eth1
MII Status: up
MII Polling Interval (ms): 100
Up Delay (ms): 0
Down Delay (ms): 0

Slave Interface: eth1
MII Status: up
Speed: Unknown
Duplex: Unknown
Link Failure Count: 0
Permanent HW addr: 52:54:00:89:b8:cf
Slave queue ID: 0

Slave Interface: eth0
MII Status: up
Speed: Unknown
Duplex: Unknown
Link Failure Count: 0
Permanent HW addr: 52:54:00:20:46:42
Slave queue ID: 0

Для отключения IPv6 на bonding-интерфейсе используем команду nmcli connection modify bond0 ipv6.method ignore