Я читал о связывателе Linux. https://www.kernel.org/doc/Documentation/networking/bonding.txt
Моя цель состоит в том, чтобы улучшить доступность моего интернет-соединения в системе на основе Debian, комбинируя интерфейс Ethernet (eth0), подключенный к локальной сети, и мобильное интернет-соединение, предоставляемое модулем surf-stick/GSM. Последний вывод также отображается как интерфейс Ethernet на выходе ifconfig
.
Я установил ifenslave
и добавил в мой /etc/network/interfaces
:
# Slaves
auto eth0
iface eth0 inet manual
bond-master bond0
bond-primary eth0
bond-mode active-backup
auto eth1
iface eth1 inet manual
bond-master bond0
bond-primary eth0
bond-mode active-backup
# Master
auto bond0
iface bond0 inet dhcp
bond-slaves none
bond-primary eth0
bond-mode active-backup
bond-miimon 100
После перезагрузки мой вывод ifconfig
выглядит так
bond0: flags=5187<UP,BROADCAST,RUNNING,MASTER,MULTICAST> mtu 1500
inet 192.168.178.47 netmask 255.255.255.0 broadcast 192.168.178.255
inet6 fe80::ba27:ebff:feb6:c504 prefixlen 64 scopeid 0x20<link>
ether b8:27:eb:b6:c5:04 txqueuelen 1000 (Ethernet)
RX packets 436 bytes 34223 (33.4 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 312 bytes 80051 (78.1 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
eth0: flags=6211<UP,BROADCAST,RUNNING,SLAVE,MULTICAST> mtu 1500
ether b8:27:eb:b6:c5:04 txqueuelen 1000 (Ethernet)
RX packets 436 bytes 34223 (33.4 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 312 bytes 80051 (78.1 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536
inet 127.0.0.1 netmask 255.0.0.0
inet6 ::1 prefixlen 128 scopeid 0x10<host>
loop txqueuelen 1000 (Local Loopback)
RX packets 2 bytes 78 (78.0 B)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 2 bytes 78 (78.0 B)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
То есть там есть связанный интерфейс. Странно eth0 также видно, в то время как eth1 (интерфейс резервного копирования, представляющий флешку) отсутствует.
Я могу получить доступ, если eth0 подключен к Интернету, но нет, если я удалю это соединение. То есть моя настройка ведет себя так, как будто серф-флешки нет.
Я не уверен, правильно ли я понимаю смысл соединения, так как в приведенной выше ссылке говорится о коммутаторах. В моем случае два интерфейса подключаются к шлюзам, которые не находятся в общей подсети.
Правка 1 Я мог бы решить частичную проблему, заключающуюся в том, что интерфейсы, по-видимому, не связаны правильно: похоже, это вызвано порядком загрузки (один из интерфейсов Ethernet от устройства USB). Потенциально драйверы загружаются только после того, как произойдет соединение. В любом случае, когда я запускаю связывание во время выполнения (изменяя /etc /network /interfaces и затем запуская /etc/init.d/networking restart), связывание, похоже, происходит. Тем не менее, я до сих пор не получить желаемое поведение.
Редактировать 2 Тем временем (к сожалению) удаленный ответ указал, что склеивание действительно может быть бесполезным для моего приложения. Если это правильно, возможно ли получить подобное поведение с помощью таблиц маршрутизации и как? Я хотел бы иметь одно из Ethernet-устройств (eth0) в качестве предпочтительного маршрута по умолчанию, когда его шлюз подключен к Интернету. Если нет, то должен быть добавлен дополнительный маршрут по умолчанию (через eth1) до тех пор, пока eth0 снова не подключится к Интернету.