systemd-resolve --status
当尝试在 Ubuntu 上使用 NetworkManager 的 ModemManager 修复 DNS 问题时,我在连接时的输出中发现了这种差异。 (ping
ip 有效,手动编辑/etc/resolv.conf
可以解决问题,设置 FallbackDNS 也可以解决问题,但都有副作用。
工作安装 - PPP 调制解调器(乌班图17.10)
Link 3 (wwp0s20u6)
Current Scopes: DNS LLMNR/IPv4 LLMNR/IPv6
LLMNR setting: yes
MulticastDNS setting: no
DNSSEC setting: no
DNSSEC supported: no
DNS Servers: 198.142.0.51
211.29.132.12
安装损坏 - PPP 调制解调器(相同硬件 - Lubuntu 17.04)
Link 2 (wwp0s20u6)
Current Scopes: LLMNR/IPv4 LLMNR/IPv6
LLMNR setting: yes
MulticastDNS setting: no
DNSSEC setting: no
DNSSEC supported: no
它们都是 Ubuntu 的版本,并且硬件相同。中的网络连接配置/etc/NetworkManager/system-connections
也相同。
在使用 DHCP 的链接(例如以太网和 Wifi 适配器)上,DNS 范围将添加到链接中,并且 DNS 在两台计算机上都能正常工作。例如
安装损坏 - WiFi 适配器工作正常
Link 3 (wlan0)
Current Scopes: DNS LLMNR/IPv4 LLMNR/IPv6
LLMNR setting: yes
MulticastDNS setting: no
DNSSEC setting: no
DNSSEC supported: no
DNS Servers: 192.168.0.1
所以,我推测这不是它systemd-resolved
本身的问题,而是告诉systemd-resolved
它应该寻找 DNS 的问题。
什么是 systemd 链接“范围”?
为什么一台机器分配“DNS”范围而另一台机器不分配?
答案1
systemd-resolve
是服务的前端systemd-resolved
,它将自己描述为“网络名称解析管理器”。systemd-resolved.service
配置在/etc/systemd/resolved.conf
.该文件可以包含选项DNS=
,该选项应具有 DNS 服务器地址列表作为值。如果缺少此选项,/etc/resolv.conf
则使用此选项。
/etc/resolv.conf
反过来可以是 的符号链接/run/systemd/resolve/resolv.conf
,它由其systemd-resolved
自身维护,或者/etc/resolv.conf
可以由独立于 的其他程序创建systemd-resolved
。
我的猜测是您的 Lubuntu 机器没有DNS=
条目/etc/systemd/resolved.conf
并且/etc/resolv.conf
丢失了,或者它不包含 DNS 服务器条目。
LLMNR (RFC 4794) 代表“链路本地多播名称解析”,是 DNS 解析名称的替代方案。 LLMNR 没有中央服务,但当匹配名称的查询作为多播数据报通过本地 LAN 发送时,每个主机都会使用自己的地址进行响应。顾名思义,LLMNR 仅限于本地网络;它具有链接本地范围。 LLMNR 的一个竞争协议是多播 DNS (RFC 6762)。