Http proxy の壁を素直に通る
注意
Proxy の安易な突破は問題となりえますので,ここに示された方法を実践する際には担当者に問い合わせた上で,自己責任でお願い致します.
プロキシの呪縛
皆さんのおられる職場や学校には Http proxy はありますでしょうか? Http proxy とは http や https のアクセスを行う際に, クライアントとサーバの中間に入りデータのキャッシュやアクセスログの収集, 特定のサイトのブロックなどを行う,クライアントの代理となるソフトウェアです. これによって,ユーザによらず危険なサイトのアクセスを制限したり, 就業中の無意味なネットサーフィンを管理することもできるかもしれません. Http proxy を扱う有名なソフトウェアとして Squid があげられます.
ですがユーザからみると,ソフトウェアのアップデートも行えないということもあるかもしれませんし, 確認しなければならないのにページが見られない,なんて状況もあるかと思います. 意味のわからない理由(特定の単語がURLに含まれる等)でブロッキングが行われていることもあります.
そこで今回は Http proxy をそのまま通って,確認したいのに見られないページを一時的に見る方法を考えてみます. (安全は保証できませんが Web Proxy なんかもありますので,とりあえずサイトを見たいというかたは検索してみてください)
事前準備
以下必要となるもの
- グローバル IP アドレス(ドメイン)を持つ制限のない外部コンピュータ(サーバ,VPS,NATによって外部 port からのアクセス転送可能なLAN内コンピュータ)
- クライアントとなるコンピュータ
- ssh (クライアントとなるコンピュータ) のインストール
- corkscrew (proxyを通るために必要) のインストール
クライアントは Linux が使用可能な状況を想定していますが,わかる方であればどのような環境でも構いません.
環境想定です.
Proxy domain: proxy.example.jp Proxy port: 8080 Proxy username: proxyuser Proxy password: proxyppap Outside domain: outside.example.com Outside ssh port: 443 Outside ssh username: outsideuser Outside ssh password: outsideppap Outside proxy port: 8888
鍵等があるのであれば設定は適宜読み替えてください.
設定
基本 Http proxy は Port 80 と 443 の http と https 以外の要件では外へ行かしてくれないので, https のふりをするために,外部コンピュータの ssh は 443 で待ち受けないといけません.
.ssh/config の設定
Host proxyoutside Hostname outside.example.com Port 443 user outsideuser ProxyCommand corkscrew outside.example.jp 8080 %h %p ~/.ssh/proxy.config LocalForward 8888 localhost:8888
.ssh/proxy.config の設定
proxyuser:proxyppap
proxyoutside
が設定の名称です.
Hostname
がsshの接続先, Port
が待受ているポートを表します.
ProxyCommand
では ssh の通信を渡すプログラムを指定し,
今回であれば corkscrew が Http proxy を通した上で, ssh 先に接続してくれます.
ここに ssh を指定すれば多段アクセスを行うことも可能です.
最後の LocalForward
は ssh で接続している間,指定したローカルのポートへのアクセスを接続先の指定したポートへ転送する設定です.
今回は squid を Port: 8888 で待受させるのでローカルの同じポートを設定しています.
proxy.config は Http proxy に接続する際に必要となるユーザ情報を入れます.
接続
これらの設定を行ったら,
$ ssh proxyoutside
として外部コンピュータへ接続します.
また,ssh で接続している間, localhost:8888
へのアクセスを 外部コンピュータのlocalhost:8888
に転送してくれます.
次に /etc/squid/squid.conf の設定です.
acl outsideproxy src 127.0.0.1/32 http_access allow outsideproxy http_port 8888
これによって,外部コンピュータの localhost:8888
に squid が待ち構えてくれます.
あとは squid を起動した上でクライアントとなるコンピュータのプロキシ設定に localhost:8888
を指定すれば,
Http proxy の壁を素直に通ることができます.
それでは,ご利用は計画的に.
ワザップみたいな文章になったな