Stubby

出自 ArchWiki

Stubby 是一个应用程序,充当本地 DNS 隐私桩解析器(使用 DNS-over-TLS)。Stubby 加密从客户端机器(桌面或笔记本电脑)发送到 DNS 隐私解析器的 DNS 查询,从而提高最终用户隐私。

安装

安装 stubby 软件包。

配置

要配置 stubby,请执行以下步骤

选择解析器

安装后,Stubby 具有一些默认解析器。它们可以在 /etc/stubby/stubby.yml 中找到和编辑。您可以使用默认值,取消注释预先编写的解析器之一,或从此列表中找到另一个解析器。

有效解析器配置示例

/etc/stubby/stubby.yml
upstream_recursive_servers:

# The Cloudflare server
- address_data: 1.1.1.1
    tls_port: 853
    tls_auth_name: "cloudflare-dns.com"

# The Surfnet/Sinodun servers
 - address_data: 145.100.185.15
    tls_auth_name: "dnsovertls.sinodun.com"
    tls_pubkey_pinset:
      - digest: "sha256"
        value: 62lKu9HsDVbyiPenApnc4sfmSYTHOVfFgL3pyB+cBL4=

当您收到警告日志抱怨错误的 tls_pubkey_pinset 时,tls_pubkey_pinset 值可能错误,并且 tls_pubkey_pinsetvalue 可以使用以下命令生成

$ echo | openssl s_client -connect address_data:tls_port 2>/dev/null | openssl x509 -pubkey -noout | openssl pkey -pubin -outform der | openssl dgst -sha256 -binary | openssl enc -base64
注意: 有关配置 Stubby 的更多信息,请参阅 Configuring Stubby

修改 resolv.conf

选择解析器后,修改 resolv.conf 文件,并将当前解析器地址集替换为 localhost 的地址

/etc/resolv.conf
nameserver ::1
nameserver 127.0.0.1
options trust-ad

其他程序可能会覆盖此设置;有关详细信息,请参阅 resolv.conf#Overwriting of /etc/resolv.conf

启动 systemd 服务

最后,启动/启用 stubby.service

技巧和提示

本地 DNS 缓存配置

Stubby 没有内置 DNS 缓存,因此每个查询都会被传输和解析,这可能会减慢连接速度。设置 DNS 缓存需要安装和配置单独的 DNS 缓存器。

更改端口

为了转发到本地 DNS 缓存,Stubby 应该监听与默认端口 53 不同的端口,因为 DNS 缓存本身需要监听 53 端口,并在不同的端口上查询 Stubby。端口号 53000 在本节中用作示例。在此示例中,端口号大于 1024,因此 stubby 不需要以 root 身份运行。

编辑 listen_addresses 的值如下

/etc/stubby/stubby.yml
listen_addresses:
  - 127.0.0.1@53000
  -  0::1@53000
dnsmasq

将 dnsmasq 配置为本地 DNS 缓存。与 Stubby 配合使用的基本配置如下

/etc/dnsmasq.conf
no-resolv
proxy-dnssec
server=::1#53000
server=127.0.0.1#53000
listen-address=::1,127.0.0.1

重启 dnsmasq.service 以应用更改。

其他 DNS 缓存器

有关更多 DNS 缓存器,请参阅 DNSCrypt#本地 DNS 缓存配置。配置应该类似,即使不是完全相同。