我试图通过dnsmasq创build一个服务器端的adblocking机制,但是我只在服务器本身获得结果,而不是连接到本地networking的计算机。
首先,我的路由器是默认的DNS服务器,所以我必须设置所有设备来使用dnsmasq服务器作为主DNS。 当我尝试访问我的一个自托pipe网站时,我可以检查它的工作原理:如果我可以在本地访问它们,那么dnsmasq dns就可以工作。 在这方面,一切都好。
然后是广告拦截部分。 我通过在我的服务器和我的主计算机上input这个命令来检查阻塞是否工作:
# 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的configuration目录:
CONF-DIR =的/ usr /本地/ etc / dnsmasq.d
把文件dnsmasq.adlist.conf放到那里,由脚本从站点获取一个广告服务器列表,并在dnsmasq可读条目中编译它们。
因此,为了简短起见,dnsmasq阻止的域从服务器内正确redirect,但不能从其他设备redirect。 这就像dnsmasq无法播放新添加的域列表。
我可以提供任何你喜欢的信息来帮助我解决这个问题。 它也可能指出在此adblocking实验之前的configuration错误。 无论如何,我希望这是容易的,以确定…
我的服务器在FreeBSD 9.3上
这个问题可能发生,如果有caching您的请求,而不是刷新您的DNScaching。
通常,操作系统cachingDNS条目,这使DNS中的更改不能直接看到。
对于Windows,您可以通过类似的方式清除您的DNScaching。
ipconfig /flushdns
我没有在一段时间内使用nslookup,但没有这样的结果意味着名称parsing是针对80.67.0.2而不是192.168.1.51(我认为是你的路由器)?
我猜不知道你的电脑没有使用你的dnsmasq实例进行名称parsing。