tek*_*aul 5 networking dns systemd
有人知道 systemd-resolve voodo 是如何工作的吗?
192.168.1.30是我网络的正确 DNS 服务器,由 DHCP 返回。
/etc/resolv.conf 指着 127.0.0.53
Systemd 声称使用了正确的服务器。
systemd-resolve --status | grep "DNS Servers"
192.168.1.30
Run Code Online (Sandbox Code Playgroud)
但是 dig 表示它不是转发请求如果我指定了可以解析的服务器 shadowbox
dig @192.168.1.30 shadowbox
; <<>> DiG 9.16.1-Ubuntu <<>> @192.168.1.30 shadowbox
...
;; ANSWER SECTION:
shadowbox. 60 IN A 192.168.1.34
...
Run Code Online (Sandbox Code Playgroud)
systemd-resolve 不能
dig @127.0.0.53 shadowbox
; <<>> DiG 9.16.1-Ubuntu <<>> @127.0.0.53 shadowbox
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: SERVFAIL, id: 60161
;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 0, ADDITIONAL: 1
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 65494
;; QUESTION SECTION:
;shadowbox. IN A
;; Query time: 0 msec
;; SERVER: 127.0.0.53#53(127.0.0.53)
;; WHEN: Sun Jun 07 14:00:12 CEST 2020
;; MSG SIZE rcvd: 38
Run Code Online (Sandbox Code Playgroud)
我试过弹跳服务器,刷新并手动设置服务器
systemd-resolve --flush-caches
systemd-resolve --set-dns=192.168.1.30 --interface=enp0s31f6
Run Code Online (Sandbox Code Playgroud)
我可以chattr +i /etc/resolv.conf重新获得对 DNS 的控制,但是很高兴知道为什么 systemd 不起作用,因为我失去了 DHCP 的好处。
看起来这是设计使然。Pottering通过一个 wont-fix解决了这个问题https://github.com/systemd/systemd/issues/2514 。
dig @127.0.0.53 shadowbox
Run Code Online (Sandbox Code Playgroud)
systemd-resolved不支持 DNS 上的简单名称,仅支持 FQDN,并忽略搜索指令。
在 /etc/systemd/resolved.conf 中添加上游 dns
[Resolve]
DNS=192.168.1.123
重新开始service systemd-resolved restart
检查与systemd-resolve --status
全球DNS服务器:192.168.1.123
在本地网络接口的配置文件(与名称模式/etc/systemd/network/*.network匹配的文件)中,指定使用选项从 DHCP 服务器获取本地 DNS 服务器地址DHCP=:
[Network]
DHCP=yes
Run Code Online (Sandbox Code Playgroud)
还要确保 resolvconf 不会干扰:
systemd-resolved 将使用 /etc/resolv.conf 与网络管理器一起开箱即用。不需要特殊配置,因为 systemd-resolved 将通过 /etc/resolv.conf 符号链接来检测。systemd-networkd 或 NetworkManager 就是这种情况。
但是,如果 DHCP 和 VPN 客户端使用 resolvconf 程序来设置名称服务器和搜索域(有关使用 resolvconf 的软件列表,请参阅 openresolv#Users),则需要附加软件包 systemd-resolvconf 来提供 /usr/bin/ resolvconf 符号链接。注意:systemd-resolved 的 resolvconf 接口有限,可能不适用于所有客户端,请参阅resolvectl(1) 了解更多信息。(来自维基百科)
| 归档时间: |
|
| 查看次数: |
3036 次 |
| 最近记录: |