V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
GeekTest
V2EX  ›  宽带症候群

防各种 HTTP、DNS 劫持的办法

  •  
  •   GeekTest · 2016-01-17 20:32:38 +08:00 · 9541 次点击
    这是一个创建于 3267 天前的主题,其中的信息可能已经有所发展或是发生改变。

    今天看到北京联通开始劫持到联通自己的缓存
    应该就是抢先回应个包 302 跳转到联通自己的缓存服务器
    可以用 iptables 过滤掉关键字
    安装 iptables-mod-filter 添加规则

    iptables -I FORWARD -m string --string "Location: http://*.*" --algo bm -j DROP

    ( http://*.*为缓存服务器 IP 如: http://127.0
    还有一个办法是拆分 HTTP 包
    https://github.com/lehui99/ahjs5s

    DNS 劫持可以使用非 53port 或使用 tcp 查询( AliDNS 支持 TCP )
    或使用 DNSPod 的 HTTPDNS
    使用 DNSAgent 来通过 HTTPDNS 解析
    https://github.com/stackia/DNSAgent

    12 条回复    2016-02-25 07:31:11 +08:00
    v1024
        1
    v1024  
       2016-01-17 21:21:09 +08:00
    防火墙规则似乎会很耗资源,路由器上用的话,得不偿失。
    GeekTest
        2
    GeekTest  
    OP
       2016-01-17 21:22:57 +08:00
    @v1024 不是特别耗资源
    datocp
        3
    datocp  
       2016-01-17 23:00:43 +08:00 via Android
    iptables 的方法在 ros 下做过,发现 302 服务器好多,封不光。最大的问题是,好像会出现某种问题导致 wget 再也无法下载。 302 其实还算正常现象,除非类似下到应用宝这种烂用情况。
    KCheshireCat
        4
    KCheshireCat  
       2016-01-17 23:55:58 +08:00
    不知道移动和联通劫持方法是不是一致的

    /t/237095#reply10

    我在这里写过过滤所有移动 302 劫持的规则,用 TCP 的 flag 标志作为区分,使用 u32 模块

    然后是 DNS 抢答,也是用 u32 模块

    iptables -A INPUT -p udp --sport 53 -m u32 --u32 "0>>22&60@8&0x8440=0x8400" -j DROP
    iptables -A FORWARD -p udp --sport 53 -m u32 --u32 "0>>22&60@8&0x8440=0x8400" -j DROP

    原理是移动 DNS 抢答一定会带 dns.flags.authoritative 标志位,
    但是又和正常的包不一样一定不带 dns.flags.authenticated 标志。
    会不会误杀正常的应答包还不确定。
    GeekTest
        5
    GeekTest  
    OP
       2016-01-18 00:41:14 +08:00 via Android
    @KCheshireCat DNS 直接用 HTTPDNS
    qq651438555
        6
    qq651438555  
       2016-01-18 07:27:50 +08:00
    @GeekTest 不知道昨弄的,没办法
    20150517
        7
    20150517  
       2016-01-18 21:43:24 +08:00
    @GeekTest 用 mod filter 超废资源,大量的数据都要去 filter 一遍,影响网速的
    gzelvis
        8
    gzelvis  
       2016-01-20 04:27:33 +08:00
    用 dnspod 的 public dns 119.29.29.29 能解决这个问题吗?
    ywto
        9
    ywto  
       2016-01-22 19:46:54 +08:00
    与楼上同问
    akw2312
        10
    akw2312  
       2016-02-25 01:42:35 +08:00 via Android
    @KCheshireCat 廣州移動表示加了防止 302 的規則之後
    看 douyu 依然 302 到 9999 端口的緩存...
    akw2312
        11
    akw2312  
       2016-02-25 02:22:37 +08:00 via Android
    @KCheshireCat 另外也在 merlin 測試了一下那個規則
    錯誤返回 x_tables: ip_tables: u32.0 match: invalid size 2032 (kernel) != (user) 1984
    KCheshireCat
        12
    KCheshireCat  
       2016-02-25 07:31:11 +08:00
    @akw2312

    我这边地理坐标是浙江移动,不同地区劫持方式可能有差异

    你可能需要用 Wireshark 来观察劫持的 302 包与正常的 302 有何区别

    然后关于错误我也不清楚什么问题,抱歉。

    我是使用 debian testing 发行版作为网关使用的。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2801 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 32ms · UTC 13:46 · PVG 21:46 · LAX 05:46 · JFK 08:46
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.