我正在使用 Ubuntu 14.04 并安装了 avahi。
我可以正确解析 .local 主机名,但无法访问已解析的链路本地 IP 地址。例如:
$ ping thebox.local
PING thebox.local (169.254.197.130) 56(84) bytes of data.
[...]
(no answer)
如果我检查路由表,我会发现没有链路本地网络的条目:
$ route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 192.168.0.100 0.0.0.0 UG 0 0 0 eth0
192.168.0.0 0.0.0.0 255.255.255.0 U 1 0 0 eth0
网络管理器(或 avahi)不应该在那里自动为 169.254.xx 创建一个条目吗?
答案1
经过进一步研究,我发现确实会自动创建 169.254.xx 的路由(由/etc/avahi/avahi-autoipd.action
特定人员创建),但仅当 DHCP 失败且为机器分配了链路本地 IP 时才会创建。如果稍后通过 DHCP 获取 IP 地址,也会自动删除此路由。
我知道这个路由是自动创建的,但我认为它总是会创建的。现在我看到它仅在分配了链路本地 IP 地址时才会创建。
更新:我想知道为什么默认情况下不创建此路由。这样就可以与仅具有链路本地地址的设备进行通信,即使 Ubuntu 本身不使用链路本地地址。这很好地描述了在这篇来自 Apple 的技术文章中。