VPN
Virtual Private Network ・ ぶいぴーえぬ
パケットを暗号化して別のパケットに包み、公衆網の上に仮想的な専用線を通す技術。
✦ 30秒で試す — 航海同じ番号の住所が世界中にあるのに、迷わず届く盗聴者が写しから読み取れるのは?予想してみる概要
VPN(Virtual Private Network)は、インターネットのように誰でも使える公衆ネットワークの上に、暗号化で守られた仮想的な専用線を通す技術です。物理的には他人のトラフィックと同じ回線を流れているのに、論理的には「自分たちだけの閉じたネットワーク」としてふるまう — この「仮想的なプライベートネットワーク」がそのまま名前になっています。
典型的な使いどころは2つあります。1つは拠点間 VPN で、東京本社と大阪支社のネットワークをインターネット越しにつなぎ、1つの社内 LAN のように使うもの。もう1つはリモートアクセス VPN で、自宅やカフェにいる社員の PC を社内ネットワークに「参加」させるものです。社内の IPアドレス(192.168.x.x のようなプライベートアドレス)宛てにそのまま通信できるので、社内のファイルサーバや業務システムを、社内にいるときと同じ感覚で使えます。
このほか、公衆 Wi-Fi での盗聴対策や接続元の IP アドレスを隠すことを目的とした個人向けの VPN サービスも普及していて、「VPN」という語が指す範囲は文脈によってかなり広がっています。どれにも共通するのは、「本物のパケットを暗号化して、別のパケットに包んで運ぶ」という仕組みです。
なぜ生まれたか
VPN 以前、離れた拠点のネットワークを安全につなぐ手段は、通信事業者から物理的な専用線を借りることでした。専用線は確かに安全ですが、距離に応じた月額料金がとても高く、拠点が増えれば拠点の組み合わせの数だけ回線の契約が必要になります。海外拠点との接続ともなれば、中小企業には手が出ない金額でした。
1990年代にインターネットが企業に行き渡ると、「この安い公衆網を専用線の代わりに使えないか」という発想が自然に生まれます。問題は2つありました。1つは、インターネットが盗聴も改ざんもされうる信頼できない経路であること。もう1つは、社内で使っているプライベートアドレス宛てのパケットは、そのままではインターネットのルータが運んでくれないことです。そこで、パケットを暗号化したうえで、インターネットで通用するアドレスを書いた別のパケットに包んで運ぶ「トンネリング」が発展しました。IP 層に暗号化とカプセル化を組み込む IPsec は1995年に最初の仕様がまとまり、1998年の改訂で広く実装されるようになります。VPN は「専用線の安全性を、インターネットの価格で」実現する手段として広まっていきました。
詳細
トンネリング — 包んで、運んで、剥がす
VPN の中核はカプセル化です。社内宛てのパケット(宛先がプライベートアドレスで、そのままではインターネットを渡れないもの)を丸ごと暗号化し、VPN 装置同士がやり取りする「外側のパケット」の中身として詰め込みます。外側のヘッダに書かれるのは、両端の VPN 装置のグローバルな IPアドレスです。インターネット上のルータは外側のヘッダだけを見て運び、経路上で覗く者に見えるのも外側のヘッダだけです。本当の宛先も中身も、暗号化されて読めません。受け取った側の VPN 装置が外側を剥がして復号し、元のパケットを社内ネットワークへ流します。この包んで運んで剥がす一連の動きが「トンネル」と呼ばれるゆえんです。
ここで、包むことと暗号化することは別の働きをしている点に注意してください。包む(カプセル化)ことで、プライベートアドレス宛てのパケットがインターネットを渡れるようになります。暗号化することで、渡っている間に読まれず、書き換えられもしなくなります。GRE のように「包むだけ」のトンネルも存在し、届きはしますが中身は丸見えです。トンネルの入口と出口では、機密性(盗聴されても読めない)だけでなく、完全性(改ざんを検知できる)と相手の認証(正しい拠点・正しい利用者か)も確かめます。この3つがそろって、はじめて「仮想専用線」を名乗れます。
社内宛てのパケットを VPN 装置に落として、包まれて運ばれる様子を確かめてください。見る立場を「盗聴者の視点」に切り替えると、経路の途中で何が読めるのかが分かります。VPN を通さずにインターネットへ出したときや、暗号化せずに包むだけにしたときも比べてみてください。
支社の PC が、本社の Wiki(192.168.2.20)に給与表を取りに行きます。パケットをつかんで、VPN 装置へ運んでください(タップでも送れます)。
包むことの代償 — オーバーヘッドと MTU
外側のヘッダと暗号化のための情報を足すぶん、パケットは数十バイト大きくなります。回線が一度に運べる大きさ(MTU。イーサネットでは通常 1500 バイト)は変わらないので、もともと上限ぎりぎりだったパケットは包むとはみ出し、分割されたり捨てられたりします。「VPN につなぐと、小さな通信は通るのに大きなファイルのダウンロードだけ止まる」という症状の多くはこれが原因で、VPN 装置で TCP の最大セグメント長を小さく書き換える(MSS クランプ)などで対処します。暗号化と復号の計算も、装置の CPU に負担をかけます。
代表的な方式 — IPsec、TLS-VPN、WireGuard
実装の方式はいくつかの系譜に分かれます。最も歴史があるのは IPsec で、IP 層そのものにカプセル化と暗号化を組み込む標準です。拠点間 VPN の定番で、ルータやファイアウォール製品に広く実装されていますが、設定項目が多く、鍵交換(IKE)の設定の食い違いによるトラブルは現場の風物詩です。また、IPsec の ESP はポート番号を持たないため、NAT を通れないという問題があり、UDP の 4500 番に包み直す NAT トラバーサル(NAT-T)で回避します。
リモートアクセスで広まったのが TLS を使う VPN(SSL-VPN とも呼ばれます。OpenVPN などが代表)です。HTTPS と同じ TLS の上にトンネルを作るため、443 番のポートしか通さない厳しいファイアウォールの内側からでも接続しやすいのが強みです。ホテルや公衆 Wi-Fi の NAT で IPsec が詰まりやすいのに対し、この「HTTPS にまぎれ込める」性質は実用上の大きな利点でした。
近年の新定番が WireGuard です。IPsec や OpenVPN の実装が数十万行に膨らんでいるのに対し、WireGuard は暗号方式を現代的なものに固定して選択肢をなくし、数千行のコードで実装されています。設定は公開鍵暗号の鍵ペアを交換するだけと SSH に似た簡潔さで、UDP の上で動き、性能も優れています。2020年に Linux のカーネルに取り込まれ、個人向け VPN サービスの多くも採用しています。
実務の論点 — 全部通すか、分けるか
リモートアクセス VPN の設計で必ず議論になるのが、フルトンネルかスプリットトンネルかです。フルトンネルは端末の全通信を VPN 経由にする方式で、管理側はすべての通信を監視・制御できますが、動画の視聴のような社内と無関係なトラフィックまで社内を経由し、VPN 装置が帯域のボトルネックになります。スプリットトンネルは社内宛てだけをトンネルに流し、それ以外は直接インターネットへ出す方式で、効率的な反面、端末が「守られた経路」と「裸の経路」の両方に足をかけることになります。全社員が一斉に在宅勤務になったとき、VPN 装置の容量が尽きて仕事にならない — という事態は、この集中型の構成の限界を広く知らしめました。
VPN の先へ — 境界防御からゼロトラストへ
VPN は「社内ネットワークの内側は信頼できる」という境界防御の考え方の延長にあります。VPN を通った端末は社内の広い範囲に届くため、認証情報が盗まれたり端末がマルウェアに感染したりすると、侵入者にも同じ広さの到達範囲を与えてしまいます。実際、VPN 装置の脆弱性を突いた侵入はランサムウェア被害の主要な入口の1つです。この反省から、「ネットワークのどこにいるかではなく、アクセスのたびに利用者と端末を確かめる」ゼロトラストへの移行が進み、アプリケーション単位でアクセスを仲介する ZTNA(Zero Trust Network Access)がリモートアクセス VPN の後継と位置づけられています。
とはいえ、拠点間の接続や古いシステムへの到達手段として、VPN の出番はまだ長く続きます。「万能の安全装置」ではなく、「信頼できない経路の上に、包んで暗号化した仮想の専用線を通す技術」という等身大の理解を持っておくことが大切です。
試問
画面には、支社の LAN にある PC から、支社と本社の VPN 装置、その間のインターネットを経て、本社の Wiki(社内サーバ)へ続く経路があり、途中に写しを取る盗聴者がいます。パケットをつかんで VPN 装置かインターネットへ運ぶと送れ、上の欄で「包み方」と、画面を「盗聴者の視点」で見るかを切り替えられます。いまは暗号化せずに包むだけの設定です。
支社の PC が、本社の Wiki(192.168.2.20)に給与表を取りに行きます。パケットをつかんで、VPN 装置へ運んでください(タップでも送れます)。
