我的一台机器上有两个接口,一个是从 DHCP 获取 IP 的互联网连接,没问题。
另一个接口 (eth1) 用于本地计算机,并且gateway 192.168.3.1
在其配置文件(基于 Ubuntu 的发行版)中进行了设置。
问题是,当我启动接口时eth1
,它会自动将默认(0.0.0.0)路由添加到路由表(正如它应该做的那样),并且我无法连接到互联网,因为它尝试发送数据包发送到本地网络。到目前为止,我必须通过删除192.168.3.1
网关的默认路由来手动完成此操作。
有没有办法设置一旦我打开界面就不会添加默认路由?我仍然需要gateway 192.168.3.1
保留在配置文件中,因为我必须有一些特定的3.x
网络路由。
这是我的路由表:
192.168.3.0 * 255.255.255.0 U 0 0 0 eth1
192.168.1.0 * 255.255.255.0 U 0 0 0 eth0
default 192.168.3.1 0.0.0.0 UG 100 0 0 eth1
default DD-WRT 0.0.0.0 UG 100 0 0 eth0
答案1
不要声明192.168.3.1
为网关。网关几乎意味着“默认路由”。如果接口地址位于 192.168.3.1/24 网络内,那么netmask 255.255.255.0
就足够了。
如果不是这种情况,请将您需要的任何路由添加为接口设置脚本的一部分。在 Debian/Ubuntu 上,up
在 中放入一个子句/etc/network/interfaces
,或在 中添加一个脚本/etc/network/if-up.d
。要运行的命令是route add 192.168.3.1 eth1 && route add -net 192.168.3.0/24 gw 192.168.3.1
答案2
首先执行此操作ip route list
,然后在 eth1 接口上再次检查相同的情况。将相同的内容放入/etc/sysconfig/network-scripts/route-eth1
文件中,以便每次重新启动接口时,都会应用接口文件中的路由配置。另一方面,如果您想专门为其执行某些操作,您可以放入/etc/rc.d/init.dnetwork
脚本在每次网络重新启动时为您执行此操作,它也将读取route-eth1文件并应用路由配置。