如何摆脱169.254.0.0路由?

如何摆脱169.254.0.0路由?

这是来自route -n命令。

Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         192.168.1.x     0.0.0.0         UG    600    0        0 <wifi>
169.254.0.0     0.0.0.0         255.255.0.0     U     1000   0        0 <wifi>
192.168.1.0     0.0.0.0         255.255.255.0   U     600    0        0 <wifi>

我努力了:

1)禁用 ufw 并从终端运行(与启用 ufw 相同):

sudo route del -net 169.254.0.0 gw 0.0.0.0

得到SIOCDELRT: Invalid argument

2)注释文件link-local 169.254.0.0中的行/etc/networks并重新启动。

3)avahi-deamon由于似乎相关所以被禁用。

什么都不起作用,我使用静态 IP,但当我连接到路由器并运行时,route -n command它总是出现在那里。所以。你们还有其他想法吗?

更新:

感谢以下答案,我查看了avahi-autoipd手册页并设法找到了解决方案。要删除路由:

sudo route del -net 169.254.0.0 netmask 255.255.0.0 dev <interface> metric 1000

您的网络接口在哪里<interface>,例如 wlan0。但是,这只会将其删除,直到下一次网络关联,因为它会再次生成。因此,要使其永久存在,您需要修改文件/etc/network/if-up.d/avahi-autoipd,即生成的根目录。

我注释掉了代码的最后部分:

#if [ -x /bin/ip ]; then
    # route already present?
    #ip route show | grep -q '^169.254.0.0/16[[:space:]]' && exit 0

    #/bin/ip route add 169.254.0.0/16 dev $IFACE metric 1000 scope link
#elif [ -x /sbin/route ]; then
    # route already present?
    #/sbin/route -n | egrep -q "^169.254.0.0[[:space:]]" && exit 0

    #/sbin/route add -net 169.254.0.0 netmask 255.255.0.0 dev $IFACE metric 1000
#fi

答案1

您无需执行任何操作。169.254.0.0 路由通常存在于具有互联网连接的每个人中。以下是我的机器的路由信息​​:

chili@T440p:~$ route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         192.168.0.1     0.0.0.0         UG    600    0        0 wlp3s0
169.254.0.0     0.0.0.0         255.255.0.0     U     1000   0        0 wlp3s0
192.168.0.0     0.0.0.0         255.255.255.0   U     600    0        0 wlp3s0

请参见:https://serverfault.com/questions/132657/where-route-to-169-254-0-0-comes-from

尤其参见:

169.254.0.0/16 网络用于自动专用 IP 寻址 (APIPA)。如果 DHCP 客户端尝试获取地址,但在超时和重试期限后仍未找到 DHCP 服务器,它将随机假定此网络中的地址。这允许与未能获取 DHCP 地址的主机进行通信。

简而言之,进入是完全正常的。

答案2

您正确地假设该路线来自 avahi。

禁用avahi-deamon可能还不够,因为您的 DHCP 客户端可能被配置avahi-autoipd为在 DHCP 请求失败时设置链接本地 IP。

我会尝试以下几件事:

  • 添加一行deny-interfaces=wifi(这是你的网络接口的名称,对吗?)/etc/avahi/avahi-daemon.conf
  • 因为您使用的是静态 IP,所以请禁用 DHCP 客户端(dhcpcd?)
  • 作为这个答案建议,您可以直接卸载avahi-daemon。当然,这相当于用压路机打死苍蝇,但它会起作用

答案3

我已经这样解决了:

iface eth1 inet static
    address 192.168.0.2
    netmask 255.255.255.0
    gateway 192.168.0.1
    pre up ip r d 169.254.0.0/16

只需在网络启动时删除路由即可。在 Rhel 发行版中,配置 Zeroconf 很容易,但我在 Debian/Ubuntu 中找不到方法。不过,这应该能解决问题。

答案4

只需将其全部删除,在 Ubuntu 22 上对我来说效果很好:

sudo apt-get remove avahi-autoipd avahi-daemon avahi-utils

我不喜欢我的网络上出现不必要的流量、我的 IP 表中出现未知的路由,也不喜欢服务/守护进程浪费我的系统资源。

相关内容