我有以下配置:CISCO 881,IOS 15.2(4)M6。WAN 接口上配置了来自我们 ISP 的 86.34.156.48/29 子网。路由器后面有 2 个 Web 服务器。NAT:86.34.156.51 <> 10.10.10.100(私有 IP,服务器 1)。如果我使用服务器的外部 IP(86.34.156.51)配置 BIND DNS 服务器 A 记录,外界永远不会收到来自我的 DNS 服务器的响应(我不知道那里发生了什么,也许路由器进行了 DNS 修改或类似操作(这是一个问题)),并且确保 DNS 服务器已配置并正常工作(我使用 TCPdump 捕获了 IP 数据包)。但是,如果我使用服务器私有 IP(10.10.10.100)配置 DNS 服务器 A 记录,数据包将始终到达正确的目的地(使用服务器外部 IP,也许还进行了 DNS 修改)。唯一的问题是 DNS 数据包 TTL 值消失,正如您在下面的 digs 输出中所看到的那样。
我能做什么???
+-----+
| | an other host somewhere on internet(C)
| |
+-----+
|
|
:
: internet
:
|
+-----+
| | ISP's router
| | black box, without acces
+-----+
|
| 86.34.456.48/29
+-----+
| | CISCO 881,
| | IOS 15.2(4)M6
+-----+
|
|
------------------------------------------------------------ local private network 10.10.10.0/24
| |
| (86.34.156.51) | (Nat rule not yet attached)
| 10.10.10.100 | 10.10.10.101
| |
+-----+ +-----+
| | | |
| | | |
+-----+ +-----+
linux server (A) linux server (B)
BIND DNS server
style2take.ro
这里有一些挖掘(Linux下的dns诊断工具):
来自主机 B:$dig style2take.ro
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 42222
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;style2take.ro. IN A
;; ANSWER SECTION:
style2take.ro. 0 IN A 10.10.10.100 <-- here you can see the TTL is 0
;; Query time: 52 msec
;; SERVER: 193.231.100.130#53(193.231.100.130)
;; WHEN: Fri Feb 20 10:27:25 EET 2015
;; MSG SIZE rcvd: 58
来自主机 B:$dig @10.10.10.100 style2take.ro
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 65374
;; flags: qr aa rd; QUERY: 1, ANSWER: 1, AUTHORITY: 2, ADDITIONAL: 3
;; WARNING: recursion requested but not available
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;style2take.ro. IN A
;; ANSWER SECTION:
style2take.ro. 3600 IN A 10.10.10.100 <-- here you can see the TTL is 3600
;; AUTHORITY SECTION:
style2take.ro. 3600 IN NS ns1.style2take.ro.
style2take.ro. 3600 IN NS ns2.style2take.ro.
;; ADDITIONAL SECTION:
ns1.style2take.ro. 3600 IN A 10.10.10.100
ns2.style2take.ro. 3600 IN A 10.10.10.100
;; Query time: 0 msec
;; SERVER: 10.10.10.100#53(10.10.10.100)
;; WHEN: Fri Feb 20 10:28:58 EET 2015
;; MSG SIZE rcvd: 126
来自主机 C:$dig style2take.ro
;; global options: printcmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 32364
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 6, ADDITIONAL: 0
;; QUESTION SECTION:
;style2take.ro. IN A
;; ANSWER SECTION:
style2take.ro. 0 IN A 86.34.156.51 <-- here you can see the TTL is 0
;; AUTHORITY SECTION:
ro. 106161 IN NS sns-pb.isc.org.
ro. 106161 IN NS primary.rotld.ro.
ro. 106161 IN NS sec-dns-a.rotld.ro.
ro. 106161 IN NS sec-dns-b.rotld.ro.
ro. 106161 IN NS dns-at.rotld.ro.
ro. 106161 IN NS dns-ro.denic.de.
;; Query time: 149 msec
;; SERVER: 82.79.24.74#53(82.79.24.74)
;; WHEN: Fri Feb 20 10:29:52 2015
;; MSG SIZE rcvd: 201
来自主机 C: $dig @86.34.156.51 style2take.ro
; (1 server found)
;; global options: printcmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 48385
;; flags: qr aa rd; QUERY: 1, ANSWER: 1, AUTHORITY: 2, ADDITIONAL: 2
;; QUESTION SECTION:
;style2take.ro. IN A
;; ANSWER SECTION:
style2take.ro. 0 IN A 86.34.156.51 <-- here you can see the TTL is 0
;; AUTHORITY SECTION:
style2take.ro. 0 IN NS ns2.style2take.ro.
style2take.ro. 0 IN NS ns1.style2take.ro.
;; ADDITIONAL SECTION:
ns1.style2take.ro. 0 IN A 86.34.156.51
ns2.style2take.ro. 0 IN A 86.34.156.51
;; Query time: 29 msec
;; SERVER: 86.34.156.51#53(86.34.156.51)
;; WHEN: Fri Feb 20 10:35:05 2015
;; MSG SIZE rcvd: 115
答案1
好吧,如果你没有解决 DNS 问题,问题可能有两个方面:
DNS 配置不正确 - 全球 DNS 系统是否能够分辨出您的域名的 NS 是什么?您需要在名称提供商处设置此项。
dig style2take.ro NS
输出是什么?您的路由器不允许 DNS 请求。进入外部服务器并尝试远程登录到 DNS 的 53 端口
telnet 86.34.156.51
- DNS 应该可以通过 UDP 和 TCP 工作,这至少可以测试 TCP 部分。
答案2
您不需要在任何 DNS 设置(命名)配置中使用外部 IP。您可以在任何地方使用内部 IP(10.10.10.100),并将其从路由器 NAT 到 86.34.156.51(ip nat inside source static 10.10.10.100 86.34.156.51
)。如果您想配置辅助 DNS,同样适用:使用 10.10.10.101(作为 NS2)NAT 到其他地址(如 86.34.156.51)。此外,请确保 DNS 端口确实在路由器中转发,并且未被 Linux 服务器中的防火墙阻止。使用基于 Web 的端口检查器确保 UDP 53 已打开。