更改 mdns4 主机名解析的优先级

更改 mdns4 主机名解析的优先级

我们使用的是 Raspberry Pi,它有一个连接到以太网端口的激光雷达。问题是 mdns4_minimal 将 $(hosname).local 解析为两个 IP。一个 IP 是从以太网端口(来自 Lidar)获取的,另一个 IP 是从 WiFi 获取的。这会导致 ROS 出现问题,某些节点获取的是激光雷达的 IP 地址,而不是 WiFi 的 IP 地址,从而导致节点之间无法正确通信。

我认为解决方案可能是更改主机名解析的优先级以优先考虑 WiFi 连接,但我在互联网上没有找到任何说明如何做到这一点。

或者有更好的方法来解决这个问题吗?

答案1

首先,您可以指定名称解析优先级(或者更确切地说,命令) 在/etc/nsswitch.conf

例如,在 Raspbian 11(牛眼)Pi 上,相关部分/etc/nsswitch.conf如下所示:

hosts:          files mdns4_minimal [NOTFOUND=return] dns

例如,如果您将其放在dnsmdns4_minimal 之前,则主机名解析将优先使用 dns 而不是 mdns:

hosts:          files dns mdns4_minimal [NOTFOUND=return]

联机帮助页这里还有一篇详细说明解决顺序的优秀帖子这里

阅读您的评论后,我了解您希望保留 mDNS 解析,但指定哪个接口都参与了这个过程。

deny-interfaces您可以通过将接口添加到中的列表来指示 Avahi 守护进程(负责 mDNS)忽略该接口/etc/avahi/avahi-daemon.conf。来自联机帮助页

deny-interfaces= Set a comma separated list of network interfaces that should be ignored by avahi-daemon. Other not specified interfaces will be used, unless allow-interfaces= is  set.
       This option takes precedence over allow-interfaces=.

然后,使用 重新启动守护进程systemctl restart avahi-daemon

相关内容