V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐学习书目
Learn Python the Hard Way
Python Sites
PyPI - Python Package Index
http://diveintopython.org/toc/index.html
Pocoo
值得关注的项目
PyPy
Celery
Jinja2
Read the Docs
gevent
pyenv
virtualenv
Stackless Python
Beautiful Soup
结巴中文分词
Green Unicorn
Sentry
Shovel
Pyflakes
pytest
Python 编程
pep8 Checker
Styles
PEP 8
Google Python Style Guide
Code Style from The Hitchhiker's Guide
dbow
V2EX  ›  Python

分享自写的 DNS 污染过滤程序。

  •  1
     
  •   dbow ·
    maliubiao · 2014-08-19 17:46:17 +08:00 · 2542 次点击
    这是一个创建于 3731 天前的主题,其中的信息可能已经有所发展或是发生改变。
    又一个DNS污染过滤项目,只不过用起来简单爆了。
    项目地址: https://github.com/maliubiao/simple_dns
    说明:
    python gfw.py domain
    结果是查询domain的A Record, 用黑名单过滤污染的包, 返回正确的包的结构dump.

    python localdns.py
    在本地53端口建立DNS转发,默认转发到8.8.8.8, 同样过滤污染的包。
    在/etc/resolv.conf添加127.0.0.1作为默认的NS即可

    dns.py
    解析dns包的库

    总共不到一千行代码, 拿来即用, 不需要配置, 代码非常简单易懂, 修改方便, 转发包采EPOLL高效异步,CPU使用平均0.05%, 仅支持linux。

    不过仅过滤DNS污染效果不明显,很多是直接IP屏蔽的,也有有效的,比如dropbox使用了localdns之后就能用了。


    欢迎反馈,欢迎fork.
    第 1 条附言  ·  2014-08-21 09:19:51 +08:00
    已经增加了通用的select支持, windows, linux, BSD(OSX, BSD系列)应该都能用了。
    10 条回复    2014-09-20 14:26:19 +08:00
    JoeyChan
        1
    JoeyChan  
       2014-08-19 20:28:26 +08:00   ❤️ 1
    很复杂的样子,我一直用iptables过滤,大概几十条规则就可以解决污染了。
    dbow
        2
    dbow  
    OP
       2014-08-19 21:27:22 +08:00
    @JoeyChan localdns挺简单的,而且你可以看到每一个DNS请求的域名,以及域名是不是被gfw污染。
    gyteng
        3
    gyteng  
       2014-08-19 21:31:16 +08:00
    最近开始学nodejs,昨天也写了个简单粗暴的
    https://github.com/gyteng/smartDNS
    20150517
        4
    20150517  
       2014-08-19 22:23:19 +08:00
    重写轮子啊,你dns功能可以直接用twisted包里的dns服务器啊
    whtsky
        5
    whtsky  
       2014-08-19 22:43:02 +08:00 via iPhone
    能不能别强制用 epoll ...
    sobigfish
        6
    sobigfish  
       2014-08-20 20:31:26 +08:00
    没有 EPOLL -.-
    dbow
        7
    dbow  
    OP
       2014-08-20 23:09:57 +08:00
    @whtsky
    @sobigfish
    已添加select.select支持. :)
    sobigfish
        8
    sobigfish  
       2014-08-21 10:38:54 +08:00
    youjustdoit
        9
    youjustdoit  
       2014-09-20 09:06:41 +08:00
    @JoeyChan dns污染很讨厌,正在学习iptables,如何用iptables过滤dns污染,能否分享一个
    JoeyChan
        10
    JoeyChan  
       2014-09-20 14:26:19 +08:00
    @youjustdoit
    参考
    https://code.google.com/p/openwrt-gfw/wiki/AntiDNSPoisoning
    使用这个教程一段时间就会自动生成几十条过滤规则,基本可以彻底杜绝污染,而且不影响本地cdn加速。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5533 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 05:56 · PVG 13:56 · LAX 21:56 · JFK 00:56
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.