Ubuntu DNS 解析器不使用 DNS Over TLS 端口 853 进行 DNS 解析

Ubuntu DNS 解析器不使用 DNS Over TLS 端口 853 进行 DNS 解析

我有 Ubuntu 20.04 服务器。此服务器设置为运行 WordPress 网站(LEMP 堆栈)。在此服务器中,我已设置 ubuntu DNS 解析器以使用“DNS Over TLS”。使用 Cloudflare DNS 服务。

当我运行以下命令时,我可以看到它使用端口 53,而不是使用 DNS Over TLS 端口 853。在我的 CSF 防火墙中,我已允许 TPC 和 UDP(输入/输出)中的端口 853。

这可能是什么原因?如何强制 ubuntu 使用 DNSOverTLS?

solved.conf 配置。

[Resolve]
DNS=1.1.1.1 1.0.0.1 2606:4700:4700::1111 2606:4700:4700::1001
#FallbackDNS=
#Domains=
#LLMNR=no
#MulticastDNS=no
DNSSEC=yes
DNSOverTLS=yes
Cache=no-negative
#DNSStubListener=yes
#ReadEtcHosts=yes

这是我的测试结果。

root@server:~# nslookup google.com
Server:         1.1.1.1
Address:        1.1.1.1#53

Non-authoritative answer:
Name:   google.com
Address: 142.250.65.174
Name:   google.com
Address: 2607:f8b0:4006:81e::200e


root@server:~# kdig -d google.com
;; DEBUG: Querying for owner(google.com.), class(1), type(1), server(1.1.1.1), port(53), protocol(UDP)
;; ->>HEADER<<- opcode: QUERY; status: NOERROR; id: 51182
;; Flags: qr rd ra; QUERY: 1; ANSWER: 1; AUTHORITY: 0; ADDITIONAL: 0

;; QUESTION SECTION:
;; google.com.                  IN      A

;; ANSWER SECTION:
google.com.             246     IN      A       142.251.40.142

;; Received 44 B
;; Time 2022-01-30 16:17:34 +0530
;; From 1.1.1.1@53(UDP) in 1.3 ms

但是,当我运行以下命令时,它使用 DNS over TLS(端口 853)。

root@server:~# kdig -d @1.1.1.1 +tls-ca +tls-host=cloudflare-dns.com  example.com
;; DEBUG: Querying for owner(example.com.), class(1), type(1), server(1.1.1.1), port(853), protocol(TCP)
;; DEBUG: TLS, imported 128 system certificates
;; DEBUG: TLS, received certificate hierarchy:
;; DEBUG:  #1, C=US,ST=California,L=San Francisco,O=Cloudflare\, Inc.,CN=cloudflare-dns.com
;; DEBUG:      SHA-256 PIN: RKlx+/Jwn2A+dVoU8gQWeRN2+2JxXcFkAczKfgU8OAI=
;; DEBUG:  #2, C=US,O=DigiCert Inc,CN=DigiCert TLS Hybrid ECC SHA384 2020 CA1
;; DEBUG:      SHA-256 PIN: e0IRz5Tio3GA1Xs4fUVWmH1xHDiH2dMbVtCBSkOIdqM=
;; DEBUG: TLS, skipping certificate PIN check
;; DEBUG: TLS, The certificate is trusted.
;; TLS session (TLS1.3)-(ECDHE-X25519)-(ECDSA-SECP256R1-SHA256)-(AES-256-GCM)
;; ->>HEADER<<- opcode: QUERY; status: NOERROR; id: 16525
;; Flags: qr rd ra; QUERY: 1; ANSWER: 1; AUTHORITY: 0; ADDITIONAL: 1

;; EDNS PSEUDOSECTION:
;; Version: 0; flags: ; UDP size: 1232 B; ext-rcode: NOERROR
;; PADDING: 408 B

;; QUESTION SECTION:
;; example.com.                 IN      A

;; ANSWER SECTION:
example.com.            68347   IN      A       93.184.216.34

;; Received 468 B
;; Time 2022-01-30 16:02:33 +0530
;; From 1.1.1.1@853(TCP) in 1.7 ms

当我检查解析器状态时,它显示已启用 DNS over TLS。

root@server:~# systemd-resolve --status
Global
       LLMNR setting: no
MulticastDNS setting: no
  DNSOverTLS setting: yes
      DNSSEC setting: yes
    DNSSEC supported: yes
         DNS Servers: 1.1.1.1
                      1.0.0.1
                      2606:4700:4700::1111
                      2606:4700:4700::1001
                      94.237.127.9
                      94.237.40.9
          DNSSEC NTA: 10.in-addr.arpa
                      16.172.in-addr.arpa
                      168.192.in-addr.arpa
                      17.172.in-addr.arpa
                      18.172.in-addr.arpa
                      19.172.in-addr.arpa
                      20.172.in-addr.arpa
                      21.172.in-addr.arpa
                      22.172.in-addr.arpa
                      23.172.in-addr.arpa
                      24.172.in-addr.arpa
                      25.172.in-addr.arpa
                      26.172.in-addr.arpa
                      27.172.in-addr.arpa
                      28.172.in-addr.arpa
                      29.172.in-addr.arpa
                      30.172.in-addr.arpa
                      31.172.in-addr.arpa
                      corp
                      d.f.ip6.arpa
                      home
                      internal
                      intranet
                      lan
                      local
                      private
                      test

Link 4 (eth2)
      Current Scopes: none
DefaultRoute setting: no
       LLMNR setting: yes
MulticastDNS setting: no
  DNSOverTLS setting: yes
      DNSSEC setting: yes
    DNSSEC supported: yes

答案1

虽然我使用的是 Ubuntu 22.04 LTS,但以下解决方案对我有用,但需要额外一步:

https://andrea.corbellini.name/2020/04/28/ubuntu-global-dns/#step-2-disable-dns-processing-in-networkmanager

如果链接失效,相关部分已包含在我的答案中。您需要/etc/NetworkManager/conf.d/在此示例中创建一个名为dns.conf以下内​​容的文件:

[main]
dns=none
systemd-resolved=false

这不允许 NetworkManager 覆盖/etc/resolved.conf

现在,额外的步骤是您需要编辑/etc/resolved.conf以使用 systemd-resolved 提供的本地 DNS 解析。但要小心,因为它可能链接到其他文件,因此在进行任何意外更改之前,请先取消链接。它需要包含的唯一一行是:

nameserver 127.0.0.53

另外,我使用 chmod 将其权限更改为 555,以避免任何其他程序覆盖它。

使用 Wireshark 的测试表明,所有 dns 查询均使用端口 853 上的 TLS 传输。

相关内容