フリーで利用でき、高機能な「SoftEther VPN」を導入する。

SoftEther VPN プロジェクト

http://ja.softether.org/

VPNサーバー

公式サイトから「SoftEther VPN Server」「Linux」「Intel x64 / AMD64 (64bit)」で検索して、作業フォルダへダウンロードする。

ビルドを実行するために必要なパッケージを導入する。

※執筆時点では、両パッケージは導入済みだった。

$ sudo apt install gcc make

ダウンロードしたファイルを展開し、ビルドを実行する。

$ cd 作業フォルダ
$ tar xvf softether-vpnserver-xxxx-linux-x64-64bit.tar.gz
$ cd vpnserver
$ make
$ cd ../
$ sudo chown -R root:root vpnserver
$ sudo mv vpnserver /opt

設定ファイル「vpn_server.config」が用意できる場合は、下記手順でコピーしておく。

$ cd 作業フォルダ
$ cp vpn_server.config /opt/vpnserver
$ sudo chown -R root:root /opt/vpnserver/vpn_server.config
$ sudo chmod 755 /opt/vpnserver/vpn_server.config

systemd用ユニットファイルを作成する。

$ sudo nano /etc/systemd/system/vpnserver.service
[Unit]
Description=SoftEther VPN Server
After=network-online.target

[Service]
Type=forking  ← 「Type」は必ず「forking」を指定する(これ以外だと起動できない)
ExecStart=/opt/vpnserver/vpnserver start
ExecStop=/opt/vpnserver/vpnserver stop
KillMode=control-group
Restart=on-failure

[Install]
WantedBy=multi-user.target

systemdへ登録して起動する。

$ sudo systemctl daemon-reload
$ sudo systemctl enable vpnserver
$ sudo systemctl start vpnserver

新規にセットアップする場合は、コマンドライン管理ユーティリティの「vpncmd」やWindows版GUIサーバー管理ツールで設定する。

VPNクライアント

公式サイトから「SoftEther VPN Client」「Linux」「Intel x64 / AMD64 (64bit)」で検索して、作業フォルダへダウンロードする。

※古いバージョンだとビルドに失敗するため「Ver 4.28, Build 9669, beta」以降のバージョンを利用する。

ダウンロードしたファイルを展開し、ビルドを実行する。

$ cd 作業フォルダ
$ tar xvf softether-vpnclient-xxxx-linux-x64-64bit.tar.gz
$ cd vpnclient
$ make
$ cd ../
$ sudo chown -R root:root vpnclient
$ sudo mv vpnclient /opt

設定ファイル「vpn_client.config」が用意できる場合は下記手順でコピーしておく。

$ cd 作業フォルダ
$ cp vpn_client.config /opt/vpnclient
$ sudo chown -R root:root /opt/vpnclient/vpn_client.config
$ sudo chmod 755 /opt/vpnclient/vpn_client.config

※この後「起動スクリプトの作成」手順へ進む。

新規にセットアップする場合は、一度「vpnclient」を起動してから、コマンドライン管理ユーティリティ「vpncmd」で初期設定を行う。

$ sudo /opt/vpnclient/vpnclient start
$ sudo /opt/vpnclient/vpncmd 
...
vpncmd プログラムを使って以下のことができます。

1. VPN Server または VPN Bridge の管理
2. VPN Client の管理
3. VPN Tools コマンドの使用 (証明書作成や通信速度測定)

1 - 3 を選択: 2

接続先の VPN Client が動作しているコンピュータの IP アドレスまたはホスト名を指定してください。
何も入力せずに Enter を押すと、localhost (このコンピュータ) に接続します。
接続先のホスト名または IP アドレス: [Enter]

VPN Client "localhost" に接続しました。

VPN Client>RemoteEnable  ← コマンドは、全て小文字でも良い(以下同様)
RemoteEnable コマンド - VPN Client サービスのリモート管理の許可
コマンドは正常に終了しました。

VPN Client>NicCreate  ← 仮想LANカードを作成する
NicCreate コマンド - 新規仮想 LAN カードの作成
仮想 LAN カードの名前: nic1  ← 仮想LANカード名を指定する

コマンドは正常に終了しました。

VPN Client>NicList  ← 仮想LANカードの一覧表示
NicList コマンド - 仮想 LAN カード一覧の取得
項目             |値
-----------------+------------------------------------
仮想 LAN カード名|nic1
状態             |有効 (使用可能)
MAC アドレス     |xxxxxxxxxxxx
バージョン       |Version 4.xx Build xxxx   (Japanese)
コマンドは正常に終了しました。

VPN Client>exit

※仮想LANカード「nic1」を作成すると、仮想デバイス名は「vpn_nic1」となる。

一旦、vpnclientを終了する。

$ sudo /opt/vpnclient/vpnclient stop

起動スクリプトの作成

仮想LANカードが作成された後にIPアドレスを割り当てるため、起動スクリプトを作成する。

$ sudo nano /opt/vpnclient/start_vpnclient.sh
#!/usr/bin/bash
/opt/vpnclient/vpnclient start
sleep 3
ip a add 192.168.yyy.1/24 dev vpn_nic1  ← 仮想デバイス名を指定する
$ sudo chmod +x /opt/vpnclient/start_vpnclient.sh

systemd用ユニットファイルを作成する。

$ sudo nano /etc/systemd/system/vpnclient.service
[Unit]
Description=SoftEther VPN Client
After=network-online.target

[Service]
Type=forking  ← 「Type」は必ず「forking」を指定する(これ以外だと起動できない)
ExecStart=/opt/vpnclient/start_vpnclient.sh  ← 作成した起動スクリプトを指定する
ExecStop=/opt/vpnclient/vpnclient stop
KillMode=control-group
Restart=on-failure

[Install]
WantedBy=multi-user.target

systemdへ登録して起動する。

$ sudo systemctl daemon-reload
$ sudo systemctl enable vpnclient
$ sudo systemctl start vpnclient

以降、引き続き「vpncmd」または、Windows版GUIクライアントリモート管理ツールで、仮想HUBへの接続設定を進める。