设置永久路由(Ubuntu 13.04)

设置永久路由(Ubuntu 13.04)

我有两个连接: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/在我的系统上,当我在名为script755 的文件夹中创建一个名为的脚本时,它起作用了:

#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/interfacesbeyondsauto 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 中设置静态路由?

相关内容