对于我的家庭网络,我已经设置了 DNS,以便内部名称解析为我的反向代理的本地私有地址,并且外部它们通过 CNAME 解析为我的外部 IP(哪个端口转发),因此:
- 外部 cloud.mydomain.com = CNAME 到 server.mydomain.com
- home.mydomain.com = dynamicDNS 输入我的宽带 IP 地址
- 内部 cloud.mydomain.com = A 记录为 172.16.1.10
但是,自从我升级到 17.04 后,有时我会在响应内部查询时弹出我的宽带 IP。以下是一些 Digs:
me@desktop:~$ dig cloud.mydomain.com
; <<>> DiG 9.10.3-P4-Ubuntu <<>> cloud.mydomain.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 28907
;; flags: qr rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 0, ADDITIONAL: 1
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 65494
;; QUESTION SECTION:
;cloud.mydomain.com. IN A
;; ANSWER SECTION:
cloud.mydomain.com. 267 IN CNAME home.mydomain.com.
home.mydomain.com. 175 IN A #My external IP#
;; Query time: 0 msec
;; SERVER: 127.0.0.53#53(127.0.0.53)
;; WHEN: Sun Apr 16 19:42:24 BST 2017
;; MSG SIZE rcvd: 81
me@desktop:~$ dig cloud.mydomain.com @172.16.0.254
; <<>> DiG 9.10.3-P4-Ubuntu <<>> cloud.mydomain.com @172.16.0.254
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 27183
;; flags: qr aa rd ra ad; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0
;; QUESTION SECTION:
;cloud.mydomain.com. IN A
;; ANSWER SECTION:
cloud.mydomain.com. 0 IN A 172.16.1.10
;; Query time: 0 msec
;; SERVER: 172.16.0.254#53(172.16.0.254)
;; WHEN: Sun Apr 16 19:42:33 BST 2017
;; MSG SIZE rcvd: 51
因此,如果我直接 dig,它就会从某个地方获取外部 CNAME,然后在本地解析 home.mydomain.com。如果我将 dig 指向我的家庭 DNS 服务器,那么它就会获得正确的地址。
主 DNS 服务器是系统用于解析大多数问题的服务器(也是通过 DHCP 提供的地址)
我不知道哪里出了问题,我将尝试设置一个监视端口来查看系统如何在外部解析 cloud.mydomain.com。
有人可以解释一下这个问题吗?
答案1
做这个:
sudo mkdir -p /etc/systemd/resolved.conf.d
printf "[Resolve]\nDNSSEC=no\n" | sudo tee /etc/systemd/resolved.conf.d/no-dnssec.conf
并重新启动
答案2
好的,可能应该在发布之前调试一下,但希望有人可以从中吸取教训。
我有 IPv6,并且我没有设置 IPv6 地址的本地解析以响应 AAAA 请求。
Ubuntu 正在为 cloud.mydomain.com 发出 A 和 AAAA 请求。它同时收到对 A 的 IP 响应和对 AAAA 的 CNAME,但按照 CNAME 到 AAAA 的请求不起作用,因为没有设置,但是 CNAME 响应被缓存了。
因此,对 cloud.mydomain.com 的后续请求将遵循缓存的 CNAME 并请求 home.mydomain.com,该请求解析为我的外部 IP。