温馨提示×

如何保护Linux域名的隐私

小樊
50
2026-01-08 14:56:09
栏目: 云计算

Linux 域名隐私保护实用指南

一 核心思路

  • 对域名查询进行加密传输(如 DNS over TLS/HTTPS),避免本地网络或上游运营商窥探查询内容。
  • 启用DNSSEC进行数据完整性校验,降低被投毒或篡改的风险(注意:DNSSEC 不提供查询隐私)。
  • 减少链路外泄:关闭本地链路多播解析(如 LLMNRmDNS),避免局域网内被动嗅探。
  • 谨慎选择公共 DNS 服务商,明确其隐私政策与日志策略,并尽量使用多服务器冗余轮询/随机策略分散暴露面。

二 方案一 systemd-resolved 配置 DNS over TLS 与 DNSSEC

  • 编辑全局配置(示例选用 Cloudflare 1.1.1.1Quad9 9.9.9.9 的 DoT 服务):
    • 文件:/etc/systemd/resolved.conf
    • 建议内容:
      [Resolve]
      DNS=1.1.1.1 9.9.9.9
      FallbackDNS=8.8.8.8 1.0.0.1 8.8.4.4
      DNSOverTLS=yes
      DNSSEC=yes
      # 如无需局域网发现,建议关闭以减少外泄
      LLMNR=no
      MulticastDNS=no
      
  • NetworkManager 使用 systemd-resolved(创建:/etc/NetworkManager/conf.d/10-dns-systemd-resolved.conf):
    [main]
    dns=systemd-resolved
    
  • 使配置生效:
    sudo systemctl start systemd-resolved
    sudo systemctl enable systemd-resolved
    sudo systemctl restart NetworkManager
    
  • 验证要点:
    • 解析状态应显示 DoT 与 DNSSEC 已启用:
      resolvectl status
      
    • 本地存根解析器应监听 127.0.0.53
      cat /etc/resolv.conf
      # 期望看到:nameserver 127.0.0.53
      ss -lntp | grep ':53'
      
    • 发起一次解析并确认“已认证”与 DoT 生效:
      resolvectl query fedoraproject.org
      
    • 抓包核验(过滤 tcp.port == 853)应仅见 TLS 加密流量。

三 方案二 nss-tls 实现系统级 DoH(透明覆盖所有应用)

  • 适用场景:希望绝大多数应用无需改造即可走 DoH 的系统级方案(基于 glibc NSS)。
  • 安装与启用(以 Debian 系为例,其他发行版请参考项目文档):
    sudo apt update && sudo apt install libglib2.0-dev libsoup2.4-dev ninja-build python3-pip
    pip3 install meson
    git clone https://github.com/dimkr/nss-tls.git
    cd nss-tls
    meson --prefix=/usr --buildtype=release -Dstrip=true build
    ninja -C build install
    sudo systemctl daemon-reload
    sudo systemctl enable --now nss-tlsd
    sudo ldconfig
    
  • 让系统解析走 nss-tls(编辑 /etc/nsswitch.conf):
    hosts: files tls dns mymachines
    
  • 可按需为各用户启用用户级实例:
    systemctl --user --global enable nss-tlsd
    systemctl --user start nss-tlsd
    
  • 说明与优势:
    • 对应用透明,无需修改代码或浏览器设置。
    • 支持多 DoH 服务器每用户缓存,分散跟踪风险并提升命中率。

四 进阶与替代方案

  • 使用 dnscrypt-proxy 统一代理 DoH/DoT:
    • 作为本地 DNS 代理,在客户端与上游之间建立加密通道,可与多种上游(DoH/DoT)组合,适合需要灵活上游选择本地策略控制的场景。
    • 部署步骤通常包括:安装 dnscrypt-proxy、配置上游地址与策略、将系统或应用的 DNS 指向本地代理(如 127.0.0.1:53),并验证解析与加密状态。

五 验证与运维清单

  • 基础检查
    • 确认解析器与端口:
      resolvectl status
      cat /etc/resolv.conf
      ss -lntp | grep ':53'
      
    • 发起解析并核对“已认证”(DoT/DoH 场景):
      resolvectl query example.com
      
  • 抓包核验
    • DoT:过滤 tcp.port == 853;应仅见 TLS 握手与加密记录。
    • DoH:过滤 http(s)dns 关键词;应仅见 HTTPS 流量。
  • 隐私加固
    • 关闭本地链路发现以减少被动嗅探:
      sudo resolvectl set-llmnr wlan0 no
      sudo resolvectl set-mdns wlan0 no
      
    • 定期刷新缓存并观察解析时延与失败率:
      resolvectl flush-caches
      
  • 策略建议
    • 优先选择明确无日志/少日志的公共 DNS,并配置多上游轮询/随机策略,降低单一上游的全局视图能力。

0