我使用 avahi 查找本地网络上的机器。它最近出现故障,导致一台机器发出错误的 IP。我通过 ssh 连接到另一台机器来调试该问题。
确认当前解析的IP是错误的:
$ getent hosts evan-woodtower.local
172.17.0.1 evan-woodtower.local
重新启动 avahi 守护进程似乎可以解决该问题:
$ sudo avahi-daemon -k
$ getent hosts evan-woodtower.local
10.88.111.9 evan-woodtower.local
但只持续了几秒钟,它就回到了原来的错误 IP
$ getent hosts evan-woodtower.local
172.17.0.1 evan-woodtower.local
发生了什么事?我已在网络上的多台机器上进行了测试,这似乎是唯一出错的查找。我访问过的任何机器似乎都与此主机存在同样的问题,而且只有此主机存在同样的问题。
答案1
因此,这原来是avahi-daemon
更改附加到.local
名称的网络接口的问题。我原本希望它使用br0
,但有时会切换到 docker 虚拟接口。
docker0: flags=4099<UP,BROADCAST,MULTICAST> mtu 1500
inet 172.17.0.1 netmask 255.255.0.0 broadcast 172.17.255.255
ether 02:42:8a:98:79:93 txqueuelen 0 (Ethernet)
RX packets 0 bytes 0 (0.0 B)
RX errors 0 dropped 2 overruns 0 frame 0
TX packets 0 bytes 0 (0.0 B)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
解决方案是编辑/etc/avahi/avahi-daemon.conf
以强制 avahi 仅查看br0
界面:
allow-interfaces=br0