20.04 中的 .local 域名解析问题

20.04 中的 .local 域名解析问题

我的 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.localhost.mytest.local通常是 FQDN,但是 Mint 和 Ubuntu 正在将域添加到 DNS 请求中,因此它看起来像这样:

**host.mytest.local.mydomain.com**

我已将两个域添加到我的 DHCP 服务器中的域搜索列表中。现在一切正常。

相关内容