先週から続き物で書いている件、その続きです。
このようなネットワーク環境を作ることで、外部(例えば自宅やカフェ)から、会社ネットワークのリソースを使えるようにしようという話でした。
今回は、このクラウド(Azure VM)と会社サーバの2つのサーバにSoftEther VPN Serverをインストールし、SoftEther VPNサーバー管理マネージャで設定をするといったあたりを書いてみようと思います。
SoftEther VPN Serverのインストール
クラウド(Azure VM)側
まず、クラウド側から作業を開始します。
SoftEtherのソフトウエアは残念ながらaptなどのパッケージマネージャ経由ではインストールできないので、SoftEtherダウンロードセンターからパッケージをダウンロードして、インストールします。
ダウンロードするソフトウェアはSoftEther VPN (Freeware)、コンポーネントはSoftEther VPN Serverを選択します。プラットフォームとCPUは使用されているサーバ次第ですが、Azure VM上のUbuntu 18.04 LTSでは、Linux、Intel x64 / AMD64 (64bit)となります。
インストールの手順は下記のとおり。
tar xvzf softether-vpnserver-v4.29-9680-rtm-2019.02.28-linux-x64-64bit.tar.gz
cd vpnserver/
make
make
が終わったら、vpnserver
ディレクトリを/usr/local
配下に移動させ、パーミッションの設定などを行います。
mv ~/vpnserver /usr/local
cd /usr/local/vpnserver
chmod 700 vpncmd vpnserver
次に、自動起動の設定を行います。/etc/systemd/system/vpnserver.service
というファイルを作成し、下記のようにします。
[Unit]
Description=SoftEther VPN Server
After=network.target network-online.target
[Service]
ExecStart=/usr/local/vpnserver/vpnserver start
ExecStop=/usr/local/vpnserver/vpnserver stop
Type=forking
RestartSec=3s
[Install]
WantedBy=multi-user.target
後は、自動起動を有効にし、vpnserverを起動します。
systemctl enable vpnserver
systemctl start vpnserver
会社サーバ(Jetson nano)側
先ほどの図で会社サーバとあるのは、実はJetson nanoです。こちらも、SoftEtherダウンロードセンターから、CPUのところでARM EABI (32bit)を選んでダウンロードすれば、あとはAzure VMの場合と同じ・・・と思っていたのですが、Jetson nanoの環境が純粋なUbuntu 18.04 LTSではないためか、うまくいきませんでした。
そこで、GitHubからソースをダウンロードして、ビルドの上で、インストールしました。
apt -y install cmake gcc g++ libncurses5-dev libreadline-dev libssl-dev make zlib1g-dev
git clone https://github.com/SoftEtherVPN/SoftEtherVPN.git
cd SoftEtherVPN/
git submodule init && git submodule update
./configure
make -C tmp
make -C tmp install
これで、クラウド側とは少しディレクトリ構成が違いますが、/usr/local/bin
配下にvpnserver
とvpncmd
が導入されます。
あとは、クラウド側と同様に自動起動の設定を行い(ExecStartとExecStopに指定するvpnserver
のパスが異なるので注意してください)、起動します。
SoftEther VPNサーバー管理マネージャで設定
SoftEther VPNサーバの設定は、vpnserver
を導入したサーバの設定ファイル等で行うのではなく、クライアントPC上にインストールしたSoftEther VPNサーバー管理マネージャを使ってGUIで行います。
管理マネージャも、SoftEtherダウンロードセンターからダウンロードします。コンポーネントとして、SoftEther VPN Server Manager for Windowsを指定してダウンロードします。macOS版も提供されているのですが、私の環境ではうまく動かなかったので、Windows版をParallels Desktop経由で使用しています。
管理マネージャを起動すると、最初はVPNサーバのIPアドレス等を指定してログインします。初回はパスワードの設定も必要です。
設定項目はいろいろあるのですが、ここでは最低限必要な箇所のみを説明します。
クラウド(Azure VM)側
私の環境ではクラウド側がメインのVPNサーバとなります。会社ネットワークがDS-Lite環境下にあるため占有的に使えるIPv4アドレスがないので、外部からはクラウド側のVPNサーバに接続して、そこから会社ネットワークを使うということになります。
SoftEtherでは仮想HUBを作成して、そこにPC等を接続する(サーバ自身も接続する)という形でネットワークを構成していきます。
そのため、まずはクラウド側の環境で仮想HUBを作成します。
リスナーの管理では、443は別で使用しているため停止させました。
仮想HUBの管理では、赤枠で囲った2つの設定を行いました。「ユーザーの管理」では、この仮想HUBに接続するユーザーを作成し、パスワードを設定します。
「仮想NATおよび仮想DHCPサーバー機能」では、SecureNAT機能を有効にしました。
次に、ローカルブリッジ設定です。ここで「新しいtapデバイスとのブリッジ接続」を選択し、vpnという名前のtapデバイスを作成しました。
この設定によって、仮想HUBとAzure VMサーバに仮想的に作成されたネットワークカードがブリッジ接続されます。
最後に、IPsec/L2TPの設定をしておきます。「L2TPサーバー機能を有効にする」をONにして、IPsec事前共有鍵を指定します。この設定によって、Windows 10やmacOSさらにiOSの標準機能を使ってVPN接続できるようになります。
会社サーバ(Jetson nano)側
会社サーバ側にも仮想HUBを作成します。
仮想HUBの設定を行います。ここでは、「カスケード接続の管理」のみを行います。
このように、クラウド側の仮想HUBと社内サーバ側の仮想HUBをカスケード接続し、同じネットワークにしてしまいます。カスケード接続する際には、クラウド側の仮想HUBで設定したユーザー認証情報を使用します。
これで、SoftEtherを使用したレイヤー2までのネットワーク構築は完了です。あとは、それぞれのサーバでIPルーティングを設定すれば、当初の計画どおりの通信ができるようになります。