这是来自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 表中出现未知的路由,也不喜欢服务/守护进程浪费我的系统资源。