0

我在 debian-jessie 上的 dnsmsasq 有一个小问题,它似乎将传入的 DNS 查询转发到 2 个端口而不是 1 个。

背景:

在 LAN IP 为 192.168.0.10 的机器上运行。坐在家用路由器后面。家庭路由器配置为将 DNS 流量转发到 192.168.0.10。这部分有效,我确实看到从 LAN 到这台机器的传入流量。

dnsmasq 配置:

>cat /etc/dnsmasq.conf | grep -v ^# | grep -v ^\s*$

domain-needed
bogus-priv
server=127.0.0.1#5053
cache-size=10000

我的resolv.conf告诉本地进程将 DNS 查询发送到 dnsmasq

>cat /etc/resolv.conf

# Generated by resolvconf
nameserver 127.0.0.1

而 dnsmasq,如果它无法从其缓存中应答,则将传入的 DNS 流量转发到另一个在本地运行并通过server=127.0.0.1#5053配置侦听端口 5053 的服务。该服务是我自己构建的,它不会将 DNS 查询转发到 8.8.8.8

这有效,但不是我想要的方式。DNS 查询得到正确回答。正如预期的那样,端口 5053 显示流量,甚至提供答案(虽然比 GoogleDNS 慢)

>tcpdump -l -n -i any '(port 5053) and (port 53)'

13:57:53.817522 IP 127.0.0.1.47207 > 127.0.0.1.53: 7494+ [1au] A? www.example.com. (44)   # dnsmasq receives a query from `dig www.example.com` running locally
13:57:53.818609 IP 127.0.0.1.5258 > 127.0.0.1.5053: UDP, length 44                        # dnsmasq forwards to local DNS Server listening on 5053
13:57:53.818970 IP 192.168.0.10.5258 > 8.8.8.8.53: 50849+ [1au] A? www.example.com. (44)  # dnsmasq forwards to 8.8.8.8 on port 53 (Google DNS)
13:57:53.862170 IP 8.8.8.8.53 > 192.168.0.10.5258: 50849$ 1/0/1 A 93.184.216.34 (60)      # dnsmasq receives answer from 8.8.8.8
13:57:53.862559 IP 127.0.0.1.53 > 127.0.0.1.47207: 7494 1/0/1 A 93.184.216.34 (60)        # dnsmasq forwards answer to dig running locally
13:57:53.980238 IP 127.0.0.1.5053 > 127.0.0.1.5258: UDP, length 49                        # dnsmasq receives answer from local DNS Server

所以看起来 dnsmasq tee 对两者的 DNS 查询

  • 127.0.0.1 在端口 5053 上,几乎立即也转发到
  • 8.8.8.8 在端口 53

为什么,我的 dnsmasq 配置有什么问题,我只希望端口 5053 上的流量?

那个 8.8.8.8 是从哪里来的。是的,我知道那是 Google DNS,但是 dnsmasq 或 linux 从哪里获取该 IP,我可以编辑哪个配置文件来更改它?

>grep -r 8\.8\.8\.8 /etc/*.conf

什么都不返回。

4

0 回答 0