我有两个连接:wlan0(网关:192.168.1.1)和eth0(网关: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 方式。
谢谢你的帮助!
答案1
/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
beyondsauto eth0
和 iface中添加任何内容,或者您在那里已有的任何内容。NetworkManager 通过脚本eth0 inet dhcp
调用此目录中的脚本。您可以通过以下方式测试(就我而言):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
答案2
向接口添加路由的语法如下:
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 中设置静态路由?