我有一台远程 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 版本,如果您运行的是其他版本,请在问题中注明。