GeekTest

防各种 HTTP、DNS 劫持的办法

  •  
  •   GeekTest · Jan 17, 2016 · 10753 views
    This topic created in 3946 days ago, the information mentioned may be changed or developed.

    今天看到北京联通开始劫持到联通自己的缓存
    应该就是抢先回应个包 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 replies  •  2016-02-25 07:31:11 +08:00
    v1024
    v1024
    Jan 17, 2016
    1
    防火墙规则似乎会很耗资源,路由器上用的话,得不偿失。
    GeekTest
    GeekTest
    OP
    Jan 17, 2016
    2
    @v1024 不是特别耗资源
    datocp
    datocp
    Jan 17, 2016 via Android
    3
    iptables 的方法在 ros 下做过,发现 302 服务器好多,封不光。最大的问题是,好像会出现某种问题导致 wget 再也无法下载。 302 其实还算正常现象,除非类似下到应用宝这种烂用情况。
    KCheshireCat
    KCheshireCat
    Jan 17, 2016
    4
    不知道移动和联通劫持方法是不是一致的

    /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
    GeekTest
    OP
    Jan 18, 2016 via Android
    5
    @KCheshireCat DNS 直接用 HTTPDNS
    qq651438555
    qq651438555
    Jan 18, 2016
    6
    @GeekTest 不知道昨弄的,没办法
    20150517
    20150517
    Jan 18, 2016
    7
    @GeekTest 用 mod filter 超废资源,大量的数据都要去 filter 一遍,影响网速的
    gzelvis
    gzelvis
    Jan 20, 2016
    8
    用 dnspod 的 public dns 119.29.29.29 能解决这个问题吗?
    ywto
    ywto
    Jan 22, 2016
    9
    与楼上同问
    akw2312
    akw2312
    Feb 25, 2016 via Android
    10
    @KCheshireCat 廣州移動表示加了防止 302 的規則之後
    看 douyu 依然 302 到 9999 端口的緩存...
    akw2312
    akw2312
    Feb 25, 2016 via Android
    11
    @KCheshireCat 另外也在 merlin 測試了一下那個規則
    錯誤返回 x_tables: ip_tables: u32.0 match: invalid size 2032 (kernel) != (user) 1984
    KCheshireCat
    KCheshireCat
    Feb 25, 2016
    12
    @akw2312

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

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

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

    我是使用 debian testing 发行版作为网关使用的。
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   1211 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 42ms · UTC 17:43 · PVG 01:43 · LAX 09:43 · JFK 12:43
    ♥ Do have faith in what you're doing.