在具有 Windows DNS 服务器的 LAN 上,“dig +trace fqdn”和“dig fqdn”不会给出相同的结果,为什么?

在具有 Windows DNS 服务器的 LAN 上,“dig +trace fqdn”和“dig fqdn”不会给出相同的结果,为什么?

在我的公司局域网中我有一个Ubuntu 14.04 服务器在具有网络接口的 Windows 7(主机)上的 Virtualbox(作为客户机)中运行桥接(因此 Ubuntu 服务器属于局域网,其 ip 为:192.168.1.85)我在这个服务器上有一个网站:我的网站

LAN 到互联网的网关是192.168.1.1 (思科 1841)-->188.188.188.254作为公共 IP。

有一台 Windows 2008 服务器充当DNS服务器和DHCP局域网上的服务器。我添加了一个转发区域“mywebsite.com”,A记录 -> 192.168.1.85

在局域网之外,我的网站具有指向 Cisco 1841 公共 IP(188.188.188.254)的公共 DNS 记录

现在当我 ping我的网站 来自局域网,我很快就明白了192.168.1.85

但当我通过客户端上的浏览器连接时,它并不总是很快.所以我想知道:

我的请求真的是/直接解决并转发至 192.168.1.85,或者他们被发送局域网之外,然后转发回CISCO公网188.188.188.254:80并NAT到Ubuntu服务器后再提供服务???

为了尝试回答这个问题,我寻找并跟踪来自 LAN 上的 Linux 客户端的 DNS 请求:

v@v-ss9:~$ dig mywebsite.com
; <<>> DiG 9.9.5-3-Ubuntu <<>> mywebsite.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 24850
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4000
;; QUESTION SECTION:
;mywebsite.com.     IN  A

;; ANSWER SECTION:
mywebsite.com.  3600    IN  A   192.168.1.85

;; Query time: 1 msec
;; SERVER: 127.0.1.1#53(127.0.1.1)
;; WHEN: Fri Aug 22 09:50:16 CST 2014
;; MSG SIZE  rcvd: 66

这个答案看起来正确:192.168.1.85。但是看看这个:

v@v-ss9:~$ dig +trace mywebsite.com

; <<>> DiG 9.9.5-3-Ubuntu <<>> +trace mywebsite.com
;; global options: +cmd
.           12955   IN  NS  h.gtld-servers.net.
.           12955   IN  NS  g.gtld-servers.net.
.           12955   IN  NS  m.gtld-servers.net.
.           12955   IN  NS  i.gtld-servers.net.
.           12955   IN  NS  l.gtld-servers.net.
.           12955   IN  NS  k.gtld-servers.net.
.           12955   IN  NS  j.gtld-servers.net.
.           12955   IN  NS  d.gtld-servers.net.
.           12955   IN  NS  b.gtld-servers.net.
.           12955   IN  NS  c.gtld-servers.net.
.           12955   IN  NS  a.gtld-servers.net.
.           12955   IN  NS  e.gtld-servers.net.
.           12955   IN  NS  f.gtld-servers.net.
;; Received 516 bytes from 127.0.1.1#53(127.0.1.1) in 18 ms

mywebsite.com.  172800  IN  NS  ns3.rmi.fr.
mywebsite.com.  172800  IN  NS  ns4.rmi.fr.
CK0POJMG874LJREF7EFN8430QVIT8BSM.com. 86400 IN NSEC3 1 1 0 - CK0QFMDQRCSRU0651QLVA1JQB21IF7UR NS SOA RRSIG DNSKEY NSEC3PARAM
CK0POJMG874LJREF7EFN8430QVIT8BSM.com. 86400 IN RRSIG NSEC3 8 2 86400 20140825045016 20140818034016 6122 com. Imq8K9xlvFXlB4IjUkdxOc5YHoTEhqSQUlRSJ9QCIhd9wzGpWJ54AfVf WJ0SUKThalpzqS0cXdLGtNmuYgqLfwUMjpUlT4c+zJyx7I4QMPLImQZh Ov0xy3mUr7dLlymAJYGs9dLI2IaheLvpKTBwaV1gAvo8QEkU8VRiJ7gW 9dk=
U0PIA23FHMVPTKSDHC9PJ1BEA9SIB65R.com. 86400 IN NSEC3 1 1 0 - U0PL33R61V6TCCPBS1171PROP57ASRD9 NS DS RRSIG
U0PIA23FHMVPTKSDHC9PJ1BEA9SIB65R.com. 86400 IN RRSIG NSEC3 8 2 86400 20140825043502 20140818032502 6122 com. qsC5sJbwklao+OedCHpcYo56aQaY0N+7peKmPu8szvjAQoJFRWyuDfAh Nw/gvHXEMzG7tYLriQGVfsiK8GZdPXyG4Ghe1MNN4jOZnSahkT5LjlqL 5QyGC0QiClRMPDAYjUOFGQDkjOJcJYvTNkEyXC2BEpfLI5SwCbYqwqg3 RkE=
;; Received 585 bytes from 192.41.162.30#53(l.gtld-servers.net) in 297 ms

mywebsite.com. 86400 IN A   188.188.188.254
mywebsite.com.  86400   IN  NS  ns3.rmi.fr.
mywebsite.com.  86400   IN  NS  ns4.rmi.fr.
;; Received 204 bytes from 212.51.161.18#53(ns3.rmi.fr) in 310 ms

这里我获取了我的 CISCO 公共 IP188.188.188.254!!!

  1. 这正常吗?
  2. 如何知道当我使用 mywebsite.com 时我的浏览器(来自 LAN)是否真的直接与 192.168.1.85 通信?

感谢您的帮助。

答案1

这是正常的吗?是的!

dig +trace 递归解析域名。它首先查询根服务器,依此类推。任何解析器都以相同的方式默认情况下

由于网站托管在您的 LAN 中,因此您可以跳过递归并直接从 LAN 的 DNS 服务器提供区域 - 您正在这样做。此外,您可以指定本地 IP 地址(这在公共互联网上不起作用) - 您正在这样做。当您仅使用digLAN 的 DNS 服务器查询域时,将直接查询 - 因此回复中的是本地 IP 地址。

另一方面,dig +trace忽略您的默认解析器。dig 充当自己的解析器,并模拟互联网上的解析器会做的事情。由于本地 IP 地址无法从外部世界访问,因此您需要返回答案的公共 IP。这正是您所看到的...

你的局域网浏览器是否使用本地IP访问网站?可能! dig返回本地 IP。这表明您的 DNS 服务器实际上正在将本地 IP 返回给 LAN 客户端,并且您的计算机实际上已配置为使用 LAN DNS 服务器。因此,除非发生奇怪的事情,否则答案是肯定的。

你怎么能确定? 服务器的日志是你的朋友。

如果 Web 服务器日志中的源 IP 与路由器的外部公共 IP 匹配,则表示本地 IP 未被使用。

另一方面,如果源 IP 与您的浏览器的本地 IP 地址匹配,那么确实正在使用本地 IP。

你怎么能真的那么确定?

Wireshark。浏览时进行数据包捕获。查看哪些流量流向何处。

相关内容