Ter*_*den 72 dns systemd-resolved
我最近升级到 17.10。当我尝试浏览某个网站或 ping 一个域时,它失败并说该站点无法解析。
network-admin示出的内容/etc/resolv.conf是nameserver: 127.0.0.53
如果我将其更改为 8.8.8.8 或 208.67.222.222,则一切正常。直到我重新启动。
重新启动或恢复后,名称服务器将重置为 127.0.0.53。
如何将名称服务器永久设置为有效?
对于 systemd 粉丝,如果我运行,systemd-resolve --status我会得到
Link 3 (wlo1)
Current Scopes: LLMNR/IPv4 LLMNR/IPv6
LLMNR setting: yes
MulticastDNS setting: no
DNSSEC setting: no
DNSSEC supported: no
Run Code Online (Sandbox Code Playgroud)
如果我按照此问题的建议进行操作 - DNS 在重新启动后会不断重置。Ubuntu 17.10 - DNS 仍然无法解析。
osc*_*919 50
你可以安装一个包resolvconf,它会修改/etc/resolv.conf系统启动时建立的方式。
sudo apt install resolvconf
Run Code Online (Sandbox Code Playgroud)
然后您可以创建或修改文件/etc/resolvconf/resolv.conf.d/tail。如果你在这个文件里放了一行nameserver 8.8.8.8,这行会/run/resolvconf/resolv.conf在启动时添加到末尾。 /etc/resolv.conf现在将是该文件的符号链接。
后脚本:
在发布我的答案将近两年后,我遇到了https://bugs.launchpad.net/ubuntu/+source/ppp/+bug/1778946,这正是为什么仅仅安装resolvconf解决了我当时遇到的 dns 问题的原因。我觉得我必须在这里分享这个。
虽然我的回答以适当的方式解决了这个问题,但确实应该添加一个警告,如果您想要/需要这样做,可能还有其他问题。当时@intelfx 已经说明了这一点,127.0.0.53 应该自己工作。
根据该错误报告,在 pptp VPN 出现故障后,resolv.conf会以错误的访问权限恢复。 ping ubuntu.com不工作,sudo ping ubuntu.com做。安装resolvconf解决了它,因为它接管了resolv.conf,用正确的权限恢复它。systemd-resolve在这种情况下更改设置不是解决方案,因为错误在ppp. 但是另一种可能更简单的解决方案是sudo chmod a+r /etc/resolv.conf在 VPN 关闭之后。这可以通过在 /etc/NetworkManager/dispatcher.d 中放置一个可执行脚本来自动化,内容如下:
#!/bin/sh
if [[ "$1"="ppp0" && "$2"="vpn-down" ]]; then
/bin/chmod a+r /etc/resolv.conf
fi
Run Code Online (Sandbox Code Playgroud)
在所有情况下,内容resolv.conf都不会改变。而且,是的,我知道由于安全问题必须避免使用 pptp,但当时我认为它是 ubuntu 新手的一个很好的练习。我想它会开箱即用。我几乎不知道它会让我头疼,正如@intelfx 诊断的那样。
int*_*lfx 37
在正确的解决办法是要修复systemd分辨,而不是试图用断头台来治偏头痛。
如果使用得当,它确实是一个不错的工具。
看你的systemd-resolve --status输出...
Run Code Online (Sandbox Code Playgroud)Link 3 (wlo1) Current Scopes: LLMNR/IPv4 LLMNR/IPv6 LLMNR setting: yes MulticastDNS setting: no DNSSEC setting: no DNSSEC supported: no
...您的网络管理器工具不会将每个接口的 DNS 配置传达给 systemd-resolved。
最新版本的 NetworkManager 将检测是否/etc/resolv.conf是已解析生成的文件 (/run/systemd/resolve/*.conf或/usr/lib/systemd/resolv.conf)的符号链接,如果是,则直接与已解析的文件通信。
或者,最近版本的 systemd-resolved 尝试通过安装正确的resolvconf二进制文件来与历史的 resolvconf 接口兼容。
虽然这两种解决方案中的任何一种都是首选,但如果您正在寻找快速而肮脏的解决方案,您可以配置 systemd-resolved 以在全球范围内使用您的 DNS 服务器:
$ cat /etc/systemd/resolved.conf
<...>
[Resolve]
DNS=8.8.8.8 8.8.4.4
<...>
Run Code Online (Sandbox Code Playgroud)
然后重新启动systemd-resolved.service或重新启动。
jmu*_*sch 12
在systemd范式内工作将 DNS 添加到链接/设备
使用ubuntu 17.10+添加*.network文件:
sudo nano /lib/systemd/network/100-somecustom.network:
100-somecustom.network(100 可以是任何优先级数字,它需要.network文件扩展名):
[Match]
Name=wlo1 # the device name here
[Network] # add multiple DNS
DNS=8.8.8.8
DNS=208.67.222.222
Run Code Online (Sandbox Code Playgroud)
然后重启:
sudo service systemd-networkd restart
Run Code Online (Sandbox Code Playgroud)
还要看:
netplan apply
Run Code Online (Sandbox Code Playgroud)
然后检查:
systemd-resolve --status wlo1
Run Code Online (Sandbox Code Playgroud)
从信息页面info systemd.network:
此外
/etc/systemd/network,还可以将插入的“.d”目录放置在 /lib/systemd/network 或 /run/systemd/network目录中。/etc 中的插入文件优先于 /run 中的文件,而 /run 又优先于 /lib 中的文件。任何这些目录下的插入文件都优先于位于任何位置的主 netdev 文件。(当然,由于 /run 是临时的,而 /usr/lib 是供供应商使用的,所以不太可能在这两个地方使用插件。)
另一种方法禁用DNSStubListenerfor 使用dnsmasq:
sudo nano /etc/systemd/resolved.conf:
#
DNSStubListener=false
Run Code Online (Sandbox Code Playgroud)
有关的:
小智 10
我使用 Lubuntu 和 Kubuntu 18.04。我能够通过 2 个步骤克服 DNS 问题:
第一步:安装unbound并设置它来替换systemd-resolved为格雷Ç显示在这里。
sudo systemctl disable systemd-resolved
sudo systemctl stop systemd-resolved
sudo systemctl enable unbound-resolvconf
sudo systemctl enable unbound
Run Code Online (Sandbox Code Playgroud)
重启
以 root 身份打开文件 /etc/NetworkManager/NetworkManager.conf
(sudo leafpad /etc/NetworkManager/NetworkManager.conf在 Lubuntu 18.04 或 Kubuntu 18.04 中SUDO_EDITOR=kate sudoedit /etc/NetworkManager/NetworkManager.conf)
下面[main]放这一行:
dns=unbound
Run Code Online (Sandbox Code Playgroud)
再次重启
第二步:如果重启后问题仍然没有解决,就像我的情况一样,以 root 身份启动文件管理器,转到/etc,删除resolv.conf并创建一个新的resolv.conf. 将其留空并重新启动操作系统。在我的情况下,重新启动后问题消失了。
在 Kubuntu 18.04 中,您无法以 root 身份启动 Dolphin,因此您可以/etc先从那里打开终端,然后键入sudo su并按Enter以将其作为 root 使用,然后resolv.conf使用命令删除rm resolv.conf。然后你可以在桌面上创建一个新的空文件,命名它resolv.conf并从那里打开一个终端。使用sudo su命令输入终端根模式,然后复制到新的resolv.conf从桌面到/etc与命令cp resolv.conf /etc。
补充一下,我没有在安装之前尝试做第二步unbound,所以下次我会这样做,只是看看它是否足够。
小智 8
我正在使用 Ubuntu 18.04 LTS。我不知道我的操作系统如何突然出现这个问题,而我的 DNS 已经工作了好几个月了。这是我的解决方案:
$ sudo apt install resolvconf
找到 的来源/etc/resolv.conf。
$ ls -al /etc/resolv.conf
表明这/etc/resolv.conf是一个符号链接/run/resolvconf/resolv.conf
我发现:该文件/run/resolvconf/resolv.conf由以下部分组成:
/etc/resolvconf/resolv.conf.d/head
/run/resolvconf/interface/systemd-resolved
/etc/resolvconf/resolv.conf.d/tail
Run Code Online (Sandbox Code Playgroud)
$ cat /run/resolvconf/interface/systemd-resolved显示nameserver 127.0.0.53,重启后将被重置。
看来nameserver <my DNS>需要放在前面nameserver 127.0.0.53才能工作。
所以我nameserver <my DNS>在末尾添加/etc/resolvconf/resolv.conf.d/head。
$ sudo resolvconf -u
小智 5
这就是我更改接口配置上的 DNS 记录的方法。
$ vi /etc/netplan/50-cloud-init.yaml
Run Code Online (Sandbox Code Playgroud)
更改名称服务器地址,之前是 .4,然后我将其更改为 .3:
...
nameservers:
addresses:
- 192.168.1.3
...
Run Code Online (Sandbox Code Playgroud)
保存配置,然后应用配置:
$ sudo netplan apply
Run Code Online (Sandbox Code Playgroud)
之后重新启动resolvectl服务。
$ sudo systemctl restart systemd-resolved.service
Run Code Online (Sandbox Code Playgroud)
注意:我确实重新启动了服务器,并且我所做的更改仍然完好无损。我使用该resolvectl dns命令来验证 dns 记录。
| 归档时间: |
|
| 查看次数: |
194395 次 |
| 最近记录: |