はじめに
大学や職場からロックアウトされて、自宅で研究開発をしている人も多いのではないかと思います。
自宅にはノートPCしかなく、研究室のGPUを搭載したハイスペックなサーバを遠隔でよいので使いたい、、、ということも多いと思うので、それを可能にするP2P型のVPN(zerotierとtailscale)を紹介します。
注意
この文書では、「UDPパンチホーリング」を使ったP2P型のVPNを紹介します。特に大組織では、セキュリティポリシーとしてP2P型のVPNの利用が禁止されている場合もあります。使う前に確認しておきましょう。
通常のVPN
通常のVPNでは、VPNゲートウェイにグローバルIPアドレスを割り当てる必要があります。しかし、大学の研究室のように組織全体でNATが設置してあると、グローバルIP上でゲートウェイを公開できません。
P2P型のVPNとは?
P2P型のVPNは、VPNクライアントだけでなくサーバもNATの下に設置して直接通信できる「NAT越え」の機能が備わっています。
P2P型のVPNはNAT越えを実現するために「UDPパンチホーリング」という技術を使います。
NATはパケットを通過させる際にパケットのヘッダに格納されたクライアントのポート番号を書き換え、その対応をしばらく記憶しています。これによって、NATの下に複数のクライアントがあった場合でも、各クライアントが同時に外部のサーバと通信できるのです。
UDPパンチホーリングでは、まず、NATの下に接続されたクライアントとサーバが、仲介サーバに対してUDPパケットを送ります(図中①)。
仲介サーバ上では、クライアントとサーバの変換後のポート番号が見えるので、それをそれぞれに教えてあげます。
クライアントは、サーバの変換後のポート番号に対してパケットを送ります。すると、NATでパケットが逆変換されて、NATの下にあるサーバに対してパケットが直接届きます(図中⑤)
。
P2P型のVPNでは、その後、仲介サーバに登録されたサーバの公開鍵を使って、クライアントからサーバに暗号化鍵を送ります。この暗号化鍵は、UDPパンチホーリングを使って直接送られるだけでなく、公開鍵を使って暗号化されているため、秘密鍵を持ったサーバにしか復号化できません。
この鍵を使って「エンドツーエンド暗号化」が行われるため、通信の秘密は仲介サーバからも守られます。
以下、P2P型のVPNサービスを2つ紹介します。
ZeroTier
P2P型VPNの定番サービスです。有料オプションもありますが、ほとんどの機能を無料で使うことができます。
つかいかた
- My ZeroTier( https://my.zerotier.com/ )を開いてアカウント登録する。Google Accountを使ってアカウント登録するのがおすすめです(Google Accountには二要素認証を設定しておきましょう)。
- 「Networks」>「Create a Network」をクリックして、ネットワークを作成する。ネットワークを作成するとIDが表示されるのでコピーしておく。
- ダウンロードページ( https://www.zerotier.com/download/ )から、各OS用のクライアントをダウンロードしインストールする。
- WindowsやOSXではGUI上で「Join Network」をクリックして、2でコピーしたネットワークIDを入力してください。Linuxでは、コマンドライン上で
sudo zerotier-cli join [ネットワークID]
と入力します。 - [重要] この時点では、まだネットワークに接続されていません。My Zerotier( https://my.zerotier.com/ )を開いて「Networks」>「Joinしたネットワーク」をクリックして、下の方にある「Members」にクライアントが表示されていることを確認し、「Auth?」チェックボックスをチェックしてください。
「Members」の「Managed IPs」に表示されているIPアドレスが各クライアントのIPアドレスです。sshなどを使って接続してみましょう。
ネットワークIDがあれば、複数のPCを同一のネットワークに所属させることができます。IDを皆に共有して研究室のネットワークを作ってしまいましょう。
tailscale
2020年4月に公開されたP2P型VPNの新星です。
暗号化プロトコルとしてWireGuardプロトコルを使っており、非常に高速で安定した接続を実現しています。
つかいかた
以下のページを参照してください。tailscaleには非常に良くできたGUIが付属しており、説明なしで使えると思います。
おわりに
P2P型VPNで快適な在宅研究ライフを!