悪戦苦闘して出来るようになったWiFi環境でProxy超え方法をまとめてみました。
参考URL
http(s) proxy support (web, maps, etc) - xda-developers
http(s) proxy support (web, maps, etc) - Page 67 - xda-developers
使用したアプリ
Tranperncy Proxy 3.0.8beta (要root権限)
インストールして、そのままEnableにするとエラーがでて、正常動作ができません。
どうやら、IDEOSではiptablesがREDIRECTに対応していないみたいです。
これを解決するには、起動時のスクリプトを修正する必要があります。
ちなみに、今回の作業はAndroid開発環境を導入してやってみました。
作業手順
下記スクリプトを修正していきます。
/data/data/com.hasbox.tproxy/files/redirect.sh
ファイル所有権の変更 (端末側)
#chmod 777 redirect.sh
オリジナルのredirect.shを取り出す(開発環境側)
adb pull /data/data/com.hasbox.tproxy/files/redirect.sh redirect.sh
(未検証だけど、su権限が使えるファイラを使って取り出しても良いかも。)
redirect.shの修正(REDIRECT部の指定方法を書き換えます)
修正前
#!/system/bin/sh
case $1 in
start)
case $2 in
http)
iptables -t nat -A OUTPUT -p tcp --dport 80 -j REDIRECT --to 8123
iptables -t nat -A OUTPUT -p tcp --dport 443 -j REDIRECT --to 8124
iptables -t nat -A OUTPUT -p tcp --dport 5228 -j REDIRECT --to 8124
;;
socks)
iptables -t nat -A OUTPUT -p tcp -j REDIRECT --to 8123
esac
;;
stop)
iptables -t nat -F OUTPUT
;;
esac
修正後
#!/system/bin/sh
case $1 in
start)
case $2 in
http)
iptables -t nat -A OUTPUT -p tcp --dport 80 -j DNAT --to-destination 127.0.0.1:8123
iptables -t nat -A OUTPUT -p tcp --dport 443 -j DNAT --to-destination 127.0.0.1:8124
iptables -t nat -A OUTPUT -p tcp --dport 5228 -j DNAT --to-destination 127.0.0.1:8124
;;
socks)
iptables -t nat -A OUTPUT -p tcp -j DNAT --to-destination 127.0.0.1:8123
esac
;;
stop)
iptables -t nat -F OUTPUT
;;
esac
書き換えたredirect.shを書き戻す(開発環境側)
adb push redirect.sh /data/data/com.hasbox.tproxy/files/redirect.sh
所有権の変更(端末側)
#chmod 500 redirect.sh
もともとは、所有権700なのですが、500にしないと、修正したファイルがEnable/Disable切替時にプログラム本体によって、redirect.shが上書きされ、元に戻ってしまうようです。
以上で作業は終了。
あとは、Tranperncy ProxyをEnableにしてやれば、Proxy超が出来るようになってるはず。
少なくとも、自分の環境ではiptablesで指定したポートを使用した通信は現状問題ないです。
参考
こんな感じのエラーが出ていても、iptableのtableは変更されているので問題ないみたい。
"FIX ME! implement getprotobyname() bionic/libc/bionic/stubs.c:372".
このエラーが出ているときは、確実にアウトみたいです。
iptables: No chain/target/match by that name


