Либо у меня фундаментальное непонимание того, как должны работать интерфейсы, либо я сделал что-то странно неправильное.
У меня два интерфейса:
eno1: 10.6.59.203/24 (gateway 10.6.59.1)
eno2: 192.168.5.100/24 (gateway 192.168.5.1)
Если я отключу один кабель и перезагружусь, независимо от кабеля, у него будет Интернет.
Однако, если они оба подключены, работает только один интерфейс (по умолчанию eno2
). Например:
ping google.com -I eno2 # works
ping google.com -I eno1 # hangs forever
Как заставить работать оба приведенных выше утверждения?
мой / etc / network / interface:
# The loopback network interface
auto lo
iface lo inet loopback
allow-hotplug eno2
iface eno2 inet dhcp
allow-hotplug eno1
iface eno1 inet dhcp
мой route
:
Destination Gateway Genmask Flags Metric Ref Use Iface
default 192.168.5.1 0.0.0.0 UG 0 0 0 eno2
10.6.59.0 0.0.0.0 255.255.255.0 U 0 0 0 eno1
192.168.5.0 0.0.0.0 255.255.255.0 U 0 0 0 eno2
Я нашел способ исправить это route add default gw 10.6.59.1 eno1
. Однако как мне правильно это сделать при запуске (возможно, просто отредактировав / etc / network / interfaces).
Кроме того, теперь, когда у меня есть 2 пункта назначения по умолчанию, как Linux узнает, какой из них использовать по умолчанию?
У вас есть только один шлюз по умолчанию, поэтому исходящие пакеты будут отправляться только через него; если вы хотите использовать оба соединения, вам необходимо вручную добавить еще один шлюз по умолчанию (т. е. маршрут к 0.0.0.0
) с помощью шлюза другого интерфейса.
Но учтите, что это будет не использовать оба соединения одновременно; это просто невозможно из коробки. Одно из соединений будет использоваться всегда, другое будет использоваться только в случае отказа основного; предпочтительный маршрут определяется параметром «метрика».
По умолчанию linux направляет исходящие пакеты только по адресу назначения.
Вам нужна маршрутизация на основе адреса назначения и отправления.