一种无毒的cdn友好递归dns解析器
greendns的Python项目详细描述
绿色dns
一个DNS递归解析服务器,以避免结果中毒和友好的CDN。它将同时访问DNS服务器,而不是等待所有响应。它比ChinaDNS更高效、更快。
CDN友好意味着解决的IP是最好的(相同的ISP和最近的)。使用edns客户端子网返回ip的外部dns不太准确,特别是对于本地小型isp。
必须至少配置两个DNS服务器。一部分是本地的和有毒的,另一部分是非隔离的(隧道通过vpn或使用opendns 443/5353端口,建议使用dnscrypt-proxy)。
工作原理
First filter poisoned ip with blocked iplist with -b argument.
Second,
| A record is local | A record is foreign
local and poisoned dns server | a | b
unpoisoned dns server | c | d
From the matrix, we get the result as follows,
ac: use local dns server result
ad: use local dns server result
bc: impossible. use unpoisoned dns server result
bd: use unpoisoned dns server result
Conclusion,
Using local dns server result if returned A record is local.
Using unpoisoned dns server result if returned A record is Foreign.
它有两个假设,
- 污染的领域是外国的。
- A中毒反应的记录是外国的。
安装
pip install greendns
运行
终端命令
greendns -r greendns
守护程序服务
转到services
文件
Docker堆栈(推荐)
测试
dig www.google.com @127.0.0.1 -p1053
配置
greendns -r greendns -h usage: greendns [-h][-r HANDLER][-p PORT][-t TIMEOUT][-l LOGLEVEL][-m MODE][--lds LDS][--rds RDS][-f LOCALROUTE][-b BLACKLIST][--rfc1918][--cache] optional arguments: -h, --help -r HANDLER, --handler HANDLER Specify handler class, greendns|quickest (default: None) -p PORT, --port PORT Specify listen port or ip (default: 127.0.0.1:1053) -t TIMEOUT, --timeout TIMEOUT Specify upstream timeout (default: 1.5) -l LOGLEVEL, --log-level LOGLEVEL Specify log level, debug|info|warning|error (default: info) -m MODE, --mode MODE Specify io loop mode, select|epoll (default: select) --lds LDS Specify local poisoned dns servers (default: 223.5.5.5:53,114.114.114.114:53) --rds RDS Specify unpoisoned dns servers (default: tcp:208.67.222.220:5353,9.9.9.9:9953) -f LOCALROUTE, --localroute LOCALROUTE Specify local routes file (default: /home/etc/greendns/localroute.txt) -b BLACKLIST, --blacklist BLACKLIST Specify ip blacklist file (default: /home/etc/greendns/iplist.txt) --rfc1918 Specify if rfc1918 ip is local(default: False) --cache Specify if cache is enabled (default: False)
性能
基准结果
剖面图
致谢
- @clowwindy:theChinaDNS 的作者
许可证
这个项目是在麻省理工学院的许可下进行的。请参阅LICENSE文件以获取完整的许可证文本。