我正在运行Ubuntu 18.04(从某些早期版本升级),该版本使用网络管理器和systemd-resolved进行名称解析。当我开机,我的以太网连接enp0s31f6
,通过网络管理提出并通过DHCP给予3个的域名服务器地址,10.1.13.10
,10.1.141.10
,10.1.13.36
。运行nmcli
显示“ DNS配置”下的三个名称服务器。运行systemd-resolve --status
显示它们在“链接2(enp0s31f6)”部分下。我可以对每个人执行ping操作。没有其他连接处于活动状态。
testuser ☼ systemd-resolve --status
Global
DNS Domain: (my org's domain)
DNSSEC NTA: 10.in-addr.arpa
16.172.in-addr.arpa
168.192.in-addr.arpa
17.172.in-addr.arpa
18.172.in-addr.arpa
19.172.in-addr.arpa
20.172.in-addr.arpa
21.172.in-addr.arpa
22.172.in-addr.arpa
23.172.in-addr.arpa
24.172.in-addr.arpa
25.172.in-addr.arpa
26.172.in-addr.arpa
27.172.in-addr.arpa
28.172.in-addr.arpa
29.172.in-addr.arpa
30.172.in-addr.arpa
31.172.in-addr.arpa
corp
d.f.ip6.arpa
home
internal
intranet
lan
local
private
test
Link 3 (wlp4s0)
Current Scopes: none
LLMNR setting: yes
MulticastDNS setting: no
DNSSEC setting: no
DNSSEC supported: no
Link 2 (enp0s31f6)
Current Scopes: DNS
LLMNR setting: yes
MulticastDNS setting: no
DNSSEC setting: no
DNSSEC supported: no
DNS Servers: 10.1.13.10
10.1.141.10
10.1.13.36
DNS Domain: (my org's domain)
但是,当我实际尝试解析一个名称时,甚至是其中一个名称服务器的名称,都dig
声称“连接超时:无法访问任何服务器”。
testuser ☼ dig dcpdc001.(my org's domain)
; <<>> DiG 9.11.3-1ubuntu1.1-Ubuntu <<>> dcpdc001.(my org's domain)
;; global options: +cmd
;; connection timed out; no servers could be reached
请注意,此名称应解析为10.1.13.10
,第一个名称服务器。
我已配置resolvconf
为使用动态更新。/etc/resolv.conf
指向/run/resolvconf/resolv.conf
。该文件仅包含(非注释):
nameserver 127.0.0.53
search (my orgs local search domain)
如果我nameserver 10.1.13.10
手动添加到此文件,突然dig
可以再次解析,而需要查看本地名称的其他任何内容都可以这样做。删除名称服务器会再次破坏这一点。
我对服务器了解不多。它们是基于Windows的网络的一部分,但是如果我resolv.conf
手动进行编辑,则可以使用它们,因此我认为这不是问题,这意味着我不需要向域进行身份验证即可使用它们。(我可以使用Realmd / SSSD通过Ubuntu通过域进行身份验证,但是如果无法解析域控制器,则无法进行身份验证...)
的journalctl
条目systemd-resolved
仅显示一些有关“为DNS服务器使用降级的功能集...”的消息,但它们仅引用第三个名称服务器,而不是其他名称服务器。主域名服务器没有任何内容。
如何在无需resolv.conf
每次启动时都手动编辑的情况下进行名称解析?
我以为我的resolv.conf
意思是说Network Manager或Systemd有某种正在运行的本地缓存解析器?如果是这样,绕过它会解决问题吗?
我提高了的日志记录级别,systemd-resolved
并journalctl -f -u systemd-resolved
显示:
Jul 20 10:33:23 heerij-ubuntu systemd-resolved[2352]: Got DNS stub UDP query packet for id 19836
Jul 20 10:33:23 heerij-ubuntu systemd-resolved[2352]: Looking up RR for dcpdc001.(org domain) IN A.
Jul 20 10:33:23 heerij-ubuntu systemd-resolved[2352]: Switching to DNS server 10.1.13.10 for interface enp0s31f6.
Jul 20 10:33:23 heerij-ubuntu systemd-resolved[2352]: Cache miss for dcpdc001.(org domain) IN A
Jul 20 10:33:23 heerij-ubuntu systemd-resolved[2352]: Transaction 12728 for <dcpdc001.(org domain) IN A> scope dns on enp0s31f6/*.
Jul 20 10:33:23 heerij-ubuntu systemd-resolved[2352]: Using feature level UDP+EDNS0+DO+LARGE for transaction 12728.
Jul 20 10:33:23 heerij-ubuntu systemd-resolved[2352]: Using DNS server 10.1.13.10 for transaction 12728.
Jul 20 10:33:23 heerij-ubuntu systemd-resolved[2352]: Sending query packet with id 12728.
Jul 20 10:33:23 heerij-ubuntu systemd-resolved[2352]: Processing query...
Jul 20 10:33:23 heerij-ubuntu systemd-resolved[2352]: Timeout reached on transaction 12728.
Systemd带有一个“ stub”解析器,由systemd-resolved解决,根据他们的说法,它实际上并不是要用作DNS服务器:
好吧,解析不应该是一台DNS服务器,它应该足够好,以便类似libc的DNS客户端可以解析它们的内容,并且我们携带足够的信息来设置AD位。
无论出于何种原因,Ubuntu都配置为将其用作DNS服务器,并且实际上是唯一的服务器。
一个注释上的bug#1624320指出,systemd分辨有三种操作模式,而第二个就是固定我的问题。即:
$ sudo rm -f /etc/resolv.conf
$ sudo ln -s /run/systemd/resolve/resolv.conf /etc/resolv.conf
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句