每次启动计算机时,我的 DNS 都不起作用。/etc/resolv.conf
我看到:
# Generated by Connection Manager
nameserver ::1
nameserver 127.0.0.1
我看到这/etc/resolv.conf
是一个软链接/run/connman/resolv.conf
使用此配置,我的 DNS 无法工作(例如:无法使用 Chrome/Firefox 浏览网页,dig google.com 不显示 IP,ping 显示“名称或服务未知”)。因此,我手动将名称服务器更改::1
为某个有效 IP(如 1.1.1.1 或 8.8.8.8)。每次打开电脑时,我都需要这样做。
我不知道 Ubuntu 17.10 是否预装了 connman(Intel 连接管理器守护程序),或者我在尝试安装 VPN 客户端时安装了它。在网上搜索后,似乎我没有标准配置。因此,我尝试停止该服务,但随后我失去了连接,并且在(NetworkManager?)小程序中看不到可用的网络。
我可以看到 connmand 正在监听端口 53(但解析不佳),并且 systemd-resolve 也在监听端口 53(但连接到 127.0.0.53):
sudo netstat -tulpn | grep ":53 "
tcp 0 0 127.0.0.1:53 0.0.0.0:* LISTEN 21159/connmand
tcp6 0 0 ::1:53 :::* LISTEN 21159/connmand
udp 0 0 127.0.0.1:53 0.0.0.0:* 21159/connmand
udp 0 0 127.0.0.53:53 0.0.0.0:* 1451/systemd-resolv
udp6 0 0 ::1:53 :::* 21159/connmand
如果我执行systemd-resolve --status
,它会给我正确的 DNS。
重新链接/etc/resolv.conf
到/run/systemd/resolve/resolv.conf
也解决了我的问题。
那么,我该如何禁用 connman(至少作为 DNS 代理)并重新启用systemd-resolve
?connman 是否默认安装在 Ubuntu 17.10 上?
答案1
抱歉,这很简单:
删除 connman:
sudo apt remove connman
删除 resolv.conf:
sudo rm /etc/resolv.conf
重新链接到 /run/systemd/resolve/resolv.conf
sudo ln -s /run/systemd/resolve/resolv.conf /etc/resol.conf
最后两个步骤是必要的,因为没有/etc/resolv.conf
由 connman 管理,NetworkManager 对其进行管理,将“127.0.1.1”作为 DNS 服务器(并且那里没有服务器监听)。
NetworkManager 的手册页说,它需要systemd-resolve
管理的就是在任意 systemd 目录下resolve.conf
建立一个到文件的软链接。resolv.conf