学校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.conf
のOpenVPNのサーバ設定において、まず proto tcp
と記述し使用するプロトコルをTCPとしておきます。
そして、
http-proxy プロキシサーバのIPアドレス プロキシのポート番号
のようにしてhttp-proxyディレクティブを追加すれば設定完了です。
さいごに
この記事の内容を実践して発生したあらゆる怒られは、筆者は責任を負いかねます。