关于dnsmasq的一次query却forwarded了两次这件事
开了dnsmasq的日志之后,发现一次query下面却跟了两个forwarded
1 | Jul 6 13:03:12 dnsmasq[14543]: 1 192.168.x.xxx/60201 query[A] clientservices.googleapis.com from 192.168.x.xxx |
我第一反应跟我用两条宽带有关,于是把其中一条宽带的DNS改成114.114.114
以区分,果然,两次forwarded,一次223.5.5.5一次114.114.114
1 | Jul 6 13:29:45 dnsmasq[780]: 1 192.168.x.xxx/58192 query[A] www.google.com from 192.168.x.xxx |
不知道为什么dnsmasq要每一条宽带都请求一次,可能是在负载均衡的规则中进了balanced。
于是去负载均衡里面加上了两条DNS的规则,让tcp/udp协议的目标端口为53的流量都优先走其中一条宽带,发现并不管用。
去看看dnsmasq的解析文件/tmp/resolv.conf.d/resolv.conf.auto
1 | # Interface wan |
突然明白了,我之前勾选了“使用 all-servers 并发查询”,这样每个网络接口里面自定义的DNS服务器都会查一次,但只用最快得到的结果。我取消了并发查询之后,一次query只有一个forwarded。
其实问题出在resolv.conf
,两个网络接口用相同的nameserver,resolv.conf
会加上两条相同的nameserver,而不是相同的nameserver会自动去重。