[Feedback on issues] 安装systemd-resolve后系统自带浏览器无法访问网站
Tofloor
poster avatar
黑色的白兔
deepin
2026-10-12 15:38
Author

参考https://bbs.deepin.org.cn/post/265260的操作,安装systemd-resolve,

yc.tian@yc:~$ sudo apt update
sudo apt install systemd-resolved
请输入密码:
验证成功
忽略:1 https://download.docker.com/linux/debian bookworm InRelease
命中:3 http://repo.mysql.com/apt/debian bookworm InRelease                                                                                                        
获取:2 https://app-store-files.uniontech.com/261012144250845/appstorev23 crimson InRelease [7,661 B]       
忽略:1 https://download.docker.com/linux/debian bookworm InRelease                     
命中:5 https://cdn-community-packages.deepin.com/driver-25 snipe InRelease  
获取:6 https://app-store-files.uniontech.com/261012144250845/appstorev23 crimson/appstore amd64 Packages [844 kB]
命中:4 https://community-packages.deepin.com/beige crimson InRelease
忽略:1 https://download.docker.com/linux/debian bookworm InRelease
命中:1 https://download.docker.com/linux/debian bookworm InRelease                                                                                                
已下载 852 kB,耗时 9秒 (91.6 kB/s)                                                                                                                               
正在读取软件包列表... 完成
正在分析软件包的依赖关系树... 完成
正在读取状态信息... 完成     
有 1 个软件包可以升级。请执行 ‘apt list --upgradable’ 来查看它们。
正在读取软件包列表... 完成
正在分析软件包的依赖关系树... 完成
正在读取状态信息... 完成     
下列软件包是自动安装的并且现在不需要了:
  libpolkit-qt5-1-1
使用'sudo apt autoremove'来卸载它(它们)。
将会同时安装下列软件:
  libnss-resolve
下列【新】软件包将被安装:
  libnss-resolve systemd-resolved
升级了 0 个软件包,新安装了 2 个软件包,要卸载 0 个软件包,有 1 个软件包未被升级。
需要下载 442 kB 的归档。
解压缩后会消耗 1,106 kB 的额外空间。
您希望继续执行吗? [Y/n] y
获取:1 https://cdn-community-packages.deepin.com/beige crimson/main amd64 systemd-resolved amd64 255.2-4deepin31 [324 kB]
获取:2 https://cdn-community-packages.deepin.com/beige crimson/main amd64 libnss-resolve amd64 255.2-4deepin31 [118 kB]
已下载 442 kB,耗时 2秒 (283 kB/s)  
正在选中未选择的软件包 systemd-resolved。
(正在读取数据库 ... 系统当前共安装有 289766 个文件和目录。)
准备解压 .../systemd-resolved_255.2-4deepin31_amd64.deb  ...
正在解压 systemd-resolved (255.2-4deepin31) ...
正在选中未选择的软件包 libnss-resolve:amd64。
准备解压 .../libnss-resolve_255.2-4deepin31_amd64.deb  ...
正在解压 libnss-resolve:amd64 (255.2-4deepin31) ...
正在设置 systemd-resolved (255.2-4deepin31) ...
Converting /etc/resolv.conf to a symlink to /run/systemd/resolve/stub-resolv.conf...
Creating group 'systemd-resolve' with GID 982.
Creating user 'systemd-resolve' (systemd Resolver) with UID 982 and GID 982.
Created symlink /etc/systemd/system/dbus-org.freedesktop.resolve1.service → /usr/lib/systemd/system/systemd-resolved.service.
Created symlink /etc/systemd/system/sysinit.target.wants/systemd-resolved.service → /usr/lib/systemd/system/systemd-resolved.service.
正在设置 libnss-resolve:amd64 (255.2-4deepin31) ...
正在处理用于 deepin-immutable-ctl (1.0.39) 的触发器 ...
triggered: regenerating systemd unit overrides
正在处理用于 man-db (2.13.1-1) 的触发器 ...
正在处理用于 dbus (1.16.2-2deepin1) 的触发器 ...
正在处理用于 libc-bin (2.38-6deepin30) 的触发器 ...
yc.tian@yc:~$ sudo systemctl enable --now systemd-resolved
yc.tian@yc:~$ sudo ln -sf /run/systemd/resolve/stub-resolv.conf /etc/resolv.conf
yc.tian@yc:~$ systemctl reload NetworkManager
yc.tian@yc:~$ cat /etc/resolv.conf
# This is /run/systemd/resolve/stub-resolv.conf managed by man:systemd-resolved(8).
# Do not edit.
#
# This file might be symlinked as /etc/resolv.conf. If you're looking at
# /etc/resolv.conf and seeing this text, you have followed the symlink.
#
# This is a dynamic resolv.conf file for connecting local clients to the
# internal DNS stub resolver of systemd-resolved. This file lists all
# configured search domains.
#
# Run "resolvectl status" to see details about the uplink DNS servers
# currently in use.
#
# Third party programs should typically not access this file directly, but only
# through the symlink at /etc/resolv.conf. To manage man:resolv.conf(5) in a
# different way, replace this symlink by a static file or a different symlink.
#
# See man:systemd-resolved.service(8) for details about the supported modes of
# operation for /etc/resolv.conf.

nameserver 127.0.0.53
options edns0 trust-ad
search .
yc.tian@yc:~$ # ss -tulpn | grep "127.0.0.53"
yc.tian@yc:~$ ss -tulpn | grep "127.0.0.53"
udp   UNCONN 0      0                           127.0.0.53%lo:53         0.0.0.0:*                       
tcp   LISTEN 0      4096                        127.0.0.53%lo:53         0.0.0.0:*                       
yc.tian@yc:~$ resolvectl status
Global
         Protocols: +LLMNR -mDNS -DNSOverTLS DNSSEC=no/unsupported
  resolv.conf mode: stub

Link 2 (enp0s25)
    Current Scopes: DNS LLMNR/IPv4 LLMNR/IPv6
         Protocols: +DefaultRoute +LLMNR -mDNS -DNSOverTLS DNSSEC=no/unsupported
Current DNS Server: 223.5.5.5
       DNS Servers: 223.5.5.5 119.29.29.29 2400:3200::1 2402:4e00::

Link 3 (wlp3s0)
    Current Scopes: none
         Protocols: -DefaultRoute +LLMNR -mDNS -DNSOverTLS DNSSEC=no/unsupported

Link 4 (docker0)
    Current Scopes: LLMNR/IPv4 LLMNR/IPv6
         Protocols: -DefaultRoute +LLMNR -mDNS -DNSOverTLS DNSSEC=no/unsupported

Link 5 (vethbc2cbfc)
    Current Scopes: LLMNR/IPv6
         Protocols: -DefaultRoute +LLMNR -mDNS -DNSOverTLS DNSSEC=no/unsupported
yc.tian@yc:~$ vim /etc/NetworkManager/NetworkManager.conf

[1]+  已停止               vim /etc/NetworkManager/NetworkManager.conf
yc.tian@yc:~$ sudo vim /etc/NetworkManager/NetworkManager.conf
yc.tian@yc:~$ cat /etc/NetworkManager/NetworkManager.conf
[main]
plugins=ifupdown,keyfile
dns=systemd-resolved
[ifupdown]
managed=false
yc.tian@yc:~$ sudo systemctl restart NetworkManager
yc.tian@yc:~$ resolvectl status
Global
         Protocols: +LLMNR -mDNS -DNSOverTLS DNSSEC=no/unsupported
  resolv.conf mode: stub

Link 2 (enp0s25)
    Current Scopes: DNS LLMNR/IPv4 LLMNR/IPv6
         Protocols: +DefaultRoute +LLMNR -mDNS -DNSOverTLS DNSSEC=no/unsupported
Current DNS Server: 223.5.5.5
       DNS Servers: 223.5.5.5 119.29.29.29 2400:3200::1 2402:4e00::

Link 3 (wlp3s0)
    Current Scopes: none
         Protocols: -DefaultRoute +LLMNR -mDNS -DNSOverTLS DNSSEC=no/unsupported

Link 4 (docker0)
    Current Scopes: LLMNR/IPv4 LLMNR/IPv6
         Protocols: -DefaultRoute +LLMNR -mDNS -DNSOverTLS DNSSEC=no/unsupported

Link 5 (vethbc2cbfc)
    Current Scopes: LLMNR/IPv6
         Protocols: -DefaultRoute +LLMNR -mDNS -DNSOverTLS DNSSEC=no/unsupported

然后使用系统自带浏览器打开百度和论坛,发现均无法打开,使用edge打开百度和论坛,页面打开正常;应用商店打开也是正常的。这重启能解决吗?

image.png

Reply Favorite View the author
All Replies
avatar
在月光下等候清晨
deepin
2026-10-12 16:15
#1

为什么要搞DNS加密呢?浏览器高度依赖DNS,严格遵循操作系统设置的DNS服务器,动DNS最影响的就是浏览器。建议还原网络设置,卸载systemd-resolve,自己折腾搞出来的问题,自己处理啊。

系统自带浏览器:走标准 glibc 解析

Edge 浏览器:内置了 Secure DNS(DoH)和备用解析

应用商店正常,是因为有 HTTPDNS、预置 IP、长连接等备用机制。Edge 在这里扮演的是浏览器里的“特权应用”——它自带 DNS 备用方案,所以表现得像应用商店一样“抗 DNS 故障”。


如果你想让自带浏览器也恢复正常,按以下顺序检查:

1. 最可能的原因:浏览器缓存了旧的 DNS 或使用了 DoH

Deepin 自带浏览器(基于 Chromium)默认可能开启了 Secure DNS(DoH),或者内部缓存了旧的解析结果。

1.1 检查自带浏览器的 Secure DNS 设置

打开自带浏览器,进入:

text

设置 → 隐私和安全 → 安全 → 使用安全 DNS
  • 如果它是开启状态,并且指向了一个不可达的 DoH 服务器,那么浏览器会绕过系统 DNS,直接去连那个 DoH,结果失败。
  • 把它改成 “关闭” 或 “使用当前服务提供商”,再测试。

1.2 清除浏览器 DNS 缓存

Chromium 系浏览器内置 DNS 缓存:

  • 地址栏输入 chrome://net-internals/#dns,点击 Clear host cache。
  • 再进 chrome://net-internals/#sockets,点击 Flush socket pools。

然后重启浏览器再试。


2. 系统里可能有残留的旧 DNS 配置

你虽然把 /etc/resolv.conf 软链到了 stub,但 NetworkManager 可能还在别处写 DNS。检查:

2.1 查看 NetworkManager 是否真的把 DNS 交给了 resolved

bash

nmcli dev show enp0s25 | grep -i dns

如果这里显示的 DNS 和你 resolvectl status 里一致(223.5.5.5 等),说明 NM 已经正确交给 resolved。

2.2 检查是否有其他程序在改 /etc/resolv.conf

bash

ls -l /etc/resolv.conf

应该是:

text

/etc/resolv.conf -> /run/systemd/resolve/stub-resolv.conf

如果指向别的地方,或者是个普通文件,说明被覆盖了。

2.3 检查 /etc/nsswitch.conf

libnss-resolve 已经安装,但要让系统真正走 resolved,nsswitch.conf 里 hosts: 行必须包含 resolve:

bash

grep '^hosts:' /etc/nsswitch.conf

正常应该是类似:

text

hosts: mymachines resolve [!UNAVAIL=return] files myhostname dns

如果只有 files dns,说明 libnss-resolve 没生效,浏览器可能还在走旧的 glibc 解析路径。可以手动改成:

text

hosts: mymachines resolve [!UNAVAIL=return] files myhostname dns

3. 验证解析是否真的正常

在终端里直接测:

bash

# 走 stub
dig @127.0.0.53 www.baidu.com

# 走系统解析器(glibc)
getent hosts www.baidu.com

# 走 resolvectl
resolvectl query www.baidu.com
  • 如果 dig @127.0.0.53 成功,但 getent hosts 失败 → nsswitch.conf 问题。
  • 如果 getent hosts 成功,但浏览器仍打不开 → 浏览器自身问题(DoH、代理、缓存)。
  • 如果 resolvectl query 成功,但 dig @127.0.0.53 失败 → stub listener 没正常工作(但你 ss 已经看到 53 端口在听,所以这条基本排除)。

4. 检查浏览器是否走了代理

Deepin 自带浏览器可能继承了系统的代理设置。如果系统代理指向了一个不可用的地址,浏览器会连代理失败,而 Edge 可能自己配置了直连。

bash

gsettings get org.gnome.system.proxy mode
env | grep -i proxy

如果 mode 是 manual 或 auto,而代理不可用,可以临时关掉:

bash

gsettings set org.gnome.system.proxy mode 'none'

然后重启浏览器。


5. 一个容易忽略的点:IPv6

你的 resolvectl status 里 DNS 服务器包含 IPv6 地址(2400:3200::1、2402:4e00::)。如果系统启用了 IPv6 但实际没有 IPv6 连通性,浏览器可能优先尝试 IPv6 解析,导致超时。

测试:

bash

ping6 2400:3200::1

如果不通,可以在 /etc/systemd/resolved.conf 里临时禁用 IPv6 DNS,或让 NM 只下发 IPv4 DNS。

Reply View the author
avatar
黑色的白兔
deepin
2026-10-12 16:27
#2
在月光下等候清晨:

为什么要搞DNS加密呢?浏览器高度依赖DNS,严格遵循操作系统设置的DNS服务器,动DNS最影响的就是浏览器。建议还原网络设置,卸载systemd-resolve,自己折腾搞出来的问题,自己处理啊。

系统自带浏览器:走标准 glibc 解析

Edge 浏览器:内置了 Secure DNS(DoH)和备用解析

应用商店正常,是因为有 HTTPDNS、预置 IP、长连接等备用机制。Edge 在这里扮演的是浏览器里的“特权应用”——它自带 DNS 备用方案,所以表现得像应用商店一样“抗 DNS 故障”。


如果你想让自带浏览器也恢复正常,按以下顺序检查:

1. 最可能的原因:浏览器缓存了旧的 DNS 或使用了 DoH

Deepin 自带浏览器(基于 Chromium)默认可能开启了 Secure DNS(DoH),或者内部缓存了旧的解析结果。

1.1 检查自带浏览器的 Secure DNS 设置

打开自带浏览器,进入:

text

设置 → 隐私和安全 → 安全 → 使用安全 DNS
  • 如果它是开启状态,并且指向了一个不可达的 DoH 服务器,那么浏览器会绕过系统 DNS,直接去连那个 DoH,结果失败。
  • 把它改成 “关闭” 或 “使用当前服务提供商”,再测试。

1.2 清除浏览器 DNS 缓存

Chromium 系浏览器内置 DNS 缓存:

  • 地址栏输入 chrome://net-internals/#dns,点击 Clear host cache。
  • 再进 chrome://net-internals/#sockets,点击 Flush socket pools。

然后重启浏览器再试。


2. 系统里可能有残留的旧 DNS 配置

你虽然把 /etc/resolv.conf 软链到了 stub,但 NetworkManager 可能还在别处写 DNS。检查:

2.1 查看 NetworkManager 是否真的把 DNS 交给了 resolved

bash

nmcli dev show enp0s25 | grep -i dns

如果这里显示的 DNS 和你 resolvectl status 里一致(223.5.5.5 等),说明 NM 已经正确交给 resolved。

2.2 检查是否有其他程序在改 /etc/resolv.conf

bash

ls -l /etc/resolv.conf

应该是:

text

/etc/resolv.conf -> /run/systemd/resolve/stub-resolv.conf

如果指向别的地方,或者是个普通文件,说明被覆盖了。

2.3 检查 /etc/nsswitch.conf

libnss-resolve 已经安装,但要让系统真正走 resolved,nsswitch.conf 里 hosts: 行必须包含 resolve:

bash

grep '^hosts:' /etc/nsswitch.conf

正常应该是类似:

text

hosts: mymachines resolve [!UNAVAIL=return] files myhostname dns

如果只有 files dns,说明 libnss-resolve 没生效,浏览器可能还在走旧的 glibc 解析路径。可以手动改成:

text

hosts: mymachines resolve [!UNAVAIL=return] files myhostname dns

3. 验证解析是否真的正常

在终端里直接测:

bash

# 走 stub
dig @127.0.0.53 www.baidu.com

# 走系统解析器(glibc)
getent hosts www.baidu.com

# 走 resolvectl
resolvectl query www.baidu.com
  • 如果 dig @127.0.0.53 成功,但 getent hosts 失败 → nsswitch.conf 问题。
  • 如果 getent hosts 成功,但浏览器仍打不开 → 浏览器自身问题(DoH、代理、缓存)。
  • 如果 resolvectl query 成功,但 dig @127.0.0.53 失败 → stub listener 没正常工作(但你 ss 已经看到 53 端口在听,所以这条基本排除)。

4. 检查浏览器是否走了代理

Deepin 自带浏览器可能继承了系统的代理设置。如果系统代理指向了一个不可用的地址,浏览器会连代理失败,而 Edge 可能自己配置了直连。

bash

gsettings get org.gnome.system.proxy mode
env | grep -i proxy

如果 mode 是 manual 或 auto,而代理不可用,可以临时关掉:

bash

gsettings set org.gnome.system.proxy mode 'none'

然后重启浏览器。


5. 一个容易忽略的点:IPv6

你的 resolvectl status 里 DNS 服务器包含 IPv6 地址(2400:3200::1、2402:4e00::)。如果系统启用了 IPv6 但实际没有 IPv6 连通性,浏览器可能优先尝试 IPv6 解析,导致超时。

测试:

bash

ping6 2400:3200::1

如果不通,可以在 /etc/systemd/resolved.conf 里临时禁用 IPv6 DNS,或让 NM 只下发 IPv4 DNS。

多谢指导。👍

Reply View the author
avatar
deepinuser17
deepin
2026-10-15 08:05
#3

其实systemd-resolve就是把 /etc/resolv.conf 里的DNS 地址改成了本地地址(127.0.0.1) , 然后再运行一个服务去连接默认的DNS 服务器。这个服务器的 IP 地址本来就在 /etc/resolv.conf, 而且是由NetworkManager/DHCP 动态设置的,当然也可以手动设置。对于家用机器来说,这个地址就是路由器的地址。 如果出了问题, 很容易排查。用上了systemd-resolve以后, 又多了一项服务,让最基本域名解析功能更复杂, 出了问题也更难排查。 纯属多此一举。

/etc/resolv.conf的样本:

# Generated by NetworkManager
nameserver 192.168.1.1
nameserver 1.1.1.1

另外,域名解析一旦搞坏了, 不只是浏览器,整个机器都无法正常工作了。 就像家里断电了, 冰箱,电视,微波炉全动无法工作,而不是仅仅电视无法看的问题。

Reply View the author
avatar
黑色的白兔
deepin
2026-10-15 14:18
#4
deepinuser17:

其实systemd-resolve就是把 /etc/resolv.conf 里的DNS 地址改成了本地地址(127.0.0.1) , 然后再运行一个服务去连接默认的DNS 服务器。这个服务器的 IP 地址本来就在 /etc/resolv.conf, 而且是由NetworkManager/DHCP 动态设置的,当然也可以手动设置。对于家用机器来说,这个地址就是路由器的地址。 如果出了问题, 很容易排查。用上了systemd-resolve以后, 又多了一项服务,让最基本域名解析功能更复杂, 出了问题也更难排查。 纯属多此一举。

/etc/resolv.conf的样本:

# Generated by NetworkManager
nameserver 192.168.1.1
nameserver 1.1.1.1

另外,域名解析一旦搞坏了, 不只是浏览器,整个机器都无法正常工作了。 就像家里断电了, 冰箱,电视,微波炉全动无法工作,而不是仅仅电视无法看的问题。

大概是这个意思吧:找了个第三方中转站,中转站如果出问题,整个服务就凉凉了。对于一般人来说,这个好像是鸡肋的,还有可能引发出更多的问题。

那我还是卸载了吧,徒增影响体验的因素,不值得。

Reply View the author