Ubuntu: интерфейс ethX не подключен после отключения и повторного подключения кабеля

Я пытаюсь настроить восстановление после сбоя при соединении, но я не могу обойти конфигурацию интерфейса. Мой интерфейс выглядит следующим образом:

auto bond0
iface bond0 inet static
       address 192.168.1.39
       netmask 255.255.255.0
       up /sbin/ifenslave bond0 eth1 eth3
       down /sbin/ifenslave -d bond0 eth1 eth3

Мой файл /etc/modprobe.d/bonding.conf:

alias bond0 bonding
options bonding mode=3

Я проверил это, запустив ping из другой системы. Мой статус облигации выглядит следующим образом:

Ethernet Channel Bonding Driver: v3.7.1 (April 27, 2011)
Bonding Mode: fault-tolerance (broadcast)
MII Status: up
MII Polling Interval (ms): 0
Up Delay (ms): 0
Down Delay (ms): 0

Slave Interface: eth1
MII Status: up
Speed: 1000 Mbps
Duplex: full
Link Failure Count: 0
Permanent HW addr: 44:a8:42:03:68:2c
Slave queue ID: 0

Slave Interface: eth3
MII Status: up
Speed: 1000 Mbps
Duplex: full
Link Failure Count: 0
Permanent HW addr: 44:a8:42:03:68:2c
Slave queue ID: 0

Когда я удаляю кабель eth1, происходит переключение при сбое, а eth3 выполняет передачу данных (пинг все еще продолжается).

Если я подключаюсь обратно к eth1 и удаляю eth3, пинг прекращается, и состояние соединения не содержит интерфейса. Статус облигации:

Ethernet Channel Bonding Driver: v3.7.1 (April 27, 2011)
Bonding Mode: fault-tolerance (broadcast)
MII Status: up
MII Polling Interval (ms): 0
Up Delay (ms): 0
Down Delay (ms): 0

Я пробовал со всеми режимами склеивания (от 0 до 6). Но ни одна из конфигураций не обеспечивает поддержку возврата при сбое. Куда я иду не так?

1 ответ

РЕДАКТИРОВАТЬ 2019-01-10: Эти инструкции предназначены для Ubuntu 16.04 и старше. Попробую обновить с инструкцией на 18.04.

В этом ответе мы используем active-backup склеивание с bond-primary набор интерфейсов, который позволяет при сбое вернуться к основному, когда он доступен. Более подробную информацию можно найти: https://wiki.linuxfoundation.org/networking/bonding


Связывание в Ubuntu отличается от установки в других дистрибутивах Linux, таких как RedHat. Я сделал несколько конфигураций соединения в Ubuntu и выложу их как можно ниже.

Как это выглядит, у вас уже есть ifenslave установлен, но если нет, установите ifenslave:

sudo apt-get install ifenslave

Далее взгляните на /etc/modules и убедитесь, что он имеет следующие строки:

loop
lp
rtc
bonding

в /etc/network/interfaces файл, установите ваш loopback, eth1, а также eth3 интерфейсы:

auto lo
    iface lo inet loopback

auto eth1
    iface eth1 inet manual
    bond-master bond0
    bond-primary eth1

auto eth3
    iface eth3 inet manual
    bond-master bond0

Теперь установите ваш bond0 интерфейс с active-backup для аварийного переключения, если одно из соединений NIC терпит неудачу:

auto bond0
    iface bond0 inet static
    address 192.168.1.39
    netmask 255.255.255.0
    network 192.168.1.0
    broadcast 192.168.1.255
    gateway 192.168.1.1
    bond-mode active-backup
    bond-miimon 100
    bond-slaves none

Сохраните изменения в /etc/network/interfaces файл и перезапустите свой сетевой сервис:

sudo /etc/init.d/networking restart

Теперь вы можете проверить настройки склеивания. Убедитесь, что ваш bond0, eth1 а также eth3 верны:

sudo ethtool bond0
sudo ethtool eth1
sudo ethtool eth3

Проверьте, работает ли аварийное переключение, удалив eth1 от bond0:

sudo ifenslave -d bond0 eth1

Проверьте, можете ли вы еще пропинговать шлюз:

ping -c2 192.168.1.1

добавлять eth1 вернуться к bond0:

sudo ifenslave bond0 eth1

Надеюсь это поможет!

Другие вопросы по тегам