更新(2021 年 12 月 6 日):
avahi 或 libnss_mdns 中似乎有一个错误,请参阅https://github.com/lathiat/nss-mdns/issues/81
时机不佳。
我有 2 台运行 Debian 11 的单板计算机,其中没有一台能够使用开箱即用的 mDNS 解析 .local 域中的任何主机。这是运行时 ping 的输出本地垃圾:
brain@junk:~$ ping atom.local
ping: atom.local: Name or service not known
pinging原子局部在我运行 Ubuntu 的电脑上,工作正常:
brain@home:~$ ping atom.local
PING atom.local (192.168.0.135) 56(84) bytes of data.
64 bytes from atomic (192.168.0.135): icmp_seq=1 ttl=64 time=0.394 ms
使用 Ubuntu 21.10、Windows 和 iOS 都可以通过名称“atom.local”和“junk.local”访问它们。硬件相同,两台机器都通过路由器上的 DHCP 服务获取网络设置。上原子局部网络由网络(基本服务器安装)管理,在本地垃圾- 通过 NetworkManager(桌面 + KDE 安装)。我尝试了很多指南,配置 avahi、nsswitch、systemd-resolved、NetworkManager,但没有一个对我有用。修改 /etc/resolv.conf 我得到了一些结果
- 名称服务器 192.168.0.1这是默认的 DNS 服务器(我的路由器),无法解析 .local 主机。如果我使用 ISP 的 DNS 服务器,结果相同。
- 名称服务器 127.0.0.1.local 名称已被解析,由于显而易见的原因,没有其他任何内容。
- 名称服务器 127.0.0.53我从我的 Ubuntu PC 上复制了它,一切正常!另外,我使用 Google 的 8.8.8.8 得到相同的结果
现在我有一个问题:如何正确配置 mDNS?为什么它与 Google DNS 服务器运行良好?在阅读了该网站上的大量指南和答案后,我有点困惑。
在我的 nsswitch.conf 中我有这一行:
hosts: files mdns4_minimal [NOTFOUND=return] dns
avahi 解决和avahi 浏览在这些机器上运行良好。
如果我使用 127.0.0.53 或 8.8.8.8 作为名称服务器,我将获得 IPV6 地址
brain@junk:~$ getent hosts atom.local
fe80::207:32ff:fe4e:7d17 atom.local
那么这mdns4_minimal
根本没有任何作用吗?现在我完全困惑了。
答案1
对于最小的服务器安装,使用组合就足够了systemd-networkd+systemd 解析。
sudo nano /etc/systemd/resolved.conf
取消注释MulticastDNS=yes
sudo nano /etc/systemd/network/10-lan.network
我使用了简单的配置:
[Match]
Name=enp1s0 #Put your interface here
[Network]
DHCP=ipv4
MulticastDNS=yes
使能够网络化和解决服务,启动它们:
sudo systemctl enable systemd-networkd
sudo systemctl enable systemd-resolved
sudo systemctl start systemd-networkd
sudo systemctl start systemd-resolved
禁用/屏蔽默认网络服务:
sudo systemctl disable networking
重命名或删除旧的网络内容,此步骤对于保留/etc/resolv.conf受控制于解决服务:
sudo mv /etc/network/interfaces /etc/network/interfaces.save
终于成功了,耶!