我在试着了解dnsmasq的转发是如何工作的。我从手册上读到的是:
...Dnsmasq接受DNS查询,或者从一个小的本地缓存中回答它们,或者转发给一个真正的递归DNS服务器....。
因此,据我所知,如果我做了DNS请求,我的机器会向dnsmasq请求给定域的ip地址。如果dnsmasq无法回答,则dnsmasq将“将此请求转发到真正的、递归的DNS服务器”。
这个转发是怎么工作的?我试图通过谷歌搜索来回答这个问题,但这并没有真正回答我的问题。
当我通过wireshark查看它时,我看到了这样的模式:
127.0.0.1 -> 127.0.1.1 (standard query)
192.168.1.2 -> 192.168.1.1 (standard query)
192.168.1.1 -> 192.168.1.2 (standard query response)
127.0.1.1 -> 127.0.0.1 (standard query response)有人能解释一下那里发生了什么吗?
编辑:
我想问的是,dnsmasq如何知道192.168.1.1的答案是什么?事实上,192.168.1.1只告诉了192.168.1.2 ip地址。127.0.1.1如何知道ip地址?信息是如何传递的?
我希望会有这样的事情:
192.168.1.1 -> 127.0.1.1 OR
192.168.1.2 -> 127.0.1.1我希望有一些路线来传送信息,但事实并非如此。
发布于 2016-11-03 15:44:52
Wireshark在TCP/IP模型上介于网络和传输之间。因此,您没有看到在应用程序级别上交换什么数据,所以这就是为什么您的wireshark输出在尝试监视DNS时没有多大意义。在应用程序确定了将要发生什么之后,您只是看到了数据包的流和方向。你得看看dnsmasq你想要的信息。如果将-q添加到启动dnsmasq的脚本中,它将将日志发送到syslog。
下面是我能够找到的一个示例输出。
Jan 17 23:33:15 server001 dnsmasq[10708]: query[A] sgi.com from 192.168.0.20
Jan 17 23:33:15 server001 dnsmasq[10708]: forwarded sgi.com to 127.0.0.2
Jan 17 23:33:15 server001 dnsmasq[10708]: query[AAAA] sgi.com from 192.168.0.20
Jan 17 23:33:15 server001 dnsmasq[10708]: forwarded sgi.com to 127.0.0.2
Jan 17 23:33:15 server001 dnsmasq[10708]: dnssec-query[DS] sgi.com to 127.0.0.2
Jan 17 23:33:15 server001 dnsmasq[10708]: dnssec-query[DS] sgi.com to 127.0.0.2
Jan 17 23:33:15 server001 dnsmasq[10708]: validation result is INSECURE
Jan 17 23:33:15 server001 dnsmasq[10708]: reply sgi.com is 192.48.138.174
Jan 17 23:33:15 server001 dnsmasq[10708]: validation result is INSECURE
Jan 17 23:33:15 server001 dnsmasq[10708]: reply sgi.com is NODATA-IPv6https://askubuntu.com/questions/845128
复制相似问题