我一直试图改变我的 DNS8.8.8.8
8.8.4.4
但似乎无法做到。
我/etc/resolv.conf
有
# Dynamic resolv.conf(5) file for glibc resolver(3) generated by resolvconf(8)
# DO NOT EDIT THIS FILE BY HAND -- YOUR CHANGES WILL BE OVERWRITTEN
nameserver 127.0.0.1
我/etc/resolvconf/resolv.conf.d/base
添加了
nameserver 8.8.8.8
nameserver 8.8.4.4
并重新加载sudo resolvconf -u
但没有什么改变/etc/resolv.conf
/etc/resolvconf/resolv.conf.d/base
如果我在例如添加ameserver 8.8.8.8
和重新加载时拼写错误,cat /etc/resolv.conf
现在就会显示。
# Dynamic resolv.conf(5) file for glibc resolver(3) generated by resolvconf(8)
# DO NOT EDIT THIS FILE BY HAND -- YOUR CHANGES WILL BE OVERWRITTEN
nameserver 127.0.0.1
ameserver 8.8.8.8
我应该做什么来更改 DNS 以及如何检查它是否有效?
答案1
为了扩展此处的另一个答案,并消除此处的一些混淆,如果您使用网络管理器来管理连接,它还包含一个小版本的 dnsmasq。这就是 resolv.conf 中的 127.* 地址 - dnsmasq 绑定到的 localhost 的 IP 地址。
网络管理器在配置了 DNS 服务器后,会告诉 dnsmasq 将请求中继到哪些 DNS 服务器。
如果您在网络管理器的设置中将 8.8.8.8 设置为您的 DNS 服务器,dnsmasq 会将所有未缓存的请求转发到 8.8.8.8 进行实际解析,而您的计算机会将 DNS 请求直接发送到 dnsmasq 进行处理。
我知道这很令人困惑,但是当您使用网络管理器管理连接时,您不能依赖 resolv.conf 来显示正在使用的 DNS 服务器。
答案2
首先恢复我们在评论中所做的一切。
使用:
$ nmcli device
获取网络管理器的状态:
DEVICE TYPE STATE CONNECTION
enp3s0 ethernet connected myConnection
所以我的界面是enp3s0
,我的连接名称是myConnection
。
我可以检查我的连接正在使用哪个 DNS 服务器:
$ nmcli -f IP4.DNS connection show myConnection
对于你来说我想它会显示:
ipv4.dns: 127.0.0.1
现在让我们设置您想要的 DNS 服务:
nmcli connection modify myConnecion ipv4.dns "8.8.8.8, 8.8.4.4"
全部重新加载连接后:
nmcli connection down myConnecion
nmcli connection up myConnecion
然后检查/etc/resolv.conf
:
cat /etc/resolv.conf
如果它仍然说您正在使用127.0.0.1
作为您的 DNS 服务器,那么很有可能您正在使用“dnsmasq”,以确保运行:
sudo ss -pln sport = 53
您应该dnsmasq
以在端口 53 上监听的进程形式获取名称,因此一切正常并且您使用正确的 DNS 名称服务,127.0.0.1 只是您和您设置的服务器之间的一层。
如果您想要真正看到“8.8.8.8”,那么/etc/resolv.conf
您应该禁用“dnsmasq”。
打开此文件:
/etc/NetworkManager/NetworkManager.conf
改成。dns=dnsmasq
#dns=dnsmasq
最后:
sudo systemctl restart NetworkManager
现在/etc/resolv.conf
再检查一下。