今天看到北京联通开始劫持到联通自己的缓存
应该就是抢先回应个包 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 发行版作为网关使用的。 |