Total Pageviews

Tuesday, 12 July 2022

搭建dns proxy程序trickydns

 A tricky DNS server runs only in local machine to anti DNS response cheating from GFW.

利用了GFW对DNS压缩指针的不严谨处理,来让GFW认为经过改造的请求并非一个合法的DNS请求从而不会伪造DNS响应,从而不需要服务器即可访问一些被屏蔽的网站。效果类似于改hosts,好处是不需要手动维护列表。而且由于DNS请求的源IP为真实IP,所以CDN也能正常工作。

由于不需要判断获得的DNS响应是否是伪造的,所以比通过DNS响应的先后顺序来丢弃伪造的响应更稳定一些。

解决了DNS污染后能直接访问的网站有github gist、feedly等,加上 https://github.com/bypass-GFW-SNI/proxy 后能直接访问的网站有wikipedia、pixiv等。欢迎在Issues里补充。

技术细节:

经过测试,现在GFW最多只能处理17个级联指针,超过17个指针后GFW便不再对此DNS请求再进行处理,可能是为了避免循环指针导致死循环或消耗太多资源。trickydns通过改造DNS请求,将原始域名移动位置,再通过18个以上的级联指针指向原始域名,从而避免了GFW发送伪造的DNS响应。

使用方法,以Linux为例:

[root@localhost ~]# nohup ./trickydns trickydns.config.json &

即可在本机开启一个无污染的DNS服务。

trickydns.config.json文件的配置例子可以查看: https://github.com/lehui99/trickydns/blob/master/trickydns.config.json

from https://github.com/lehui99/trickydns

----

补充说明:

在linux/mac上,

git clone https://github.com/lehui99/trickydns

cd trickydns

go build -o trickydns trickydns.go


sudo ./trickydns trickydns.config.json


使用例子:

见https://briteming.blogspot.com/2022/05/macvpnvtun.html


sudo ~/go1.16.3/go/gopath/bin/vtun -k=mykey -l=127.0.0.1:3000 -s=vps-public-ip:3001 -p ws -obfs -g


sudo networksetup -setdnsservers "Wi-Fi" 127.0.0.1


cd ~/trickydns;sudo ./trickydns trickydns.config.json (新开一个窗口)


然后,即可用vtun vpn翻墙。



 

No comments:

Post a Comment