社内ネットワークからインターネットへの接続手段が、実質的にHTTP(HTTPS含む)だけになってしまったら、あなたはどうしますか。そんな会社は辞めてしまうというのが根本的な解決策ですが、浅はかなネットワーク管理者の裏をかいてやるというのもまた快感というものです。穴は通るためにあるのです。
このページではこのような、特定のプロトコルしか通さないノード間にまったく別のプロトコルを通す、トンネリングを実現するソフトウェアを比較検討しています。なにぶん、このような状況に陥れられてから短期間で複数のソフトウェアを使ってみただけなので、研究が浅い部分もあると思います。遠慮なくツッコんでください。←ようするに、単にトンネルを掘れれば目的を達成できたのに、いろいろ試しているうちに面白くなり、手段が目的化してしまったので、もったいないからまとめただけ、ということです。
なお、ここでは「内から外」へのアクセス手段を検討しますが、うまく設定すれば「外から内」へのコネクションを作成することも可能だと思われます。しかし、そのような設定は根本的に危険なので、ファイアウォール管理者の協力の元でオフィシャルな方法として実施すべきものだと思い、取り上げませんでした。
安全でない経路を使ってPOP3やIMAP4でメールを読む時に、情報が漏洩しないように暗号化できると嬉しい。ファイアウォールの内側から、HTTP proxyを通して外部のホストにsshでアクセスしたい。
このように、本来の経路・プロトコルをそのまま使わずに、別のプロトコルを通して通信を行なうことを、このページでは「トンネリング」と呼びます。トンネリングを実現するソフトウェアが「トンネリング・ソフトウェア」です。IPv6をIPv4のパケットでカプセル化するような場合にもこの用語を使いますが、ここではこのレベルのトンネリングは扱いません。
ここではひとくくりに「トンネリング・ソフトウェア」と呼んでいますが、その出自によって2つの方向性があるようです。ひとつはセキュアでない経路をセキュアにする(VPN: Virtual Private Network)のが目的のソフトウェア、もうひとつがあるプロトコルの上に別のプロトコルを通す(トンネル)のが目的のものです。
どちらの方向性を持って生まれても、ある程度進化すると他方の特徴も取り込み始めるので、最終的にはよく似た機能を持つようになります。このため、このページでは両者を明確に区別していません。
筆者が外部とのつながりとしてHTTP/HTTPSのproxyサーバしかない環境で、なんとかして外部ホストとsshを使おうとする過程で使ってみたソフトウェアです。このため偏りがあるかもしれません。リンク先はそれぞれのオフィシャルサイトです。
また、以下は今後取り上げるかも知れないけれど、少なくとも執筆時点では未使用なソフトウェアです。
各ソフトウェアの機能を表形式で比較します。
具体的に各ソフトウェアを使ってみます。実際の状況を仮定して、秘密のトンネルを通す方法を解説します。