运行 CentOS 5.4
为什么我有到 169.254.0.0 的路由,尽管它没有出现在网络 > 以太网设备 > 路由配置对话框中?
Destination Gateway Genmask Flags Metric Ref Use Iface
192.168.1.0 * 255.255.255.0 U 0 0 0 eth2
169.254.0.0 * 255.255.0.0 U 0 0 0 eth2
default 192.168.1.1 0.0.0.0 UG 0 0 0 eth2
我喜欢马塞尔的回答,但它并没有真正解决这个问题。问题是“为什么我有..”,而不是“我怎样才能禁用”。OP 实际上可能不想禁用此路由。
169.254.0.0/16 网络用于自动专用 IP 地址或 APIPA。如果 DHCP 客户端尝试获取地址,但在超时和重试期后未能找到 DHCP 服务器,它将随机假定来自该网络的地址。这允许与未能获得 DHCP 地址的主机进行通信。
从 Red Hat 知识库上的这篇文章:
如何禁用 zeroconf 路由,以便系统在没有 169.254.0.0 / 255.255.0.0 路由的情况下启动?
参加聚会已经很晚了,但我在对相同或类似情况进行故障排除时发现了这一点,并发现了一些需要考虑的额外事项。Realize OP 的盒子可能不再存在,但我认为提供的答案可以扩展一些。也许这将帮助其他发现此问题以寻找相同类型的故障排除的人。
APIPA 路由由 /etc/sysconfig/network-scripts/ifup-eth 中的条件逻辑添加。如果您在设置中递归地查找“169.254”,您可以即时发现这一点:
虽然大多数人都熟悉(并且其他评论已经解决)如果 DHCP 失败,它也会启动,如果与您的接口配置不一致,导致它除了环回之外没有检测到任何真实设备,它也会启动。如果您的接口是 OP 提供的路由所指示的 eth2,但配置文件名为 ifcfg-eth1(例如),或者其内容如此引用它,或者 /etc/sysconfig/network 文件将设备称为eth1 或 eth0(或除 指示之外的任何内容
ip a
),这将导致 APIPA 路由被添加,因为定义的配置引用了不存在的接口名称。您可能会认为情况并非如此,或者您的界面不会显示为已配置。实际上,即使您的界面在 上显示为已完全配置,情况仍然如此
ip a
,例如,如果在 network-scripts/ifcfg-eth2 文件中全部正确,但在 /etc/systconfig/network.xml 中命名错误。禁用 zeroconf是解决此问题的一种方法,但配置问题可能仍以其他方式出现。如果系统(和 DHCP,如果适用)已配置并正常工作,则不会添加 APIPA 路由。这是当事情出错时的应急逻辑,禁用它应该比纠正导致它触发的潜在问题更不受欢迎。
在禁用 Zeroconf 之前,我建议查看:
并查看文件名和内容是否反映了您正在使用的实际接口名称。如果他们没有,而且我认为他们可能没有,请考虑对有问题的错误接口名称进行递归 grep,以查看它是否潜伏在任何其他配置文件中:
然后手动更改它或打破一些 sed :)
完成后,您需要重新启动网络服务以使更改生效,具体取决于您的系统,可能如下所示:
或者
请务必再次检查您的路由表以确保问题已得到解决。如果一切都失败了,我可能会看到禁用 zeroconf 功能,但如果可能的话,我认为最好保留此功能,而不是纠正导致使用此应急功能的潜在问题。