Ubuntu 18.04 LTSサーバにSoftEther VPN Serverをインストール(クラウド/Jetson nano)

先週から続き物で書いている件、その続きです。

このようなネットワーク環境を作ることで、外部(例えば自宅やカフェ)から、会社ネットワークのリソースを使えるようにしようという話でした。

今回は、このクラウド(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配下にvpnservervpncmdが導入されます。

あとは、クラウド側と同様に自動起動の設定を行い(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ルーティングを設定すれば、当初の計画どおりの通信ができるようになります。

この記事を書いた人

井上 研一

株式会社ビビンコ代表取締役、ITエンジニア/経済産業省推進資格ITコーディネータ。AI・IoTに強いITコーディネータとして活動。画像認識モデルを活用したアプリや、生成AIを業務に組み込むためのサービス「Gen2Go」の開発などを行っている。近著に「使ってわかった AWSのAI」、「ワトソンで体感する人工知能」。日本全国でセミナー・研修講師としての登壇も多数。