Debian 11,resolv.conf 不会永久保存名称服务器设置

Debian 11,resolv.conf 不会永久保存名称服务器设置

Debian 11,我遇到了互联网连接不可用的问题,并且 ping 无法解析域名。该/etc/resolv.conf文件不断被 NetworkManager 覆盖,重新启动后它包含

# Generated by NetworkManager
nameserver ::1 

resolv.conf通过添加条目来编辑文件

# Generated by NetworkManager
nameserver 8.8.8.8 

但这种变化并不持久,重启后就会消失。我过去没有遇到过这个问题,我相信它是在使用 VPN 和 TOR 浏览器后出现的。如何解决这个问题?

编辑:我安装了resolvconf工具,重新启动,但没有更改:

~$ 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
# 127.0.0.53 is the systemd-resolved stub resolver.
# run "resolvectl status" to see details about the actual nameservers.

nameserver ::1

~$ resolvectl status
Failed to get global data: Unit dbus-org.freedesktop.resolve1.service not found.

编辑 2:有两个活动网络连接,一个是路由器,第二个似乎来自 VPN 服务:

~$ nmcli c show TRENDnet752 | grep -i -e name_servers -e dns
connection.mdns:                        -1 (default)
ipv4.dns:                               8.8.8.8
ipv4.dns-search:                        --
ipv4.dns-options:                       --
ipv4.dns-priority:                      0
ipv4.ignore-auto-dns:                   yes
ipv6.dns:                               --
ipv6.dns-search:                        --
ipv6.dns-options:                       --
ipv6.dns-priority:                      0
ipv6.ignore-auto-dns:                   no
IP4.DNS[1]:                             8.8.8.8
~$ nmcli c show pvpn-ipv6leak-protection | grep -i -e name_servers -e dns
connection.mdns:                        -1 (default)
ipv4.dns:                               --
ipv4.dns-search:                        --
ipv4.dns-options:                       --
ipv4.dns-priority:                      0
ipv4.ignore-auto-dns:                   no
ipv6.dns:                               ::1
ipv6.dns-search:                        --
ipv6.dns-options:                       --
ipv6.dns-priority:                      -1400
ipv6.ignore-auto-dns:                   yes
IP6.DNS[1]:                             ::1

编辑 3.我设法使用以下步骤解决了该问题:

sudo systemctl status resolvconf.service
(“Active: active (exited)” message)

Opened the head file:
sudo nano /etc/resolvconf/resolv.conf.d/head

Entered nameservers and saved:

nameserver 8.8.8.8
nameserver 8.8.4.4

Then updated resolv.conf to use the new nameservers:

sudo resolvconf --enable-updates
sudo resolvconf -u

答案1

由于所有 DNS 配置信息显然都来自 NetworkManager,因此下一步是调查 NetworkManager 设置。

首先,使用nmcli cc是“connection/s”的简写)查看已配置的连接列表。如果您有彩色终端,则活动连接将显示为绿色。记下活动连接的名称。

然后,对于每个活动连接,运行:

nmcli c show <connection name here> | grep -i -e name_servers -e dns

替换<connection name here>为您的活动连接的名称(如果您有多个活动连接,则一次一个)。您将看到与每个连接关联的所有 DNS 相关设置。应该::1在那里可见。小写名称的设置应来自 NetworkManager 配置;具有大写名称的设置应由 DHCP 或某些其他自动配置机制生成(例如来自可选附加到 IPv6 路由器咨询数据包的 DNS 解析器信息)。

了解值为 的 NetworkManager DNS 设置的确切名称::1应该可以帮助您(以及我们)确定该设置的实际来源。

在 Debian 中,NetworkManager 可以从三个地方获取其本地配置:

  • 经典 Debian 中的只读/etc/network/interfaces
  • 从文件中/etc/NetworkManager/system-connections
  • 来自针对每个用户设置的桌面环境特定存储方法。

如果您发现::1由自动配置机制指定(您找到一行显示例如IP6.DNS[1]: ::1),您可以使用以下命令覆盖它:

nmcli c modify <connection name here> ipv6.ignore-auto-dns yes

这应该会使 DHCPv6 和基于路由器咨询的 IPv6 DNS 解析器自动配置在该连接上无效。然后您可以使用以下命令配置您选择的 DNS 服务器:

nmcli c modify <connection name here> +ipv4.dns 8.8.8.8

和/或

nmcli c modify <connection name here> +ipv6.dns 2001:4860:4860::8888

或者,如果您希望采用老式方式并让 NetworkManager 完全远离 DNS 解析设置,您可以添加一个名为/etc/NetworkManager/conf.d/DontTouchDNSResolution.conf以下内​​容的文件:

[main]
dns=none
systemd-resolved=false

之后,您可以(并且必须)/etc/resolv.conf手动配置。

答案2

我在 debian 11 上使用 ProtonVPN 客户端后遇到了上述问题。问题是/etc/NetworkManager/system-connections/文件pvpn-ipv6leak-protection.nmconnection在重新启动后仍然存在。删除此文件并重新启动网络解决了该问题。

我能够通过打开与客户端的 VPN 连接来重现该问题,但随后关闭客户端而不显式断开接口中的 VPN 隧道,然后重新启动主机。

相关内容