![内部 DNS 和解析外部 IP 的软件/服务](https://linux22.com/image/630613/%E5%86%85%E9%83%A8%20DNS%20%E5%92%8C%E8%A7%A3%E6%9E%90%E5%A4%96%E9%83%A8%20IP%20%E7%9A%84%E8%BD%AF%E4%BB%B6%2F%E6%9C%8D%E5%8A%A1.png)
因此,我的网络上有一个 DNS 服务器,它具有外部区域(服务器的公共 IP)和内部区域(服务器的 LAN IP)。当我在区域中的服务器上执行 nslookup 时,它会解析本地 IP,这正是我想要的。但如果我使用 ping 或 tracrt,如果我使用 putty 访问服务器(www.blahblah.com 而不是 IP),它们都会使用公共 IP。有什么想法可以解释为什么 dns 会在 nslookup 中解析本地 IP,但在尝试执行其他任何操作时,它会找到公共 IP。
对于外部来说,视图是:
view "external"{
match-clients { any; };
recursion no;
对于内部而言:
view "internal"{
match-clients { x.x.x.x/24; };
recursion yes;
xxxx 不是实际值,而是使用正确的 IP 掩码。区域位于每个视图的 {} 集合内。
内部视图和区域位于 named.conf.internal 中
外部视图和区域位于 named.conf.external 中
它们包含在named.conf中。
命名的.conf:
include "/etc/bind/named.conf.options";
include "/etc/bind/named.conf.internal";
include "/etc/bind/named.conf.external";
注意:这仅适用于 Windows 系统,Linux 服务器似乎可以正常解析。
示例(xxxx = 本地 IP bbbb = 公共):
C:\Users\[user]>nslookup www.[website].com
Server: UnKnown
Address: [dns server ip]
Name: www.[website].com
Address: x.x.x.x
C:\Users\[user]>ping www.[website].com
Pinging www.[website].com [b.b.b.b] with 32 bytes of data:
Reply from b.b.b.b: bytes=32 time=2ms TTL=64
Reply from b.b.b.b: bytes=32 time=3ms TTL=64
Reply from b.b.b.b: bytes=32 time=3ms TTL=64
Reply from b.b.b.b: bytes=32 time=3ms TTL=64
Ping statistics for b.b.b.b:
Packets: Sent = 4, Received = 4, Lost = 0 (0% loss),
Approximate round trip times in milli-seconds:
Minimum = 2ms, Maximum = 3ms, Average = 2ms
答案1
事实证明,问题不是 Bind 或 DNS 服务器,而是 Windows。在我确认多台 Linux 服务器上解析内部和外部之间没有问题后,我删除了辅助 DNS(远程服务器没有本地区域),并在 Windows 系统上刷新了 DNS,它开始正确解析。