解决 DNS 污染与劫持之使用特殊 DNS 端口

发布于 2024-08-18 12:23:33 字数 1975 浏览 9 评论 0

  • os:ubuntu 12.04 LTS
  • 软件:dnsmasq

dns 测试:

dig www.facebook.com @8.8.8.8 +short  
37.61.54.158  

在 wiki 词条 域名服务器缓存污染 中可以发现 37.61.54.158 在虚假 ip 地址中,说明此 dns 已遭污染。

dig www.facebook.com @208.67.222.222 -p 443  
31.13.79.49  

31.13.79.49 为 facebook 的正确地址。google 的 dns 服务不支持特殊端口查询,但 opendns 支持,其 ip 为 208.67.222.222,208.67.222.220,支持的特殊端口为 443,5353。

在 ubuntu 中,我们可以用 dnsmasq 来指定被污染 ip 用特殊端口查询.

从 Ubuntu 12.04 开始网络管理器默认开启了 dnsmasq,但出于安全的考虑没有开启其缓存功能。这个改动至少在我这里导致了一些问题,比如偶尔出现网速变慢。 经过尝试,可以完全禁用该服务,或者设置使用谷歌 DNS 服务,同时开启 dnsmasq 的本地缓存(可以大幅提高重复访问网站时的响应速度)。

完全禁用的方法:

sudo vim /etc/NetworkManager/NetworkManager.conf

注释掉里面的 dns=dnsmasq
然后重启网络管理器

sudo restart network-manager

重新安装完整 dnsmasq:

sudo apt-get install dnsmasq

然后

sudo vi /etc/resolv.conf

确保 resolv.conf 内容为:

nameserver 127.0.0.1

然后

sudo vim /etc/dnsmasq.conf

直接在文件最后添加:

listen-address=127.0.0.1  	
bind-interfaces  
cache-size=100000  
domain-needed  
resolv-file=/etc/resolv.dnsmasq  
server=/facebook.com/208.67.222.222#5353 

其中

server=/facebook.com/208.67.222.222#5353

即可指定访问 facebook 网站时向 opendns 的 5353 端口进行 dns 请求,以此类推。
这个设置支持泛解析,比如

server=/com/208.67.222.222#5353

即指定所有 .com 域名。


重启 dnsmasq:

sudo service dnsmasq restart

再测试 dns:

dig www.facebook.com +short

若返回 31.13.79.49 或其他不在虚假 ip 表里的 ip 即成功。


ps:用命令

ps -fC dnsmasq|more

查阅得知 dnsmasq 在 ubuntu 中的 dns 设置在/var/run/dnsmasq/resolv.conf 中。
dnsmasq 的日志记录在/var/log/syslog 中。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据

关于作者

开始看清了

暂无简介

0 文章
0 评论
23 人气
更多

推荐作者

謌踐踏愛綪

文章 0 评论 0

开始看清了

文章 0 评论 0

高速公鹿

文章 0 评论 0

alipaysp_PLnULTzf66

文章 0 评论 0

热情消退

文章 0 评论 0

白色月光

文章 0 评论 0

    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文