我的 DNS 配置如下:
$ systemd-resolve --status
Global
DNS Servers: 192.168.1.1
DNS Domain: house.lan
...
Link 2 (enp11s0)
Current Scopes: DNS LLMNR/IPv4 LLMNR/IPv6
LLMNR setting: yes
MulticastDNS setting: no
DNSSEC setting: no
DNSSEC supported: no
DNS Servers: 192.168.1.1
2001:xxxx:xxxx:xxxx::1
DNS Domain: house.lan
enp11s0
由 NetworkManager 管理。DNS 服务器 IP 都是正确的,并且是路由器的 LAN IP。我不确定为什么只有 v4 IP 是全局的。
当我专门使用 v6 IP 挖一个主机时,它的工作原理是:
$ dig -6 @2001:xxxx:xxxx:xxxx::1 google.com AAAA
; <<>> DiG 9.10.3-P4-Ubuntu <<>> -6 @2001:xxxx:xxxx:xxxx::1 google.com AAAA
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 19546
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;google.com. IN AAAA
;; ANSWER SECTION:
google.com. 99 IN AAAA 2607:f8b0:4009:810::200e
;; Query time: 18 msec
;; SERVER: 2001:xxxx:xxxx:xxxx::1#53(2001:xxxx:xxxx:xxxx::1)
;; WHEN: Mon Aug 21 19:05:03 EDT 2017
;; MSG SIZE rcvd: 67
但是,尝试使用默认值会导致超时:
$ dig -6 google.com AAAA
; <<>> DiG 9.10.3-P4-Ubuntu <<>> -6 google.com AAAA
;; global options: +cmd
;; connection timed out; no servers could be reached
发生了什么?v6 服务器是否需要以某种方式标记为全局?
答案1
这不起作用,因为 /etc/resolv.conf 中没有定义 IPv6 名称服务器。对于 Ubuntu 16.04.3,此文件中的唯一条目是
nameserver 127.0.1.1
也许还有一个搜索域。
由于“dig -6”仅使用 IPv6,因此根本没有名称服务器可以询问。一个简单的解决方法是让在本地主机 IPv4 上监听端口 53 的 dnsmasqd 也监听 IPv6 本地主机地址“::1/128”,并将 IPv6 本地主机地址也添加到 /etc/resolv.conf。