设置永久路由 (Ubuntu 13.04)

Aza*_*mat 13 networking routing 13.04

我有 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
Run Code Online (Sandbox Code Playgroud)

这有效,但不是永久性的(重新启动后消失)。我试着把这段代码放在/etc/network/interfaces这样的地方:

up route add -net 31.135.208.0/21 gw 192.168.2.1 dev eth0
Run Code Online (Sandbox Code Playgroud)

但是当我重新启动 Ubuntu 时,它在没有网络的情况下启动(它崩溃了)。我还将这些行放入该文件中:

auto eth0
address 192.168.2.125
gateway 192.168.2.1
netmask 255.255.255.0
Run Code Online (Sandbox Code Playgroud)

但是系统仍然可以在没有网络的情况下启动。

目前我已将route命令放入/etc/rc.local,它可以工作,但它不是永久性的,因为当我重新启动/重新连接我的eth0(出于某种原因)时,路由消失了。

一些注意事项:
我有一长串要路由的 IP。
我连接eth0 的路由器设置为 DHCP。
我尝试以静态和 DHCP 方式连接eth0

谢谢你的帮助!

cha*_*aos 11

在我的系统,它的工作时,我做的文件夹中的脚本/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
Run Code Online (Sandbox Code Playgroud)

在那里,您可以添加在建立连接时执行的命令,在您的情况下:

#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 ...
Run Code Online (Sandbox Code Playgroud)

您不需要在/etc/network/interfacesbesideauto 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
Run Code Online (Sandbox Code Playgroud)


NGR*_*des 8

向接口添加路由的语法如下:

up route add -net 192.168.0.0 netmask 255.255.0.0 gw 192.168.1.1
Run Code Online (Sandbox Code Playgroud)

您不需要将设备添加到最后。

示例接口文件:

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
Run Code Online (Sandbox Code Playgroud)

基于以下信息:How to set static routes in Ubuntu Server?