壁を越え、鎖を砕け
支那大陸におけるインターネットの実状は多分皆が知っておる。「Across the Great Wall we can reach every corner in the world.」と、支那から世界へ始めてのメールだった。今、その偉い壁はすでに、いと高し。しかし、自由を求めるものは、その努力をやめない。
その壁を越える常規の方法は、VPNとプロキシだ。VPNなら、使用は簡単だが、サーバーを維持することは結構高い金額が必要だ。VPNの接続を商業化して販売することが多見したから、いよいよ天朝に注目され、審査が必要になってしまった。VPNの接続は、今成功率はかなり低下してしまった。プロキシもその状況で、どの方法が人気になったら、すぐ閉鎖命令が来るらしい。べにあんずは二週間前から接続不能、まだ回復へ努力してると書いただけ。ゴーエジントは最近、GitHubでのプロジェクトを削除した、たくさんのありがとうのコメントに私も一言残した。自由の代価は、もっと大きくなる。
今度実践した方法は、個人向けの専用も分かち合いも可能な壁越える方法だ。まず、必ず、物理的に自由世界に存在いるサーバーが持つが前提。そのサーバーはVPSとかECSとかレンタルサーバーとか構わないが、SSHによる接続可能という機能を確保すべきだ。そのサーバーのホストとドメインは、後使うところがある。例として、ホストは9.9.9.9で、ドメインはserver.comだと設定する。また、そのサーバーには、普通の通路用ユーザーはfreeと設定して、通路のポートは4444とする。
よし、いまからクライアントで、このサーバーとポートマッピングをする。OS XやLinuxなどの端末で以下の命令を実行すればいい。
ssh -D 4444 -l free 9.9.9.9 -N -f -o GatewayPorts=yes -o ServerAliveInterval=60
それで、ポートマッピングが完了。
※ ポートマッピングとは、ブロードバンドルータなどが持つ機能の一つで、プロバイダなどから割り当てられたグローバルアドレスの特定ポートに対する接続要求を、特定のプライベートアドレスの特定のポートに自動的に転送する機能。 IT用語辞典 e-Words より
ポートマッピングは、クライアントで指定ポートでSOCKSによるプロキシを支援する。OS XにてChromeは、SwitchySharpというプラグインがある。直接SOCKSを設定するもいいが、PACファイルを作成して利用することもできる。とにかく、パソコンで利用することはそれでよし。
PACファイルはなんだと、多分突っ込むが、これはプロキシ自動設定だ。一つのファイルで、URLを一定的なルールを経て、プロキシを使うかどうか、またどのプロキシを使うなどを自動的に決めることができる。そのファイルの利用には、Content-Type: application/x-ns-proxy-autoconfig
というヘッダが必要。個人サイトに、PHPとFlightで、簡単な例を作ってみた。
Flight::route('GET /pac/@method/@host/@port',function($method,$host,$port){
header("Content-Type: application/x-ns-proxy-autoconfig");
echo "function FindProxyForURL(url, host) {
var autoproxy = '".strtoupper($method)." ".$host.":".$port."';
if (isPlainHostName(host) ||
host.indexOf('127.') == 0 ||
host.indexOf('192.168.') == 0 ||
host.indexOf('10.') == 0 ||
shExpMatch(host, 'localhost/*')
) {
return 'DIRECT';
} else {
return autoproxy;
}
}";
});
たとえそのホストマピングのIPは192.168.1.1であれば、上記のPAC生成は、http://server.com/pac/SOCKS/192.168.1.1/4444で請求すると、利用できるPACファイルのURLが整備する。同じネットであれば、iOSのWiFi設定に、プロキシを自動にして、URLをそれを入力すれば、iPhoneなどでも利用できる。
ククク、よいではないか。
コメントを残す