为什么要搞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。


中文 


参考https://bbs.deepin.org.cn/post/265260的操作,安装systemd-resolve,
然后使用系统自带浏览器打开百度和论坛,发现均无法打开,使用edge打开百度和论坛,页面打开正常;应用商店打开也是正常的。这重启能解决吗?