我的 DNS 服务器的域名在 .local 区域。在 /etc/nsswitch.conf 中更改优先级并将包含我的域名的子配置添加到 /etc/systemd/resolved.conf.d/ 后,尝试解析此域名时出现 servfail 错误(本地缓存服务器找不到我的域名)。在 resolvectl 输出中,我的域名在 Global 部分可用,但不适用于接口。在其他系统(18.04 和 20.04)中一切正常。怀疑它与 systemd 更改有关,但不知道该如何修复它。用 /run/systemd/resolve/resolv.conf 替换 /etc/resolv.conf 链接不适合我。我的部分配置: /etc/systemd/resolved.conf
[Resolve]
Domains=mydomain.com ~local ~mydomain.local ~myseconddomain.local
/etc/nsswitch.conf
hosts: files dns mdns4_minimal
部分resolvectl输出
Global
Protocols: -LLMNR -mDNS -DNSOverTLS DNSSEC=no/unsupported
resolv.conf mode: stub
DNS Domain: mydomain.com
~local ~mydomain.local ~myseconddomain.local
Link 2 (enp0s3)
Current Scopes: DNS
Protocols: +DefaultRoute +LLMNR -mDNS -DNSOverTLS DNSSEC=no/unsupported
Current DNS Server: 10.0.2.3
DNS Servers: 10.0.2.3
DNS Domain: mydomain.com
答案1
avahi
我遇到了同样的问题,发现它比 更容易使用systemd-resolved
。解决在 Ubuntu 上启动并运行 mDNS 所需的只是
sudo apt-get install avahi-daemon
就是这样。
免责声明:我不知道这个解决方案有什么缺点,所以如果我遗漏了什么,请发表评论。
答案2
我在 Linux Mint 21 上尝试设置网络打印机时遇到了完全相同的问题。经过几个小时的搜索,我偶然发现了这篇博文这证实了手册页所暗示的内容。
本质上,您必须启用MulticastDNS
(又名mDNS
)连接到路由器的接口,这通常是您的 wlan。
所以首先修改/etc/systemd/resolved.conf
[Resolve]
# Uncomment and set these values
DNS=192.168.1.1
Domains=local
MulticastDNS=yes
LLMNR=no
您已正确识别出修改此文件仅影响Global
输出部分resolvectl status
。为了更改其他配置链接你必须.network
为每个创建一个单独的条目关联(在我的例子中,wlan 链接有名称wlp2s0
;在下面的步骤中使用您自己的名称)。
现在创建一个新文件
sudo touch /etc/systemd/network/wlp2s0.network
在该文件中,指定wlp2s0
关联
[Match]
Name=wlp2s0
[Network]
DHCP=yes
MulticastDNS=yes
LLMNR=no
之后,systemd-networkd
如果默认未启用,则启用并启动
sudo systemctl enable systemd-networkd
sudo systemctl start systemd-networkd
然后检查wlp2s0.network
配置是否已加载
networkctl list
哪个应该打印
IDX LINK TYPE OPERATIONAL SETUP
1 lo loopback carrier unmanaged
2 enp1s0 ether no-carrier unmanaged
3 wlp2s0 wlan routable configured
最后重启sytstemd-resolved
sudo systemctl restart systemd-resolved
并检查状态
systemctl status
应该说
Global
Protocols: -LLMNR +mDNS -DNSOverTLS DNSSEC=no/unsupported
resolv.conf mode: foreign
Current DNS Server: 192.168.1.1
DNS Servers: 192.168.1.1
DNS Domain: local
Link 2 (enp1s0)
Current Scopes: none
Protocols: -DefaultRoute +LLMNR -mDNS -DNSOverTLS DNSSEC=no/unsupported
Link 3 (wlp2s0)
Current Scopes: DNS mDNS/IPv4 mDNS/IPv6
Protocols: +DefaultRoute -LLMNR +mDNS -DNSOverTLS DNSSEC=no/unsupported
Current DNS Server: 192.168.1.1
DNS Servers: 192.168.1.1 xxxx:xxx:xxxx:xxxx::x
DNS Domain: Home
现在您可以尝试 ping 您的.local
域名
ping myprinter.local
答案3
我在 Ubuntu 22.04 和 Linux Mint 21.2 中遇到了同样的问题。问题是域被添加到了 DNS 请求中。
例如,您正在使用mydomain.com
并且在内部您也想使用mytest.local
。
host.mytest.local
通常是 FQDN,但是 Mint 和 Ubuntu 正在将域添加到 DNS 请求中,因此它看起来像这样:
**host.mytest.local.mydomain.com**
我已将两个域添加到我的 DHCP 服务器中的域搜索列表中。现在一切正常。