今天看到北京联通开始劫持到联通自己的缓存
应该就是抢先回应个包 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
1
v1024 2016-01-17 21:21:09 +08:00
防火墙规则似乎会很耗资源,路由器上用的话,得不偿失。
|
3
datocp 2016-01-17 23:00:43 +08:00 via Android
iptables 的方法在 ros 下做过,发现 302 服务器好多,封不光。最大的问题是,好像会出现某种问题导致 wget 再也无法下载。 302 其实还算正常现象,除非类似下到应用宝这种烂用情况。
|
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 标志。 会不会误杀正常的应答包还不确定。 |
5
GeekTest OP @KCheshireCat DNS 直接用 HTTPDNS
|
6
qq651438555 2016-01-18 07:27:50 +08:00
@GeekTest 不知道昨弄的,没办法
|
8
gzelvis 2016-01-20 04:27:33 +08:00
用 dnspod 的 public dns 119.29.29.29 能解决这个问题吗?
|
9
ywto 2016-01-22 19:46:54 +08:00
与楼上同问
|
10
akw2312 2016-02-25 01:42:35 +08:00 via Android
@KCheshireCat 廣州移動表示加了防止 302 的規則之後
看 douyu 依然 302 到 9999 端口的緩存... |
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 |
12
KCheshireCat 2016-02-25 07:31:11 +08:00
@akw2312
我这边地理坐标是浙江移动,不同地区劫持方式可能有差异 你可能需要用 Wireshark 来观察劫持的 302 包与正常的 302 有何区别 然后关于错误我也不清楚什么问题,抱歉。 我是使用 debian testing 发行版作为网关使用的。 |