当前位置:操作系统 > 安卓/Android >>

配置Android支持GAE Proxy

这两天想这在Android上翻墙,谁不想科学上网啊!于是倒弄一个叫做GAE Proxy的代理软件。

         该软件提供一键代理,但前提是机器必须root和支持iptables,如果不支持iptables,只能用GAE 自带的浏览器翻出去,机器本身的软件(比如浏览器,Youtube客户端)都不能翻墙。我们的机器已经root了,也支持iptables命令,但机器本身软件就是翻不了。

         找找问题,试了我的神机HUAWEI 8650,可以,是正常的。又试了棒子的9250,也没问题。人家的都可以,为啥我们的产品不行呢。

         用lsmod看了一下,神机和9250里面一个模块都没有,也就是说全部都编译进内核了,而我们的机器,大部分非核心都编译成模块的,在启动的时候在加载。难道模块真的会有问题?? iptables确实也是编译为模块的。

         看了GAE官网上,想要自由地翻,iptables应至少支持DNAT或REDIRECT中的一种。好吧,咱也加载。加载完后,还是不行。

          这个时候郁闷了,把iptables相关的 全部编译进内核,竟然神奇的可以了。说明肯定是模块不全。

         logcat看一下这个GAE Proxy在启动的时候都干了什么事情,这个代理跟squid差不多,都是借助iptables转发。

D/GAEProxy( 1274): /data/data/org.gaeproxy/iptables -t nat -A OUTPUT -p tcp -d 10.0.0.0/8 -j RETURN
D/GAEProxy( 1274): /data/data/org.gaeproxy/iptables -t nat -A OUTPUT -p tcp -d 172.16.0.0/12 -j RETURN
D/GAEProxy( 1274): /data/data/org.gaeproxy/iptables -t nat -A OUTPUT -p tcp --dport 80 -j REDIRECT --to 8123
D/GAEProxy( 1274): /data/data/org.gaeproxy/iptables -t nat -A OUTPUT -p tcp --dport 443 -j REDIRECT --to 8124

           然后再用 iptables -L -t nat看一下,是最后出了问题,在做端口重定向的时候失败了。提示

运行iptables -t nat -A OUTPUT -p tcp --dport 80 -j REDIRECT --to 8123

iptables: No chain/target/match by that name

           看了iptables指南中写道:

这说明你要用的链或 target、或 match 不存在,原因有很多,但最普遍的
是你拼错了名字。当你想使用一个不可用的模块时也会产生这种错误。模块之所
以不可用,可能是因为你没有装载正确的模块,或者内核里不包含那个模块,或
者是 iptables 自动装载模块时失败了。通常,你不止应该考虑上面提到的所有
解决办法,还要考虑规则中 target 的拼写错误,或者其他的原因。
          拼写错误不可能,那就是没有装载正确模块。可以,这NAT,REDIRECT 我都加载了啊,用lsmod看都是有的。

          真的找不出还缺什么模块,失败了又不提示缺哪个模块,手机上都是编译进内核的,也无法比较。

          这个时候突然想到我的PC也是刚配了翻墙,而且都正常,lsmod看一下,比较不同。终于发现了,缺少xt_tcpudp模块!

modprobe xt_tcpudp

然后再试,果然通了。


           总结:想无拘束地翻墙,需要三个模块(这些模块可能依赖其他模块)

modprobe iptable_nat

modprobe ipt_REDIRECT

modprobe xt_tcpudp


这样就可以了。

补充:移动开发 , Android ,
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,