无法使用 IPv6 解析 DNS 查询,例如 host -6 gnu.org、dig -6 gnu.org

Ian*_*len 6 ipv6 networking dns systemd-resolved

为什么默认的 Ubuntu LTS 安装不允许host -6 gnu.orgdig -6 gnu.org无法工作?

\n
Welcome to Ubuntu 22.04 LTS (GNU/Linux 5.15.0-27-generic x86_64)\n\n$ host -6 gnu.org\n;; communications error to ::1#53: connection refused\n\n$\xc2\xa0dig -6 gnu.org\n;; communications error to ::1#53: connection refused\n
Run Code Online (Sandbox Code Playgroud)\n

存根解析器似乎只侦听 IPv4:

\n
$\xc2\xa0tail -3 /etc/resolv.conf\nnameserver 127.0.0.53\noptions edns0 trust-ad\nsearch home.idallen.ca\n\n#\xc2\xa0netstat -nap | grep resolv\ntcp        0      0 127.0.0.53:53           0.0.0.0:*               LISTEN      603/systemd-resolve\nudp        0      0 127.0.0.53:53           0.0.0.0:*                           603/systemd-resolve\nunix  2      [ ACC ]     STREAM     LISTENING     25992    603/systemd-resolve  /run/systemd/resolve/io.systemd.Resolve\nunix  2      [ ]         DGRAM      CONNECTED     25969    603/systemd-resolve\nunix  3      [ ]         STREAM     CONNECTED     25989    603/systemd-resolve\nunix  3      [ ]         STREAM     CONNECTED     23439    603/systemd-resolve\n
Run Code Online (Sandbox Code Playgroud)\n

如何让 Ubuntu LTS 也侦听 IPv6,为什么这不是默认设置?

\n

详细信息(为了保护无辜者,更改了一些 IP 地址):

\n

我把我的机器放在我的有线 ISP 上,但它不起作用,尽管我可以ping6随处ssh -6进出。

\n

我把我的机器放在 DSL ISP 上,但它不起作用,尽管我可以ping6随处ssh -6进出。

\n

使用我的有线 ISP 的详细信息:

\n
$ ping -c 1 -4 gnu.org\nPING gnu.org (209.51.188.116) 56(84) bytes of data.\n64 bytes from wildebeest1p.gnu.org (209.51.188.116): icmp_seq=1 ttl=55 time=29.4 ms\n\n$ ping -c 1 -6 gnu.org\nPING gnu.org(wildebeest1p.gnu.org (2001:470:142:5::116)) 56 data bytes\n64 bytes from wildebeest1p.gnu.org (2001:470:142:5::116): icmp_seq=1 ttl=55 time=28.5 ms\n\n$ host -4 gnu.org\ngnu.org has address 209.51.188.116\ngnu.org has IPv6 address 2001:470:142:5::116\ngnu.org mail is handled by 10 eggs.gnu.org.\n\n$ tail -3 /etc/resolv.conf\nnameserver 127.0.0.53\noptions edns0 trust-ad\nsearch phub.net.cable.rogers.com\n\n$ resolvectl\nGlobal\n       Protocols: -LLMNR -mDNS -DNSOverTLS DNSSEC=no/unsupported\nresolv.conf mode: stub\n\nLink 2 (enp0s25)\n    Current Scopes: DNS\n         Protocols: +DefaultRoute +LLMNR -mDNS -DNSOverTLS DNSSEC=no/unsupported\nCurrent DNS Server: 64.71.255.204\n        DNS Servers: 64.71.255.204 64.71.255.198 2607:f798:18:10:0:640:7125:5204\n                    2607:f798:18:10:0:640:7125:5198\n                    2607:fea8:c2e0:86f0:494:35ff:fea4:dcba\n        DNS Domain: phub.net.cable.rogers.com\n\n$\xc2\xa0ip -6 route\n::1 dev lo proto kernel metric 256 pref medium\n2607:fea8:c2e0:86f0::abcd dev enp0s25 proto kernel metric 100 pref medium\n2607:fea8:c2e0:86f0::/64 dev enp0s25 proto ra metric 100 pref medium\nfe80::/64 dev enp0s25 proto kernel metric 1024 pref medium\ndefault via fe80::494:35ff:fea4:dcba dev enp0s25 proto ra metric 20100 pref medium\n\n$ host -6 gnu.org\n;; communications error to ::1#53: connection refused\n
Run Code Online (Sandbox Code Playgroud)\n

使用我的 DSL ISP 的详细信息(仅与电缆不同的部分):

\n
$ tail -3 /etc/resolv.conf\nnameserver 127.0.0.53\noptions edns0 trust-ad\nsearch home.idallen.ca\n\n$ resolvectl\nGlobal\n       Protocols: -LLMNR -mDNS -DNSOverTLS DNSSEC=no/unsupported\nresolv.conf mode: stub\n\nLink 2 (enp0s25)\n    Current Scopes: DNS\n         Protocols: +DefaultRoute +LLMNR -mDNS -DNSOverTLS DNSSEC=no/unsupported\nCurrent DNS Server: 2607:f2c0::1\n        DNS Servers: 192.168.2.254 2607:f2c0::1 2607:f2c0::2\n        DNS Domain: home.idallen.ca\n\n$ ip -6 route\n::1 dev lo proto kernel metric 256 pref medium\n2607:f2c0:f00e:5d00::/64 via fe80::3e90:66ff:fed4:acdb dev enp0s25 proto ra metric 100 pref high\nfe80::/64 dev enp0s25 proto kernel metric 1024 pref medium\ndefault via fe80::3e90:66ff:fed4:acdb dev enp0s25 proto ra metric 20100 pref low\n\n$ host -6 gnu.org\n;; communications error to ::1#53: connection refused\n
Run Code Online (Sandbox Code Playgroud)\n

小智 7

这些天我遇到了同样的问题,经过一些研究,我认为这与你的 ISP 和你的网络配置无关。

  1. 解决方案A:使用dig gnu.org AAAA它来获取它的IPv6。
  2. 解决方案B:通过添加到 来进行systemd-resolved监听,根据: [::1]:53DNSStubListenerExtra=[::1]:53/etc/systemd/resolved.conf

  • 是的,**解决方案 B** 适用于 `systemd` 版本 247 或更高版本;答案是“resolved.conf”手册页中的“DNSStubListenerExtra”,但它不适用于 Ubuntu 20.04 LTS。它将适用于 Ubuntu 22.04.1 LTS。 (3认同)