dnsmasq 广告拦截仅在服务器端起作用

dnsmasq 广告拦截仅在服务器端起作用

我正在尝试通过 dnsmasq 创建服务器端广告拦截机制,但我只能在服务器本身上获得结果,而无法在连接到我的本地网络的计算机上获得结果。

首先,我的路由器是默认 DNS 服务器,所以我必须设置我的所有设备以使用 dnsmasq 服务器作为主 DNS。当我尝试访问我的一个自托管网站时,我可以检查它是否正常工作:如果我可以在本地访问它们,则 dnsmasq dns 可以正常工作。在这方面,一切都正常。

然后是广告拦截部分。我通过在服务器和主计算机上输入此命令来检查拦截是否有效:

# nslookup doubleclick.net

在服务器上我得到:

Server:     192.168.1.51
Address:    192.168.1.51#53

Name:   doubleclick.net
Address: 192.168.1.51

因此它在那里起作用。

在我的电脑上我得到:

Server:     80.67.0.2
Address:    80.67.0.2#53

Non-authoritative answer:
Name:   doubleclick.net
Address: 70.32.146.212

所以这里没有...

我的设置如下:

  • 我设置了 dnsmasq 的配置目录:

    conf-dir=/usr/local/etc/dnsmasq.d

  • 将文件 dnsmasq.adlist.conf 放在那里,并由一个脚本填充,该脚本从站点获取广告服务器列表并将其编译为 dnsmasq 可读的条目。

简而言之,被 dnsmasq 阻止的域名在服务器内部被正确重定向,但在其他设备中却无法重定向。这就像 dnsmasq 无法广播新添加的域名列表一样。

我可以提供任何您需要的信息来帮助我解决这个问题。这也可能指向了此广告拦截实验之前的错误配置。无论如何,我希望这个问题很容易解决...

我的服务器是 FreeBSD 9.3

答案1

如果某些内容缓存了您的请求而您没有清除 DNS 缓存,则可能会发生此问题。

操作系统通常会缓存 DNS 条目,这使得 DNS 中的更改无法直接看到。

对于 Windows fe,您可以通过类似的方法清除 DNS 缓存。

ipconfig /flushdns

答案2

我已经有一段时间没有使用 nslookup 了,但是这个结果是否意味着名称解析是针对 80.67.0.2 而不是 192.168.1.51(我假设是您的路由器)执行的?

我猜测您的计算机没有使用 dnsmasq 实例进行名称解析。

相关内容