На этот вопрос уже есть ответ здесь:
У меня есть 2 соединения: wlan0 (gw: 192.168.1.1) и eth0 (gw: 192.168.2.1).
Мое соединение по умолчанию - wlan0 , но я хотел, чтобы некоторые веб-сайты загружались через мой eth0 , поэтому я настроил маршрутизацию для этих веб-сайтов. / IP, подобные этому:
route add -net 31.135.208.0/21 gw 192.168.2.1 dev eth0
Это работает, однако не является постоянным (исчезает после перезагрузки).Я попытался поместить этот код в / etc / network / interfaces
следующим образом:
up route add -net 31.135.208.0/21 gw 192.168.2.1 dev eth0
, но когда я перезапускаю Ubuntu, он запускается без подключения к сети (происходит сбой). Я также поместил эти строки в этот файл:
auto eth0
address 192.168.2.125
gateway 192.168.2.1
netmask 255.255.255.0
, но система все равно загружается без подключения к сети.
В настоящее время я поместил команду route
в /etc/rc.local
, она работает, но не навсегда, потому что когда я перезапускаю / повторно подключаю свой eth0 (почему-то) пропадает роутинг.
Некоторые примечания:
У меня длинный список IP-адресов для маршрутизации.
Мой маршрутизатор, к которому я подключил eth0 , настроен на DHCP.
Я пытался подключить eth0 как статическим, так и DHCP-способом.
Спасибо за помощь!
Синтаксис для добавления маршрутов к вашим интерфейсам выглядит следующим образом:
up route add -net 192.168.0.0 netmask 255.255.0.0 gw 192.168.1.1
Вам не нужно добавлять устройство в конец.
Пример файла интерфейсов:
auto eth0
iface eth0 inet static
address 192.168.1.2
netmask 255.255.255.0
up route add -net 192.168.0.0 netmask 255.255.0.0 gw 192.168.1.1
На основе информации из: Как установить статические маршруты в Ubuntu Server?
В моей системе это работало, когда я делал скрипт в папке /etc/network/if-up.d/
с именем script
с разрешениями на выполнение 755:
#ls -la /etc/network/if-up.d/script
-rwxr-xr-x 1 root root 46 Okt 15 11:46 script
Там вы можете добавить команду для выполнения, когда соединение установлено, в вашем случае:
#cat /etc/network/if-up.d/script
#!/bin/bash
# Check for specific interface if desired
[ "$IFACE" != "eth0" ] || exit 0
# Adding additional routes on connection
route add -net 31.135.208.0/21 gw 192.168.2.1 dev eth0
route add ...
route add ...
Вам не нужно добавлять что-либо в /etc/network/interfaces
, кроме auto eth0
и iface eth0 inet dhcp
, или что там у вас есть. NetworkManager вызывает сценарии в этом каталоге с помощью exec run-parts /etc/network/if-up.d
в сценарии /etc/NetworkManager/dispatcher.d/01ifupdown
. Вы можете проверить это по (в моем случае):
# run-parts --test /etc/network/if-up.d
/etc/network/if-up.d/000resolvconf
/etc/network/if-up.d/avahi-autoipd
/etc/network/if-up.d/avahi-daemon
/etc/network/if-up.d/ethtool
/etc/network/if-up.d/ip
/etc/network/if-up.d/ntpdate
/etc/network/if-up.d/openssh-server
/etc/network/if-up.d/openvpn
/etc/network/if-up.d/script <---- your script here
/etc/network/if-up.d/upstart
/etc/network/if-up.d/wpasupplicant