Skip to content

这个脚本可以获得gfw在dns污染时返回的虚假IP列表,以供其他程序主动丢弃(如pdnsd)

Notifications You must be signed in to change notification settings

nagae-memooff/gfw-ip-list

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

6 Commits
 
 
 
 
 
 

Repository files navigation

这是一个简单的脚本,用于获取到当前gfw在dns污染时返回的虚假IP列表。这个列表可以用于其他程序中,当收到这个列表里的IP后主动丢弃这个结果。
国内的dns污染特点:
1、向国内的dns服务器查询被禁域名,一定是经过污染的结果(这个结果本身保存在国内dns服务器上而非gfw中)
2、使用udp53端口向国外dns服务器查询被禁域名,则在数据包经过gfw时,gfw会判断包,如果检测到有对被禁域名的查询,则返回一个错误地址。这个错误地址应该是不具有真实IP的地址。
3、在gfw抢先返回错误地址之后,查询包*有可能*达到国外,然后由正常途径返回一个或多个正确结果。但由于dns协议无验证,因此这些正确结果会被丢弃。
4、经过多次实验,每次返回的错误IP不同,但相对固定。

根据这几条现象,我们如果向国外的某个不提供dns查询服务的IP发送请求,那么它会经过gfw。如果查询的域名是被禁域名,则所有接收到的IP,必定是由gfw返回的错误IP。这样我们就可以收集错误IP的列表。

脚本使用方法:在终端中直接执行./getgfwiplist.sh便可。取得的IP列表会存放在当前目录下的gfwiplog文件中。

2014-12-26更新。
随着GFW不断更新,此脚本早已失效。
GFW升级后 发现新的现象:
1、gfw已经可以伪造tcp53端口的dns请求。
2、gfw也具有另一个能力:对tcp53的dns请求返回错误的包结构。这时客户端在解析返回包时,会得到错误的EOF。这个特性曾经短暂启用过,用来代替(1),但后来又改为了1.
3、以往的错误IP是固定的,所有的域名共享同一个错误IP池;现在更新后,不同域名的错误IP池也改变了。这使得我们更难以获取这个IP池,并做出选择性的屏蔽。
4、facebook和twitter在我的网络环境里(天津电信)只有两个错误IP,但s3-ap-northeast-1.amazonaws.com却有62个。

因此该脚本已经无法获取fake IP了。此脚本也不再更新,这个项目仅供留档查看用。

About

这个脚本可以获得gfw在dns污染时返回的虚假IP列表,以供其他程序主动丢弃(如pdnsd)

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages