我们知道,某些网络运营商为了某些目的,对DNS进行了某些操作,导致使用ISP的正常上网设置无法通过域名取得正确的IP地址。常用的手段有:DNS劫持和DNS污染。关于DNS劫持和DNS污染的区别,请查找相关文章。

   对付DNS劫持的方法很简单,只需要把系统的DNS设置改为为国外的DNS服务器的IP地址即可解决。但是对于DNS污染,一般除了使用代理服务器和 VPN之类的软件之外,并没有什么其它办法。但是利用我们对DNS污染的了解,还是可以做到不用代理服务器和VPN之类的软件就能解决DNS污染的问题, 从而在不使用代理服务器或VPN的情况下访问原本访问不了的一些网站。当然这无法解决所有问题,当一些无法访问的网站本身并不是由DNS污染问题导致的时 候,还是需要使用代理服务器或VPN才能访问的。

  我们知道,DNS污染的数据包并不是在网络数据包经过的路由器上,而是在其旁路产生 的。所以DNS污染并无法阻止正确的DNS解析结果返回,但由于旁路产生的数据包发回的速度较国外DNS服务器发回的快,操作系统认为第一个收到的数据包 就是返回结果,从而忽略其后收到的数据包,从而使得DNS污染得逞。而某些国家的DNS污染在一段时期内的污染IP却是固定不变的,从而可以忽略返回结果 是这些IP地址的数据包,直接解决DNS污染的问题。

  在这里我用Java做了一个简单的小程序并提供源代码,在本机运行后,就能在没有 代理服务器和VPN的情况下,直接就能解决DNS污染的问题了。如果没有安装Java,可以去http://www.java.com/上安装一个。解开 AntiDnsPollution.zip之后,运行filter.bat(Linux用户请运行filter.sh),等待启动成功。然后设置系统的 DNS服务器的IP地址为127.0.0.1即可。然后打开一个命令行窗口,执行nslookup一些被DNS污染的域名,是不是解析正确了?

   下面说一下这个小程序的具体工作流程:首先程序启动后,会从文本文件dnsfilter.properties中读取配制,然后去一个不存在的DNS服 务器——但这个IP地址却是国外的——中进行DNS查询被劫持的域名,然后返回的IP地址就是被劫持的IP,被记录下来,之后正常的DNS查询中,就自动 把这些IP地址过滤了。这个程序以后会不定期更新,或许也会出。NET版本,请在我的Google Reader上关注更新。

  对于高级用户,可以手动用文本编辑器修改配置文件dnsfilter.properties:

  BindToIP:小程序启动后作为DNS服务期绑定53端口,这里指定绑定的IP地址

  DnsServer:国外的DNS服务器,可以设置为OpenDNS或Google DNS服务器的IP地址

  ResponseTimeout:DNS查询返回超时的时间(毫秒)

  TestDnsServer:测试DNS服务器,请指定一个不存在的DNS服务期,但要求IP是国外的

  TestRespTimeout:测试DNS服务器的查询返回超时时间(毫秒),也就是DNS劫持的旁路回复超时时间

  TestCount:测试DNS服务器的次数,为了得到所有被劫持的IP地址,需要一定的测试次数

  小程序的执行文件和源代码在同一个压缩包内,请点下面的链接下载(含源代码)。

  下载:不依赖于Java环境的可执行程序(含源码)

  下载:依赖于Java环境的程序(含源码)

  投稿人Email: lehui99(at)gmail.com ,投稿人Google Reader:https://www.google.com/reader/shared/lehui99

通过开源程序同时解决DNS劫持和DNS污染的问题的更多相关文章

  1. DNS劫持和DNS污染解决办法

    编号:1013时间:2016年5月26日09:35:27功能:DNS劫持和DNS污染解决办法URL : http://www.itechzero.com/dns-hijacking-dns-pollu ...

  2. DNS劫持和DNS污染的区别

    我们知道,某些网络运营商为了某些目的,对DNS进行了某些操作,导致使用ISP的正常上网设置无法通过域名取得正确的IP地址.常用的手段有:DNS劫持和DNS污染. 什么是DNS劫持 DNS劫持就是通过劫 ...

  3. 【转】DNS劫持和DNS污染的区别

    什么是DNS服务器? 简单来说,DNS服务器就是域名管理系统. DNS(Domain Name System)是域名解析服务器的意思. DNS服务器是干什么的? DNS服务器在互联网的作用是:把域名转 ...

  4. 什么是DNS劫持和DNS污染?

    什么是DNS劫持和DNS污染? http://blogread.cn/it/article/7758?f=weekly 说明 我们知道,某些网络运营商为了某些目的,对 DNS 进行了某些操作,导致使用 ...

  5. DNS劫持和DNS污染

    DNS劫持和DNS污染1.DNS劫持通过劫持DNS服务器,修改解析记录,导致对域名的访问转入虚假IP,结果是网站访问失败,窃取资料. 2.DNS污染使用虚假的DNS服务器,伪装成目标域名的解析服务器, ...

  6. DNS 劫持 和 DNS 污染

    1,用户需要访问www.liusuping.com这个网站,向DNS服务器提出解析请求. 2,DNS服务器通过检查发现www.liusuping.com域名的IP地址是127.0.0.1,将结果返回给 ...

  7. [计算机网络] DNS劫持和DNS污染

    DNS劫持,指用户访问一个被标记的地址时,DNS服务器故意将此地址指向一个错误的IP地址的行为.范例就是收到各种推送广告等网站. DNS污染,指的是用户访问一个地址,国内的服务器(非DNS)监控到用户 ...

  8. 一文搞懂│XSS攻击、SQL注入、CSRF攻击、DDOS攻击、DNS劫持

    目录 XSS 攻击 SQL 注入 CSRF 攻击 DDOS 攻击 DNS 劫持 XSS 攻击 全称跨站脚本攻击 Cross Site Scripting 为了与重叠样式表 CSS 进行区分,所以换了另 ...

  9. openwrt-智能路由器hack技术(1)---"DNS劫持"

    openwrt-智能路由器hack技术(1)---"DNS劫持" 1   导读 PS:之前写的一个文章,现在发现结构内容排版不是太好,导致阅读体验太差,影响传播和SEO,所以现在整 ...

随机推荐

  1. mysql-5.7.14-winx64免安装版在win10下的详细配置过程

    1.配置文件 如果使用mysql的默认配置,在使用的过程中会出现很多问题,如汉字是乱码等. 在mysql的根目录(如:D:\mysql\mysql-5.7.14-winx64\)下,新建配置文件my. ...

  2. python下RSA 加密/解密,签名/验证

    基于win7 + python3.4 原文是py2环境,而我的环境是py3,所以对原代码做了修改:decode(), encode() import rsa # 生成密钥 (pubkey, privk ...

  3. Fragment中监听onKey事件,没你想象的那么难。

    项目中越来越多的用到Fragment,在用Fragment取代TabHost的时候遇到了一个问题,我们都知道,TabHost的Tab为Activity实例,有OnKey事件,但是Fragment中没有 ...

  4. C#对 Dictionary进行排序 转

    C# .net 3.5 以上的版本引入 Linq 后,字典Dictionary排序变得十分简单,用一句类似 sql 数据库查询语句即可搞定:不过,.net 2.0 排序要稍微麻烦一点,为便于使用,将总 ...

  5. Android--图片集

    一. 实现效果 安卓系统中的相册集效果图,左右滑动可以查看上一张或者下一张图片     二. 布局代码 <?xml version="1.0" encoding=" ...

  6. 每天一个linux命令(7):cp 命令

    cp 命令用来复制文件或者目录,是Linux系统中最常用的命令之一.一般情况下,shell会设置一个别名,在命令行下复制文件时,如果目标文件已经存在, 就会询问是否覆盖,不管你是否使用-i参数.但是如 ...

  7. “耐撕”团队记账本 剧透

    β发布之后,我们团队开始fork"OneZero"团队的记账本程序.我们在原来的基础上添加了以下功能: 下面是我们团队记账本程序演示的视频:http://v.youku.com/v ...

  8. PHP ADLogin

    <?php $user = 'aaaa'; $password = 'xxxx'; $domain = 'b.a.com'; //设定域名 $port = 3268; $basedn = 'dc ...

  9. 【codevs 1200】【NOIP 2012】同余方程 拓展欧几里德求乘法逆元模板题

    模板,,, #include<cstdio> using namespace std; void exgcd(long long a,long long b,long long & ...

  10. hdu1305 字典树

    这题我开始想的简单了,WA一次,然后看disscuss里有人说输入时长度从小到大的,然后我信了.然后开始while(1) WA;然后我尝试先放如数组.后来对了: discuss里面果然不能太相信. 根 ...