昨日の投稿で、DS-Lite環境だと、IPv4アドレスが他のユーザと共有になり、一部のポートのみしか占有にならないという話をしました。
そういう環境だと、グローバルIPアドレスで外部から接続できません。もちろん、すべてIPv6でまかなうなら、DS-Lite環境でもグローバルIPアドレスが振られるので問題ないのですが、なかなか、そうもいきません。
そこで、安価なVPSやクラウドサービスの仮想マシン上にVPNサーバーを構築し、そこを中心とした環境を作れば、外部からDS-Lite環境内のサーバ等にアクセスすることが可能になります。こうした環境をSoftEtherで構築しました。
例えば、このような構成です。私は現在、Azure仮想マシンを使っているのですが、これはAWSでも、さくらやConohaのVPSでも構いません。
自宅や出先のPCからは、Azure仮想マシン上に構築したSoftEtherの仮想HUBに接続し、その仮想HUBはあらかじめ会社サーバ上の仮想HUBとカスケード接続されているため、それを経由して、会社ネットワーク(192.168.1.0/24)上の会社PC等に接続できるというわけです。
いちおう、ここでは「会社ネットワーク」、「会社PC」という言い方をしていますが、これは用語を統一して説明を簡単にするためで、自宅ネットワークや自宅PCにカフェのWiFiからつなぐとかいう話でも同じことです。
ちなみに、この構成はSoftEtherを使ったVPN環境構築の一手法に過ぎないことに注意してください。SoftEtherは様々な機能を持っており、正解は一つではありません。私は、これから説明する方法で2週間以上、安定した運用ができていますが、他にもっと良い方法もあるかもしれません。(実は、SoftEther独自のダイナミックDNSサービスや、VPN Azureクラウドを使えば、わざわざ自分でクラウド側を構築しなくても良いかもしれない・・・。)
構築の手順
1. クラウド側のSoftEther Serverの構築
まず、クラウド(ここではAzure)上に仮想マシンを構築します。今回は、Ubuntu 18.04 LTSを使用しています。仮想マシンそのものの構築については、特に説明しません。
そこに、SoftEther Serverを導入し、常時起動した状態にします。その方法は後で説明します。
2. 会社側のSoftEther Serverの構築
次に、会社ネットワーク内の適当なサーバ(例えばRaspberry Piとかでも可。私の環境ではたまたまJetson Nanoだったりします。)にSoftEther Serverを導入します。こちらの環境も今回はUbuntu 18.04 LTSです。
3. SoftEther VPN サーバー管理マネージャで設定
SoftEtherの面白いところで、VPNサーバーの管理は、適当なPC(Windowsが望ましい)にサーバー管理マネージャというGUIのアプリを入れて、そこから設定します。
先ほど説明したように、クラウド側と会社側の双方にSoftEther仮想HUBを設定し、それをカスケード接続しています。また、仮想HUBをクラウド側、会社側にそれぞれ既存のネットワークとブリッジ接続することも必要です。
ここまでの設定は、こちらの記事を参照ください。
4. ルーティングやNATの設定
ここまででSoftEtherに設定した内容では、レイヤー2(L2)までの話なので、「ハードウェアのスイッチングハブを2つと、ハードウェアのLANボードを2つ買ってきて、それぞれを物理的に接続した」ということを仮想的に実現したに過ぎません。
今回やりたいことを実現するためには、レイヤー3のIPアドレスを使用したルーティングの設定を行う必要があります。それは、クラウド側と会社側のサーバのそれぞれでOS(Ubuntu)上の設定を行うということになります。
5. PCやスマートフォンからVPNに接続
ここまで設定したら、あとはクライアントからVPNに接続できます。SoftEtherはSoftEther独自のプロトコル以外にも、L2TP/IPSecやOpenVPNなどのプロトコルで接続することもできます。特に、L2TP/IPSecはOS標準で対応していることが多いため、オススメの接続方法です。
ざっと、このような手順で構築していくのですが、なかなか作業が多く、一つの記事ですべて書くのは難しそうです。そこで、順を追って記事を分けたいと思います。
OpenVPNを使用する場合
今回はSoftEtherを使用した方法を説明しますが、OpenVPNを使用する方法については、既に別の記事で説明しています。