[OP]记一次avahi-daemon导致的断网或不稳定现象

幻想 2024年03月10日 60 0

背景

Zeroconf

Zeroconf(零配置)是一个允许计算机和设备在本地网络中自动发现彼此,以及发现服务(如打印机、文件共享等)而无需任何手动配置的技术。这是通过一系列协议实现的,其中最重要的包括多播 DNS (mDNS) 和 DNS 服务发现 (DNS-SD)。

Avahi

介绍

Avahi 是一个开源项目,它实现了 Zeroconf 规范,特别关注于服务发现和网络定位。在 Linux 和其他类 Unix 系统中,Avahi 是非常流行的选择,用于在本地网络中自动发现设备和服务。它根据 GNU 宽通用公共许可证 (LGPL) 获得许可。

核心

Avahi 的主要组件是 avahi-daemon,这是一个在后台运行的守护进程,负责发布和发现本地网络上的服务和主机。当您在本地网络上启动一个服务时,avahi-daemon 会自动为其创建一个 mDNS 记录,这样其他机器就可以通过 DNS 查询找到这个服务。同样,如果您想查找某个类型的服务(例如打印机),Avahi 也可以帮助您找到它。

Avahi 的优势在于它不需要中央的 DNS 服务器。每台机器都在本地创建和维护自己的 DNS 记录,这些记录被存储在内存中的缓存中,从而减少了网络流量和配置复杂性。

总结

总的来说,Avahi 是一个强大的工具,用于在本地网络中实现零配置服务发现。它简化了网络设备的配置和管理,使得设备和服务可以更容易地被用户发现和使用。

Bonjour

Apple 的 Bonjour 是 Zeroconf 规范的另一个实现,它主要用于 MacOS 和 iOS 系统。尽管 Avahi 和 Bonjour 是基于不同的代码库开发的,但它们都遵循相同的协议,因此两者是兼容的。这意味着一个基于 Avahi 的服务可以被 Bonjour 发现,反之亦然。

问题

在使用中,经常发现路由时不时不能访问或者连不上网络。

发现

由于原日志未保存,摘自其他地方的日志:

界面日志

bnx2:eth0 NIC copper link is down

/var/log/messages

Mar 3 19:03:12 d-2-219 avahi-daemon[5816]: Withdrawing address record for 192.168.2.219 on eth0.
Mar 3 19:03:12 d-2-219 avahi-daemon[5816]: Leaving mDNS multicast group on interface eth0.IPv4 with address 192.168.2.219.
Mar 3 19:03:12 d-2-219 avahi-daemon[5816]: iface.c: interface_mdns_mcast_join() called but no local address available.
Mar 3 19:03:12 d-2-219 avahi-daemon[5816]: Interface eth0.IPv4 no longer relevant for mDNS.
Mar 3 19:03:12 d-2-219 avahi-daemon[5816]: Withdrawing address record for fe80::7a2b:cbff:fe08:3ab on eth0.
Mar 3 19:03:12 d-2-219 avahi-daemon[5816]: Leaving mDNS multicast group on interface eth0.IPv6 with address fe80::7a2b:cbff:fe08:3ab.
Mar 3 19:03:12 d-2-219 avahi-daemon[5816]: iface.c: interface_mdns_mcast_join() called but no local address available.
Mar 3 19:03:12 d-2-219 avahi-daemon[5816]: Interface eth0.IPv6 no longer relevant for mDNS.
Mar 3 19:03:17 d-2-219 avahi-daemon[5816]: New relevant interface eth0.IPv6 for mDNS.
Mar 3 19:03:17 d-2-219 avahi-daemon[5816]: Joining mDNS multicast group on interface eth0.IPv6 with address fe80::7a2b:cbff:fe08:3ab.
Mar 3 19:03:17 d-2-219 avahi-daemon[5816]: Registering new address record for fe80::7a2b:cbff:fe08:3ab on eth0.
Mar 3 19:03:17 d-2-219 avahi-daemon[5816]: New relevant interface eth0.IPv4 for mDNS.
Mar 3 19:03:17 d-2-219 avahi-daemon[5816]: Joining mDNS multicast group on interface eth0.IPv4 with address 192.168.2.219.
Mar 3 19:03:17 d-2-219 avahi-daemon[5816]: Registering new address record for 192.168.2.219 on eth0.

结论

从以上日志可以大致猜测出:
由于mDNS频繁的配对导致链路断开。

解决

了解情况后,就知道怎么处理了。

解决

  1. 当网络中没有Zeroconf协议的设备存在时,不要开启Avahi
  2. 当网络中有长期开着的Zeroconf协议的设备时可以开启

关闭Avahi

# 停止avahi-daemon服务
/etc/init.d/avahi-daemon stop
# 禁止avahi-daemon开机启动
/etc/init.d/avahi-daemon disable
# 重启设备,以防止其他冲突
reboot

参照

Last Updated: 2024/03/10 17:36:56
[Docker] /lib/x86_64-linux-gnu/libc.so.6: version `GLIBC_ABI_DT_RELR' not found (required by docker) linux基础_如何查看域名证书详情中的序列号