“dig + trace fqdn”和“dig fqdn”不能在windows DNS服务器上给出同样的结果,为什么?

在我公司的局域网中,我有一个Ubuntu 14.04服务器 ,在networking接口桥接的Windows 7(主机)上运行VirtualBox(作为guest虚拟机)(所以Ubuntu服务器属于局域网,其ip: 192.168.1.85 )。 我在这个服务器上有一个网站: mywebsite.com

LAN到Internet的网关是192.168.1.1 (Cisco 1841) – > 188.188.188.254作为公共IP。

有一台Windows 2008服务器作为局域网上的DNS服务器和DHCP服务器。 我添加了一个转发区“mywebsite.com”与Alogging – > 192.168.1.85

在局域网之外, mywebsite.com拥有Cisco 1841公有IP(188.188.188.254)的公开Dnslogging,

现在当我 网上 ping mywebsite.com ,我很快得到了192.168.1.85

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

我的请求是真正/ 直接parsing并转发到192.168.1.85 ,或者是他们发送出局域网 ,然后转发回到CISCO公众188.188.188.254:80和NAT到Ubuntu服务器之前被服务

为了回答这个问题,我寻找了在局域网上跟踪我的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 

在这里,我得到了我的思科公开IP 188.188.188.254

  1. 这是正常的吗?
  2. 如何知道我的浏览器(从局域网)是否真的直接使用mywebsite.com与192.168.1.85通信?

感谢您的帮助。

这是正常的吗? 是!

dig + tracerecursion地parsing域。 它首先查询根服务器,等等。 任何parsing器默认情况下都是这样

由于该站点位于您的局域网内,因此您可以跳过recursion并直接从您局域网的DNS服务器提供服务 – 您正在执行此操作。 此外,你可以指定一个本地的IP地址(这不会在公共互联网上工作) – 你正在做的。 当你查询域只是dig你的局域网的DNS服务器被直接查询 – 因此在回复中的本地IP地址。

另一方面, dig +trace忽略你的默认parsing器。 挖掘作为自己的parsing器,而模拟互联网上的parsing器会做什么。 由于本地IP地址无法从外部访问,因此您需要返回公有IP作为答案。 这正是你所看到的…

局域网上的浏览器是否使用本地IP访问网站? 大概! dig返回本地IP。 这表明您的DNS服务器实际上是将本地IP返回给LAN客户端,并且您的计算机实际上已configuration为使用LAN DNS服务器。 所以,除了发生奇怪的事情,是的。

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

如果Web服务器日志中的源IP与您的路由器的外部公用IP相匹配,则不会使用本地IP。

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

你怎么能真的确定?

Wireshark的。 在浏览时进行数据包捕获。 看看有什么stream量去哪里。