使用特定的出站连接接口(Ubuntu 9.04)

我的电脑上有两个以太网接口,运行的是Ubuntu 9.04。 两个接口都运行静态IP,但使用单独的网关。 我的/etc/network/interfaces文件看起来像这样:

 auto eth0 eth1
 iface eth0 inet static
  地址10.0.0.5
  networking掩码255.255.255.0
  网关10.0.0.1

 iface eth1 inet static
  地址192.168.2.5
  networking掩码255.255.255.0
  网关192.168.2.1

我希望所有的stream量都通过eth0运行,但似乎要通过eth1 。 有没有一种方法可以让我的通用出站stream量通过eth0来代替,而只使用eth1通讯到其子网?

答案应该是持久的; 也就是说,它应该能够在重新启动后无需超级用户重新启动就能运行命令。

编辑 :按要求,这里是我的route -n命令的输出:

内核IP路由表
目标网关Genmask标志度量参考使用Iface
 10.0.0.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
 192.168.2.0 0.0.0.0 255.255.255.0 U 0 0 0 eth1
 169.254.0.0 0.0.0.0 255.255.0.0 U 1000 0 0 eth1
 0.0.0.0 192.168.2.1 0.0.0.0 UG 100 0 0 eth1
 0.0.0.0 10.0.0.1 0.0.0.0 UG 100 0 0 eth0

您应该只有一个默认网关。 如果从eth1删除网关线路,它将全部工作(重新启动联网后)。

从/ etc / network / interfaces中的eth1中删除网关,并将其添加为静态路由:

 route add -net 192.168.2.0 netmask 255.255.255.0 gw 192.168.2.1 

这样,10.0.0.1将成为您的默认网关,eth1将仅用于连接到192.168.2.0networking

通过在路由中input来查看当前的路由表。 您的机器将使用它在路由表中看到的第一个默认gw。 这将被默认或0.0.0.0作为目的地。 如果您只希望将eth1用于本地192.168.2.0/24networking,请删除网关命令。 这应该使eth1的默认gw你唯一的默认。

build议使用route修改路由表将暂时修复这个问题,但是它会在下一次启动时恢复到当前状态。

可以在/etc/rc.local或某种其他初始化脚本中设置路由规则,但在这种情况下,最简单的select只是从interfaces文件中的eth1中删除网关。

通过删除该网关,系统仍然会自动使用eth1作为路由192.168.2 / 24,但将通过eth0路由所有其他stream量。