You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用systemd配置DNSOverTLS时如何解决DNS泄漏问题

使用systemd配置DNSOverTLS时如何解决DNS泄漏问题

我完全懂你现在的困扰:明明Quad9的专属检测页面显示你已经在使用它的服务,但dnsleaktest却测出了其他DNS地址,这种“不一致”确实让人摸不着头脑。结合你已经做的操作(禁用IPv6、NetworkManager里设IPv4为自动仅地址并清空DNS列表),咱们来一步步排查并解决这个DNS泄漏问题:

核心问题分析

Kubuntu 22.04默认用systemd-resolved管理DNS服务,你之前的操作可能没完全让systemd-resolved接管全局DNS,或者它的DNSOverTLS配置没正确生效,导致部分请求还是走了其他DNS。

具体解决步骤

  • 第一步:确认systemd-resolved状态
    先检查这个服务是否在正常运行,打开终端输入:

    systemctl status systemd-resolved
    

    如果显示active (running)就没问题,要是没运行,先启动并设置开机自启:

    sudo systemctl start systemd-resolved && sudo systemctl enable systemd-resolved
    
  • 第二步:配置systemd-resolved的DNSOverTLS
    编辑systemd-resolved的主配置文件:

    sudo nano /etc/systemd/resolved.conf
    

    把文件里的内容修改成下面这样(去掉注释符号#):

    [Resolve]
    DNS=9.9.9.9
    FallbackDNS=149.112.112.112
    DNSOverTLS=yes
    DNSSEC=allow-downgrade
    

    简单解释下:

    • DNS=9.9.9.9:指定主用Quad9 DNS地址
    • FallbackDNS=149.112.112.112:Quad9的备用地址,防止主地址不可用
    • DNSOverTLS=yes:强制启用DNS over TLS加密传输
    • DNSSEC=allow-downgrade:开启DNSSEC验证,同时兼容不支持DNSSEC的网络环境

    保存文件(按Ctrl+O,回车确认,再按Ctrl+X退出编辑器)。

  • 第三步:重启服务让配置生效
    重启systemd-resolved和NetworkManager,确保配置同步生效:

    sudo systemctl restart systemd-resolved
    sudo systemctl restart NetworkManager
    
  • 第四步:验证配置是否生效
    用下面的命令查看当前DNS配置详情:

    resolvectl status
    

    找到你当前连接的WiFi(比如wlo1对应的TP-LINK_58DE),检查输出里的DNS Servers是不是9.9.9.9,并且DNSOverTLS状态是yes或者active。

  • 第五步:排查其他潜在的DNS服务
    有些系统可能还会运行dnsmasq这类第三方DNS服务,抢占DNS请求,你可以检查它的状态:

    systemctl status dnsmasq
    

    如果显示正在运行,就停止并禁用它:

    sudo systemctl stop dnsmasq && sudo systemctl disable dnsmasq
    

最后验证

完成上面的步骤后,关闭所有浏览器重新打开,再去dnsleaktest测试,应该就只会显示Quad9的DNS地址了。

备注:内容来源于stack exchange,提问作者boernsen

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.17 09:59:51