从 Linux 路由表中删除未指定的网关

从 Linux 路由表中删除未指定的网关

我有一台远程 Linux 机器,其路由表如下:

[root@hostname]# route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         0.0.0.0         0.0.0.0         U     0      0        0 eth0
10.10.10.16    0.0.0.0         255.255.255.240 U     0      0        0 eth0
169.254.0.0     0.0.0.0         255.255.0.0     U     1002   0        0 eth0

我应该使用的默认网关是 10.10.10.17,应该由 Linux DHCP 服务器提供。因此,为了能够连接到系统,我打电话给网站上的某个人,请他手动添加路由 (路由添加默认网关 10.10.10.17)。添加路由后,我现在可以连接到系统。连接后,当我再次检查路由表时,我看到了以下内容:

[root@hostname]# route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         10.10.10.17    0.0.0.0         UG    0      0        0 eth0 (UG flag means it's up and is the gateway)
0.0.0.0         0.0.0.0         0.0.0.0         U     0      0        0 eth0
10.10.10.16    0.0.0.0         255.255.255.240 U     0      0        0 eth0
169.254.0.0     0.0.0.0         255.255.0.0     U     1002   0        0 eth0

当我重新启动系统时,它启动时没有正确的默认网关,我不得不再次调用以手动设置路由。dhclient 租约文件有很好的“选项路由器”从 dhcp 服务器获取。

现在我试图从路由表中删除未指定的路由,但每次尝试时我都会与机器断开连接。

我尝试过以下不同的方法:

route del -net 0.0.0.0 netmask 0.0.0.0 metric 0

route del default gw 0.0.0.0

route del -net 0.0.0.0 gw 0.0.0.0

三次尝试都导致我与服务器断开连接,另一边的人告诉我,每次我尝试删除路由时,默认路由都会变成星号(默认 *)。我不得不让他手动重新添加路线,当我连接上后,我重新启动网络,却再次失去连接。

所以我的问题是:1) 为什么这个未指定的默认路由每次都会出现?2) 我怎样才能(有什么办法)在不破坏路由表(丢失良好的默认网关)的情况下将其删除。


etho 配置:

[PRD][root@UAE-DBX-LX105 jcdprod]# cat /etc/sysconfig/network-scripts/ifcfg-eth0 
# Generated by parse-kickstart 
UUID=b6a65dbe-6524-4070-b4b7-3cb2b1333187 
BOOTPROTO=dhcp 
DEVICE=eth0 
ONBOOT=yes 
IPV6INIT=no 
PERSISTENT_DHCLIENT=yes

答案1

169.254.0.0 的路由是零配置 IPv4 特殊块 (169.254.0.0/16),如 RFC 3927 中所述。从您当前的路由表来看,169.254.0.0/16 设置为网络路由而不是默认网关,因此您不需要将其删除。

如果您仍想禁用该路由,只需运行:

echo 'NOZEROCONF=yes' >> /etc/sysconfig/network

我还建议您添加以下内容,这将解决重新启动后默认网关不出现的问题:

echo 'GATEWAY=10.10.10.17' >> /etc/sysconfig/network

然后重新启动网络服务:

service network restart

注意:如果您的提供商更改了网关,这将再次给您带来问题。您应该检查 dnsclient 的问题是什么,为什么它拒绝正确添加默认网关。您可以通过粘贴 /etc/sysconfig/network-scripts/ifcfg-eth0 的内容来帮助我们找到问题所在。

注2:这些命令适用于 CentOS 5.x 和 6.x 以及一些较旧的 Fedora 版本,如果您运行的是其他版本,请在问题中注明。

相关内容