Skip to content
/ xdns.py Public

Encrypt dns query data before translation to avoid dns poisoning

Notifications You must be signed in to change notification settings

isayme/xdns.py

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

9 Commits
 
 
 
 
 
 
 
 

Repository files navigation

关于xdns.py

xdns,py是针对DNS污染的一个解决方法的实现, 原理是加密UDP查询.

什么是DNS污染?

DNS查询时UDP协议, 不像TCP有握手确认通信的能力. GFW先于DNS服务器返回一个伪造的包, 告诉查询者错误的IP指向!

解决方法汇总?

下面列举写个人知道的防DNS污染方法.

使用TCP协议进行DNS查询

目前好像GFW还没有污染TCP查询(技术上好像不易实现).
但每个TCP查询都有三次握手, 关闭还要四次握手, 一个字: 慢! 有兴趣可查看 DnsByTcp 的实现.

过滤伪造的包(这个可行是因为伪造包中错误的IP地址不是完全随机的)

如果能知道伪造IP的可能列表, 感觉这个方法还是挺好的!
有兴趣可查看 DNSFilter 的实现.

加密UDP查询

加密DNS的请求包, GFW无法辨识请求包的内容就不会发出污染包!
不过,既然有加密就要有解密, 所以需要一个墙外的解密服务器!
另, 对于那些使用了CDN的网站来说, 这个真心不是好方法.

About

Encrypt dns query data before translation to avoid dns poisoning

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages