Ubuntu
更改 mdns4 主機名解析的優先級
我們使用的是一個 Raspberry Pi,它有一個連接到乙太網埠的雷射雷達。問題是 mdns4_minimal 將 $(hosname).local 解析為兩個 IP。一個 IP 來自乙太網埠(來自 Lidar),另一個來自 WiFi。這會導致 ROS 出現問題,即某些節點獲取雷射雷達的 IP 地址而不是 WiFi 的 IP 地址,從而導致節點之間無法正確通信。
我認為解決方案可能是更改主機名解析的優先級以優先考慮 WiFi 連接,但我沒有在網際網路上找到有關如何執行此操作的任何說明。
或者有沒有更好的方法來解決這個問題?
首先,您可以在
/etc/nsswitch.conf
.例如,在 Raspbian 11 (bullseye) Pi 上,相關部分
/etc/nsswitch.conf
如下所示:hosts: files mdns4_minimal [NOTFOUND=return] dns
例如,如果你把
dns
mdns4_minimal 放在前面,主機名解析將有利於 dns 而不是 mdns:hosts: files dns mdns4_minimal [NOTFOUND=return]
閱讀您的評論後,我了解您希望保持 mDNS 解析到位,但指定該過程涉及哪些介面。
您可以指示 Avahi 守護程序(負責 mDNS)通過將介面添加
deny-interfaces
到/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
。