🖥

VPNサーバ構築(7) SoftEther VPNのインストール

2021/08/28に公開

SoftEther VPNインストールの流れ

今回のインストール手順では最初から全ての設定を設定してしまわずに、上手くいかないときの原因の切り分けがしやすいように段階を踏んで設定を行っていく。ざっくりとした流れは以下の通り。

  1. インストール + 最低限の設定 (同一LAN内から接続を確認)
  2. ブリッジデバイスの追加 (同一LAN内から接続を確認)
  3. tapデバイスの追加 (同一LAN内から接続を確認)
  4. 追加のセキュリティ設定 + ルータのポート開放 (WANから接続を確認)

SoftEther VPNのダウンロード

まずはSoftEther VPNのダウンロードURLを調べる。

https://www.softether-download.com/en.aspx?product=softether

SoftEther Download Centerから、コンポーネント "SoftEther VPN Server"、プラットフォーム "Linux"、CPU "ARM EABI (32bit)"を選択し、任意のパッケージのダウンロードURLを調べる。


図1 SoftEther VPN Serverのダウンロードページ

Raspberry Piでwgetコマンドの後に調べたURLを指定し、SoftEther VPNをダウンロードする。

wget https://jp.softether-download.com/files/softether/v4.34-9745-rtm-2020.04.05-tree/Linux/SoftEther_VPN_Server/32bit_-_ARM_EABI/softether-vpnserver-v4.34-9745-rtm-2020.04.05-linux-arm_eabi-32bit.tar.gz

SoftEther VPNのインストール

下記のコマンドでダウンロードしたパッケージを解凍する。

tar zxf softether-vpnserver-v4.34-9745-rtm-2020.04.05-linux-arm_eabi-32bit.tar.gz

解凍したらvpnserverに移動し、makeでコンパイルする。

cd vpnserver
make

コンパイル中にライセンスの同意について3回確認されるため、問題なければ"1"で回答する。コンパイルが完了したら、言語を変更したい場合は変更できる。

vim lang.config

vpnserverディレクトリを移動し、

cd ..
sudo mv vpnserver /usr/local/.

アクセス権を変更する。

cd /usr/local/vpnserver/
sudo chmod 600 *
sudo chmod 700 vpncmd
sudo chmod 700 vpnserver

systemdでの自動起動の設定

Raspberry Piの起動時にSoftEther VPNが自動起動するように設定する。vpnserver.serviceというファイルを作成し、

sudo vim /etc/systemd/system/vpnserver.service

下記のように記述する。コメントアウトしている行は後の設定時にアンコメントする。

/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
WorkingDirectory=/usr/local/vpnserver/
#ExecStartPost=/bin/sleep 10 ; brctl addif br0 tap_softether
Type=forking
RestartSec=3s
[Install]
WantedBy=multi-user.target

作成したファイルの権限を変更し、

sudo chmod 755 /etc/systemd/system/vpnserver.service

デーモンのリロード、サービスの有効化と起動をする。

sudo systemctl daemon-reload
sudo systemctl enable vpnserver.service
sudo systemctl start vpnserver.service

再起動し、起動できていることを確認する。

sudo reboot
ps aux| grep vpn

下記のようなプロセスが表示されれば起動できている。

root       764  0.0  0.0   5580   612 ?        S<s  15:34   0:00 /usr/local/bin/vpnserver/vpnserver execsvc
root       765  3.2  1.3  29328 13400 ?        S<l  15:34   0:01 /usr/local/bin/vpnserver/vpnserver execsvc

SoftEther VPNの設定

WindowsからSoftEtherの設定を行う。

SoftEther VPN Server Managerのダウンロード

https://www.softether-download.com/en.aspx?product=softether

SoftEther Download Centerから、コンポーネント "SoftEther VPN Server Manager for Windows"、プラットフォーム "Windows (.zip package without installers)"、CPU "Intel (x86 and x64)"を選択し、任意のパッケージをダウンロードする。


図2 SoftEther VPN Server Manager for Windowsのダウンロードページ

ダウンロードしたzipファイルを解凍し、vpnsmger.exeを実行して、SoftEhter VPN Server Managerを起動する。

接続先にRaspberry Piを登録し、接続する

"新しい接続設定"を選択し、ホスト名にRaspberry PiのIPアドレス(今回は"192.168.1.2")を入力する。接続設定名を変更すれば後から識別がしやすい(任意)。最後にOKを押す。


図3 接続先の登録

登録した接続先を選択し、"接続"を押す。管理者パスワードの設定を求められるため、任意のパスワードを入力しOKを押す。

SoftEhter VPN Server / Bridge簡易セットアップ

簡易セットアップ画面では"リモートアクセスVPNサーバー"を選択し、確認画面でYesを押す。任意の仮想HUB名を入力しOKを押す。


図4 SoftEhter VPN Server / Bridge簡易セットアップ

ダイナミックDNS機能

"ダイナミックDNSホスト名"に任意の名前を入力し、"上記のDNSホスト名に変更する"を押して、"閉じる"を押す。

IPsec / L2TP / EtherIP / L2TPv3サーバ機能の設定

"L2TPサーバ機能を有効にする"にチェックを入れて、"IPsec事前共有鍵"に任意のkeyを設定しOKを押す。


図5 ダイナミックDNS機能とIPsec / L2TP / EtherIP / L2TPv3サーバ機能の設定

VPN Azure サービスの設定

今回は使用しないため、"VPN Azure を無効にする"を選択しOKを押す。

ユーザーの作成

"ユーザを作成する"を押し、"ユーザ名"の入力と、"認証方式"を"匿名認証"にしてOKを押す。ユーザの管理画面、簡易セットアップの実行はそれぞれ"閉じる"を押す。


図6 ユーザの作成

ローカルブリッジの設定

"ローカルブリッジの設定"を押し、"仮想HUB"で先に設定したHUB名を選択し、"LANカード"で"eth0"を選択して"ローカルブリッジの追加"を押す。


図7 ローカルブリッジの設定

同一LAN内から接続できることを確認する

インストール + 最低限の設定が完了したため、一度同一LAN内から接続できることを確認する。今回はiPhoneから接続を確認する。

iPhoneからVPN接続

Wi-Fiに接続しRaspberry PiのあるLAN内のネットワークに接続する。"設定"の"一般"から"VPN"を選択する。"VPN構成を追加…"を押し、各項目を下記のように設定する。

  • タイプ: L2TP
  • 説明: 任意の説明
  • サーバ: Raspberry PiのIPアドレス (e.g. 192.168.1.2)
  • アカウント: 作成したユーザ名 + HUB名 (e.g. kumatani@VPN)
  • RSA SecurID: OFF
  • パスワード: ここでは入力不要 (入力しても毎回聞かれる)
  • シークレット: IPsec 事前共有鍵で設定したkey
  • 全ての信号を送信: ON

"完了"を押して設定を保存し、接続をONにする。パスワードを聞かれるので、適当な文字を入力しOKを押す (匿名認証なのでパスワードは不要だが、何かしらを入力する必要がある)。"接続済み"と表示されればOK。


図8 iPhoneからVPN接続確認

ブリッジデバイスの追加と設定


図9 ブリッジデバイスの追加

仮想ブリッジの作成

下記のコマンドで"仮想ブリッジの設定ユーティリティソフト"をインストールする。

sudo apt install bridge-utils

ネットワークインターフェースの設定ファイルを開き、

sudo vim /etc/network/interfaces

最下部に下記設定を追記してブリッジデバイスを追加する。

/etc/network/interfaces
auto br0
iface br0 inet manual
bridge_ports eth0
bridge_maxwait 10

IPアドレスの変更

下記コマンドでIPアドレスの設定ファイルを開き、

sudo vim /etc/dhcpcd.conf

以前に設定したIPアドレスの設定をコメントアウトか削除し、下記設定を追記する。

/etc/dhcpcd.conf
#interface eth0
#static ip_address=192.168.1.2/24
#static routers=192.168.1.11
#static domain_name_servers=192.168.1.1

denyinterfaces eth0

interface br0
static ip_address=192.168.1.2/24
static routers=192.168.1.11
static domain_name_servers=192.168.1.1

ブリッジデバイスの確認

一度再起動し、ブリッジデバイスに設定したIPアドレス (192.168.1.2) で接続できることを確認する。

sudo reboot

接続ができれば正しく追加できているが、下記コマンドでbr0に設定したIPアドレスが割り当てられていることを確認することもできる。

ip address

ここで接続できないときは経験上、IPアドレスの設定 (/etc/dhcpcd.conf) が間違っている可能性が高い。例えば、denyinterfacesの記述が無かったり、"s"が抜けているなどを見直してみる。

再度、同一LAN内からの接続を確認

ブリッジデバイスの追加ができたら、再度同一LANからの接続を試してみる。iPhoneの設定はそのままでVPNをONにし、"接続済み"になることを確認する。

tapデバイスの追加と設定


図10 tapデバイスの追加

ローカルブリッジ設定

SoftEther VPN サーバー管理マネージャから"ローカルブリッジ設定"をクリックし、簡易セットアップで追加したローカルブリッジを選択し削除する。仮想HUBで"VPN"を、"新しいtapデバイスとのブリッジ接続"を選択し、新しいtapデバイス名に"softether"を入力してローカルブリッジを追加する。


図11 ローカルブリッジ設定

下記コマンドでtapデバイスが追加されていることを確認する。

ip address

下記のように表示されれば追加できている。

4: tap_softether: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UNKNOWN group default qlen 1000
    link/ether 5e:8a:4d:9d:7c:f9 brd ff:ff:ff:ff:ff:ff

tapデバイスとブリッジの設定

tapデバイスが追加できたら、vpnserver.serviceのコメントアウトしていた箇所をアンコメントする。

/etc/systemd/system/vpnserver.service
ExecStartPost=/bin/sleep 10 ; brctl addif br0 tap_softether

デーモンのリロードとサービスの再起動をする。

sudo systemctl daemon-reload
sudo systemctl restart vpnserver.service

再々度、同一LAN内からの接続を確認

tapデバイスの追加ができたら、再度同一LANからの接続を試してみる。iPhoneの設定はそのままでVPNをONにし、"接続済み"になることを確認する。

追加のセキュリティ設定

仮想HUB "Dummy" の追加

SoftEther VPN サーバー管理マネージャから"仮想HUBの作成"をクリックする。仮想HUB名を適当に入力し、パスワードを設定する。"匿名ユーザーに対して~"にチェックを入れ、さらに仮想HUBの状態をオフラインに、最大同時セッション数を"1"に設定し、"OK"をクリックする。

L2TPサーバー機能の設定変更

接続時にユーザー名を省略した場合に接続する仮想HUBをDummyに変更する。また、IPsec事前共有鍵がデフォルトのままであれば任意の文字列に変更するほうが良い。


図12 仮想HUB "Dummy"の追加とL2TPサーバー機能の設定変更

仮想HUB "VPN" の設定変更

SoftEther VPN サーバー管理マネージャから仮想HUB "VPN"を選択し、"プロパティ"をクリックする。"匿名ユーザーに対して~"にチェックを入れ、最大同時セッション数の制限を設定し、"OK"を押す。


図13 仮想HUB "VPN"の設定変更

ルータのポート開放

WAN(自宅外)からVPNサーバにアクセスするためにはルータの設定を変更し、いくつかのポートを開放する必要がある。ここではAterm WG1200CRでの設定例を紹介する。

ルータの管理画面から、"詳細設定"の"ポートマッピング設定"をクリックする。優先度は他の設定と被らない値を選択し、LAN側ホストにはRaspberry PiのIPアドレスを入力。そしてプロトコルとポート番号を入力し"設定"をクリックする。開放が必要なポートは以下の3つである。

Protocol Port
UDP 500
UDP 4500
UDP 1194


図14 ポート開放の設定例

WAN(自宅外)からアクセスできることを確認する

iPhoneのVPN設定を変更

これまで同一LAN内での接続を確認していた設定から、Wi-Fi接続をOFFにし、また下記の項目を変更する。

  • サーバ: ダイナミックDNS機能で割り当てられているDDNSホスト名 (e.g. XXXXX.softether.net)
  • シークレット: IPsec 事前共有鍵で設定したkey (変更していれば)

"完了"を押して設定を保存し、接続をONにする。パスワードを聞かれるので、適当な文字を入力しOKを押す (匿名認証なのでパスワードは不要だが、何かしらを入力する必要がある)。"接続済み"と表示されれば確認完了。


図15 iPhoneのVPN接続設定を変更

VPNの認証方式を変更

このままでは匿名認証のため、簡単にアクセスできてしまうリスクがあるため、認証方式をパスワード方式に変更する。

SoftEther VPN サーバー管理マネージャから仮想HUB "VPN"を選択し、"仮想HUBの管理"をクリックする。"ユーザの管理"からユーザを選択し"編集"を押して、認証方式を"パスワード認証"へ変更し、任意のパスワードを入力する。


図16 認証方式の変更

再度、WAN(自宅外)からのアクセスを確認

先の設定はそのままに、パスワードを聞かれたときに設定したパスワードを入力して接続できることを確認する。これで接続できれば問題なく設定できている。

参考

https://solomon-review.net/category/vpn/server-construction/
https://solomon-review.net/category/vpn/server-connection/
https://memo.kuraba.com/2019/12/raspberry-piでvpnサーバ構築/
https://blog.treedown.net/entry/2016/09/30/010000

Discussion