配置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

這樣就可以瞭。

You May Also Like