VPNサーバ構築(7) SoftEther VPNのインストール
SoftEther VPNインストールの流れ
今回のインストール手順では最初から全ての設定を設定してしまわずに、上手くいかないときの原因の切り分けがしやすいように段階を踏んで設定を行っていく。ざっくりとした流れは以下の通り。
- インストール + 最低限の設定 (同一LAN内から接続を確認)
- ブリッジデバイスの追加 (同一LAN内から接続を確認)
- tapデバイスの追加 (同一LAN内から接続を確認)
- 追加のセキュリティ設定 + ルータのポート開放 (WANから接続を確認)
SoftEther VPNのダウンロード
まずはSoftEther VPNのダウンロードURLを調べる。
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
下記のように記述する。コメントアウトしている行は後の設定時にアンコメントする。
[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のダウンロード
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
最下部に下記設定を追記してブリッジデバイスを追加する。
auto br0
iface br0 inet manual
bridge_ports eth0
bridge_maxwait 10
IPアドレスの変更
下記コマンドでIPアドレスの設定ファイルを開き、
sudo vim /etc/dhcpcd.conf
以前に設定したIPアドレスの設定をコメントアウトか削除し、下記設定を追記する。
#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のコメントアウトしていた箇所をアンコメントする。
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(自宅外)からのアクセスを確認
先の設定はそのままに、パスワードを聞かれたときに設定したパスワードを入力して接続できることを確認する。これで接続できれば問題なく設定できている。
参考
Discussion