我正在尝试在 SUSE 15 环境中启用 IPv4 和 IPv6 堆栈。我已使用 /opt/vmware/share/vami/vami_set_network 将 IPv4 和 IPv6 地址分配给同一接口。IPv4 和 IPv6 地址均可 ping 通。
现在我需要使用 dnsmasq 为 IPv4 和 IPv6 启用 DNS 解析。但是当我使用 dig 检查 DNS 服务器状态时,dig IPv4 地址成功,而 dig IPv6 地址失败并被拒绝。
使用 dnsmasq 配置 IPv6 dns 服务器有什么需要注意的吗?
# dig 2001:db8:3333:4444:5555:6666:7777:200
; <<>> DiG 9.16.6 <<>> 2001:db8:3333:4444:5555:6666:7777:200
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: REFUSED, id: 64764 <<<<<<<<<<<<<<<<<<<<<<
;; flags: qr rd ra ad; QUERY: 1, ANSWER: 0, AUTHORITY: 0, ADDITIONAL: 0
;; QUESTION SECTION:
;2001:db8:3333:4444:5555:6666:7777:200. IN A
;; Query time: 0 msec
;; SERVER: ::1#53(::1)
;; WHEN: Mon Sep 27 16:42:04 UTC 2021
;; MSG SIZE rcvd: 55
# dig 172.20.10.25
; <<>> DiG 9.16.6 <<>> 172.20.10.25
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 60743
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;172.20.10.25. IN A
;; ANSWER SECTION:
172.20.10.25. 0 IN A 172.20.10.25
;; Query time: 0 msec
;; SERVER: ::1#53(::1)
;; WHEN: Mon Sep 27 16:45:54 UTC 2021
;; MSG SIZE rcvd: 57
另一个问题是,当我在 /etc/hosts 中同时添加 ipv4 和 ipv6 记录时,只有 ipv4 记录可以正确解析。
# cat /etc/hosts
192.168.10.10 ipv4-hostname.com
2001:db8:3333:4444:5555:6666:7777:200 ipv6-hostname.com
# dig @127.0.0.1 ipv4-hostname.com +short +time=15 +tries=3
192.168.10.10
# dig @127.0.0.1 ipv6-hostname.com +short +time=15 +tries=3
<<<<< empty result
dnsmasq 服务器配置为默认:
# cat /etc/dnsmasq.conf | grep -v '^#' | grep -v '^$'
conf-dir=/etc/dnsmasq.d/,*.conf
这是主机名挖掘结果,也被拒绝:
# dig ipv6-hostname.com
; <<>> DiG 9.16.6 <<>> ipv6-hostname.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: REFUSED, id: 4887
;; flags: qr rd ra ad; QUERY: 1, ANSWER: 0, AUTHORITY: 0, ADDITIONAL: 0
;; QUESTION SECTION:
;ipv6-hostname.com. IN A
;; Query time: 0 msec
;; SERVER: ::1#53(::1)
;; WHEN: Tue Sep 28 08:24:45 UTC 2021
;; MSG SIZE rcvd: 30
端口状态:
# netstat -lnp | grep dnsmasq
tcp 0 0 0.0.0.0:53 0.0.0.0:* LISTEN 19455/dnsmasq
tcp6 0 0 :::53 :::* LISTEN 19455/dnsmasq
udp 0 0 0.0.0.0:53 0.0.0.0:* 19455/dnsmasq
udp6 0 0 :::53 :::* 19455/dnsmasq
似乎 ipv4 和 ipv6 通配符都在环境中监听。不确定为什么 ipv6 dig 一直被拒绝。
答案1
对于 IPv6 主机名解析,请记住在命令行参数中添加 AAAA:
dig @<server> <hostname> AAAA