VPNサーバ構築

ラズパイにSoftEtherを利用してVPNサーバを構築する方法です。

1. ラズパイの用意

最初にRASPBIANをダウンロードしてMicroSDにコピーして、必要な設定を実施しておきます。最低限、タイムゾーンを日本標準時(Asia/Tokyo)にしておくのが良いでしょう。

2. SoftEtherのダウンロード

SoftEtherダウンロードセンターから、ファイルをダウンロードします。

項目 選択
ダウンロードするソフトウェア SoftEther VPN (Freeware)
コンポーネントを選択 SoftEther VPN Server
プラットフォームを選択 Linux
CPUを選択 ARM EABI (32bit)

ダウンロード可能なファイルからSoftEther VPN Server (Ver 4.21, Build 9613, beta)を選択してダウンロードします。

企業環境で利用される際には、RTM 版ビルドを使用されることをお勧めします。とされていますが、直近のRTM版ビルドの直後にSoftEther VPN Server Manager for Mac OS Xがサポートされていることから、このビルドを選択しています。

3. SoftEtherの展開とインストール

ダウンロードしたファイルを展開してmakeします。

tar zxvf softether-vpnserver-v4.21-9613-beta-2016.04.24-linux-arm_eabi-32bit.tar.gz
cd vpnserver
make

makeの最後で実行されるvpncmdでの確認結果が、全てPassしていることを確認しておきます。

VPN Tools>check
Check command - Check whether SoftEther VPN Operation is Possible
---------------------------------------------------
SoftEther VPN Operation Environment Check Tool

Copyright (c) SoftEther VPN Project.
All Rights Reserved.

If this operation environment check tool is run on a system and that system passes, it is most likely that SoftEther VPN software can operate on that system. This check may take a while. Please wait...

Checking 'Kernel System'... 
              Pass
Checking 'Memory Operation System'... 
              Pass
Checking 'ANSI / Unicode string processing system'... 
              Pass
Checking 'File system'... 
              Pass
Checking 'Thread processing system'... 
              Pass
Checking 'Network system'... 
              Pass

All checks passed. It is most likely that SoftEther VPN Server / Bridge can operate normally on this system.

The command completed successfully.

4. vpnserverのインストール

出来上がったvpnserver/usr/localディレクトリにコピーします。

rsync -av vpnserver /usr/local

ファイルのパミッションを整えておきます。

cd /usr/local
chmod 700 vpnserver
cd vpnserver
find . -type d -exec chmod 755 {} ¥;
find . -type f -exec chmod 644 {} ¥;
chmod 700 vpncmd vpnserver

5. vpnserverの起動設定

/etc/systemd/system/multi-user.target.wantsディレクトリにvpnserver.serviceファイルを作成します。

[Unit]
Description=SoftEther VPN Server
After=network.target

[Service]
Type=forking
ExecStart=/usr/local/vpnserver/vpnserver start
ExecStop=/usr/local/vpnserver/vpnserver stop
KillMode=process
Restart=on-failure

[Install]
WantedBy=multi-user.target

作成したファイルを使用してvpnserverを起動・登録します。

systemctl start vpnserver.service
systemctl enable vpnserver.service

vpnserverの起動状況を確認します。

systemctl status vpnserver.service

ここで Active: active (running)となっていることを確認します。

# systemctl status vpnserver.service
● vpnserver.service - SoftEther VPN Server
   Loaded: loaded (/etc/systemd/system/vpnserver.service; enabled)
   Active: active (running) since Thr 2017-06-15 13:42:54 JST; 53min ago

6. VPN Server Managerのインストール

vpnserverの設定には、VPN Server Managerを利用します。ここで、MacまたはWindowsにVPN Server Managerをダウンロードしてインストールします。

SoftEtherダウンロードセンターから、ファイルをダウンロードします。

項目 選択
ダウンロードするソフトウェア SoftEther VPN (Freeware)
コンポーネントを選択 SoftEther VPN Server Manager
プラットフォームを選択 Mac OS X
CPUを選択 Intel (x86 and x64)

Macの場合、ダウンロード可能なファイルからSoftEther VPN Server Manager for Mac OS X (Ver 4.21, Build 9613, beta)を選択してダウンロードします。

7. vpnserverの設定

インストールしたVPN Server Managerを使用して、vpnserverを設定します。

7.1 新しい接続設定の作成

項目名 入力値
接続設定名 xxxxxxxx
ホスト名 192.168.xxx.xxx
管理パスワード xxxxxxxx

接続設定名を任意に入力、ホスト名に、インストールするラズパイのeth0に設定する固定IPアドレスを入力、管理パスワードを任意に入力してOK ボタンをクリックする。

7.2 管理接続用パスワードの設定

VPN Server Manager のメイン画面から、作成した接続設定名を選択して接続ボタンをクリックする。

表示された管理接続用パスワード設定画面では、パスワードが空のままでOKボタンをクリックする。

次に表示される管理者パスワードの設定画面で、パスワードを入力してOKボタンをクリックする。

項目名 入力値
新しいパスワード xxxxxxxx
確認入力 xxxxxxxx

パスワードを変更しました。画面でOKボタンをクリックする。

7.3 SoftEther VPN Server / Bridge 簡易セットアップ

SoftEther VPN Server / Bridge 簡易セットアップ画面で、リモートアクセス VPN サーバーにチェックを入れて次へをクリックする。

続行すると、この VPN Server または VPN Bridge の現在の設定内容は、簡易セットアップで指定した内容に初期化されます。よろしいですか?の確認画面ではいをクリックする。

7.4 仮想HUB名の設定

仮想HUB名の設定でHUB名を入力してOKボタンをクリックする。

項目名 入力値
仮想HUB名 VPN

7.5 ダイナミックDNS機能

ダイナミックDNS機能の設定画面に表示されているダイナミックDNSホスト名を控えて、閉じるボタンをクリックする。

項目名 入力値
ダイナミックDNSホスト名 vpnxxxxxxxxx.softether.net

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

IPsec / L2TP / EtherIP / L2TPv3 サーバー機能の設定画面で、L2TP サーバー機能を有効にする (L2TP over IPsec)にチェックを入れて、IPsec 事前共有鍵 にシークレットを入力してからOKボタンをクリックする。

項目名 入力値
IPsec 事前共有鍵 xxxxxxxx

7.7 VPN Azure サービスの設定

VPN Azure サービスの設定画面では、VPN Azure を無効にするにチェックを入れて、OKボタンをクリックする。

7.8 ユーザーの作成

簡易セットアップの実行画面で1. ユーザーを作成するをクリックする。

ユーザーのプロパティ画面で、必要な項目を入力してOKボタンをクリックする。

項目名 入力値
ユーザー名 xxxxxxxx
パスワード xxxxxxxx
パスワードの確認入力 xxxxxxxx

ユーザーの作成確認画面でOKボタンをクリックする。

ユーザーの管理 画面で、閉じるボタンをクリックする。

7.9 ローカルブリッジの設定

上記の内容でvpnserverを使用可能ではあるが、vpnserverの稼働しているサーバにsshしたりして、直接使用するためにはローカルブリッジを設定する必要があるため、ここで設定をする。

3. ローカルブリッジの設定をクリックする。

新しいローカルブリッジの定義仮想HUBを選択して、新しい tap デバイスとのブリッジ接続にチェックを入れ、LAN カードeth0を選択する。新しい tap デバイス名vlanを入力して、ローカルブリッジを追加ボタンをクリックする。

項目名 入力値
仮想 HUB VPN
新しい tap デバイスとのブリッジ接続 <チェック>
LAN カード eth0
新しい tap デバイス名 vlan

ローカルブリッジ接続の定義を追加しました。 の画面でOKボタンをクリックする。

以上で、設定が終了したのでVPN Server Managerを閉じる。

ifconfigコマンドでtapデバイスが作成されていることを確認する。

ifconfig

この例では、tap_vlan が表示されている。

8. 固定 IP アドレスの設定

ラズパイで固定 IP アドレスを設定するには、/etc/dhcpcd.confファイルに以下のような内容を追加する。

interface eth0
static ip_address=192.168.xxx.xxx/24
static routers=192.168.xxx.xxx
static domain_name_servers=192.168.xxx.xxx

ただし、今回はローカルブリッジ設定をするため、上記の設定がある場合にはコメントアウトしておく。

9. bridge-utils のインストール

ブリッジを使用するために、bridge-utils をインストールする。

apt install -y bridge-utils

10. ブリッジ接続の設定

ブリッジを構成するため、/etc/network/interfacesに以下の設定を追加する。

auto eth0
iface eth0 inet manual      # eth0 には IP アドレスを設定しない

# SoftEther VPN
auto br0
iface br0 inet static
address 192.168.xxx.xxx    # 固定 IP アドレスを設定
netmask 255.255.255.0
network 192.168.xxx.0
broadcast 192.168.xxx.255
gateway 192.168.xxx.xxx       # 使用するルータの IP アドレスを設定

bridge_ports eth0
bridge_maxwait 10

ここで、設定を反映させるためシステムを再起動する。

11. ブリッジ接続の確認

再起動したシステムで、ブリッジ接続を確認する。

ifconfig

デバイスとして br0eth0tap_vlanが表示されて、br0 に固定IPアドレスが設定されていることを確認する。tap_vlanは、169.254.188.223のようなアドレスが設定されている。

正しくブリッジが構成されて入れば、以下のような内容が表示される。

# brctl show br0
bridge name bridge id       STP enabled interfaces
br0     8000.00ac10acd354   no      eth0
                            tap_vlan

12. ブリッジ用の起動ファイル

ローカルブリッジを有効にするため、起動ファイルを修正します。

[Unit]
Description=SoftEther VPN Server
After=network.target

[Service]
Type=forking
ExecStart=/usr/local/vpnserver/vpnserver_start
ExecStop=/usr/local/vpnserver/vpnserver stop
KillMode=process
Restart=on-failure

[Install]
WantedBy=multi-user.target

ここでは、/usr/local/vpnserver/vpnserverstartするのではなく、/usr/local/vpnserver/vpnserver_start スクリプトを実行しています。

この/usr/local/vpnserver/vpnserver_startスクリプトは、以下の内容となります。

#!/bin/bash

/usr/local/vpnserver/vpnserver start

tap=$(/sbin/ifconfig -a| awk '$1 ~ /^tap/ {print $1}')
/sbin/brctl addif br0 $tap

ここで設定ファイルを修正していますから、変更を反映してvpnserverを再起動します。

systemctl daemon-reload

systemctl restart vpnserver.service

13. ルータの設定

ルータで NAT している場合には、グローバルIPアドレスに届いたパケットを VPN サーバに転送します。

タイプ ポート
UDP 500
UDP 4500

ルータが1段構成の場合、グローバル IP を VPN サーバに転送します。ルータが 2段構成の場合には、1段目でグローバル IP を 2段目のルータに転送し、2段目のルータから VPN サーバに転送します。

詳細は、VPN Server 側での L2TP/IPsec 機能の有効化方法を参照して下さい。

以上で設定を終了です。VPNライフを満喫して行きましょう!

Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account log in.