学校Wi-FiはなぜTwitterの画像が見れないのか、その謎を解明すべく我々調査隊はアマゾンの奥地へと向かった

はじめに

私が所属している学校では、インターネットを使用する際は校内にあるHTTPプロキシに接続しなければなりません。

そのため、HTTP及びHTTPS以外は通信できないので、UDPの通信等は校内では不可能になっています。(TCPでも、例えば校外サーバへのSSH通信などはできません)

しかし、HTTP及びHTTPS通信でもTwitterの画像だけは表示されません。

なぜなのでしょうか?そのなぞを解明すべく我々調査隊はアマゾンへと向かいました。

ブラウザでとりあえず確認

ブラウザの開発用画面のネットワーク部分を見ます。 画像は載せませんが、pbs.twimg.com というTwitterの画像サーバだけがHTTPステータスコードが403でした。 つまり閲覧禁止です。

つまり

HTTPプロキシ側でTwitterの画像サーバだけがフィルタリングされているだけでした。

なぜフィルタリングされている?

以下の内容は全て私の推測です。

プロキシサーバは、外部ネットワークとの通信を中継することでユーザの一元管理やフィルタリングが可能になり、内部ネットワークのセキュリティ確保等の理由に使用されます。 その他に重要な役割として、プロキシサーバでは1度通信した内容(Webページの情報など)をキャッシュしておくことで、プロキシサーバ利用者が何度もアクセスするようなサーバとの通信を高速化が期待されます。

ん?プロキシサーバ利用者が何度もアクセスするようなサーバ?

そうです、Twitterですね。 Twitterに流れてくる膨大な画像コンテンツをキャッシングしていたら、どうなるでしょうか。当然サーバのストレージ容量を圧迫してしまいます。

そのため、わが校のプロキシサーバではTwitterの画像サーバがフィルタリングされているのだと推測しています。

どう回避するか

HTTPプロキシ経由でのVPNサーバ接続

VPNサーバは国内to国内だとUDPでの利用が多いですが、TCPでももちろん通信可能です。 つまり、校内プロキシサーバとVPNサーバとの通信をHTTPorHTTPSでトンネリングすれば、アクセス先を秘匿化できTwitterの画像を閲覧することが可能になります。

OpenVPNを使用したVPN通信 with HTTPトンネリング

/etc/openvpn/server.confOpenVPNのサーバ設定において、まず proto tcp と記述し使用するプロトコルTCPとしておきます。 そして、

http-proxy プロキシサーバのIPアドレス プロキシのポート番号

のようにしてhttp-proxyディレクティブを追加すれば設定完了です。

さいごに

この記事の内容を実践して発生したあらゆる怒られは、筆者は責任を負いかねます。