こんにちは、サイオステクノロジー技術部 武井です。今回は、Raspberry PiにSoftEther VPN Server入れてみました。SoftEther VPN Serverの詳細は下記をご覧下さい。
構成
構成は以下のとおりです。
手順
VPNクライアントにSoftEther VPNクライアントをインストールすると、仮想NICが作成されます。その仮想NICはSoftEther VPNサーバー内に作成された仮想HUBとつながっていて、さらに仮想HUBはRaspberry Piの物理NICとローカルブリッジ接続されているので、VPNクライアントはあたかもvlan3のセグメントにL2で接続されているように見えます。
以下、設定方法になります。まずはSoftEter VPNサーバーのインストール方法です。
SoftEther VPNサーバーをダウンロードします。以下のリンクにアクセスします。
https://www.softether-download.com/ja.aspx?product=softether
以下を選択します。
コンポーネントを選択:SoftEther VPN Server プラットフォームを選択:Linux CPU を選択:ARM EABI(32bit)
ダウンロードリンクの一番上部に表示されている「SoftEther VPN Server」をクリックしてダウンロードします。
# tar xzvf softether-vpnserver-v4.22-9634-beta-2016.11.27-linux-arm_eabi-32bit.tar.gz # cd vpnserver # make
先ほどダウンロードしてきたファイルを解凍してmakeします。
-------------------------------------------------------------------- SoftEther VPN Server (Ver 4.22, Build 9634, ARM EABI) for Linux Install Utility Copyright (c) SoftEther Project at University of Tsukuba, Japan. All Rights Reserved. -------------------------------------------------------------------- Do you want to read the License Agreement for this software ? 1. Yes 2. No Please choose one of above number: 1
1を選択します。
Did you read and understand the License Agreement ? (If you couldn't read above text, Please read 'ReadMeFirst_License.txt' file with any text editor.) 1. Yes 2. No Please choose one of above number: 1
1を選択します。
Did you agree the License Agreement ? 1. Agree 2. Do Not Agree Please choose one of above number: 1
1を選択します。
VPN Tools>Check Check コマンド - SoftEther VPN の動作が可能かどうかチェックする --------------------------------------------------- SoftEther VPN 動作環境チェックツール Copyright (c) SoftEther VPN Project. All Rights Reserved. この動作環境チェックツールを実行したシステムがテストに合格した場合は、SoftEther VPN ソフトウェアが動作する可能性が高いです。チェックにはしばらく時間がかかる場合があります。そのままお待ちください... 'カーネル系' のチェック中... [合格] ○ 'メモリ操作系' のチェック中... [合格] ○ 'ANSI / Unicode 文字列処理系' のチェック中... [合格] ○ 'ファイルシステム' のチェック中... [合格] ○ 'スレッド処理システム' のチェック中... [合格] ○ 'ネットワークシステム' のチェック中... [合格] ○ すべてのチェックに合格しました。このシステム上で SoftEther VPN Server / Bridge が正しく動作する可能性が高いと思われます。 コマンドは正常に終了しました。 -------------------------------------------------------------------- The preparation of SoftEther VPN Server is completed !
The preparation of SoftEther VPN Server is completed !と表示されればインストール成功です。
# cd .. # mv vpnserver /usr/local
解凍して出来たディレクトリを/usr/local配下に移動します。
# cd /usr/local/vpnserver/ # chmod 600 *
所有者に読み取り書き込み権限をつけます。
# chmod 700 vpncmd # chmod 700 vpnserver
実行系コマンドに実行権限をつけます。
# ./vpncmd
SoftEther VPN Serverが、この環境でちゃんと動くかどうかをチェックします。。
vpncmd コマンド - SoftEther VPN コマンドライン管理ユーティリティ SoftEther VPN コマンドライン管理ユーティリティ (vpncmd コマンド) Version 4.22 Build 9634 (Japanese) Compiled 2016/11/27 15:23:56 by yagi at pc30 Copyright (c) SoftEther VPN Project. All Rights Reserved. vpncmd プログラムを使って以下のことができます。 1. VPN Server または VPN Bridge の管理 2. VPN Client の管理 3. VPN Tools コマンドの使用 (証明書作成や通信速度測定) 1 - 3 を選択: 3
3を選択します。
VPN Tools を起動しました。HELP と入力すると、使用できるコマンド一覧が表示できます。 VPN Tools>check
checkコマンドを実行します。
Check コマンド - SoftEther VPN の動作が可能かどうかチェックする --------------------------------------------------- SoftEther VPN 動作環境チェックツール Copyright (c) SoftEther VPN Project. All Rights Reserved. この動作環境チェックツールを実行したシステムがテストに合格した場合は、SoftEther VPN ソフトウェアが動作する可能性が高いです。チェックにはしばらく時間がかかる場合があります。そのままお待ちください... 'カーネル系' のチェック中... [合格] ○ 'メモリ操作系' のチェック中... [合格] ○ 'ANSI / Unicode 文字列処理系' のチェック中... [合格] ○ 'ファイルシステム' のチェック中... [合格] ○ 'スレッド処理システム' のチェック中... [合格] ○ 'ネットワークシステム' のチェック中... [合格] ○ すべてのチェックに合格しました。このシステム上で SoftEther VPN Server / Bridge が正しく動作する可能性が高いと思われます。 コマンドは正常に終了しました。
上記のように表示されれば問題はないかと思います。
VPN Tools>exit
exitします。
次に起動スクリプトを作成します。ここでは、catコマンドを使用してスクリプトを作成します。下記のようにし、最後の行の改行の後にCtrl+D キーを押します。
# cat > /etc/init.d/vpnserver #!/bin/sh # chkconfig: 2345 99 01 # description: SoftEther VPN Server DAEMON=/usr/local/vpnserver/vpnserver LOCK=/var/lock/vpnserver test -x $DAEMON || exit 0 case "$1" in start) $DAEMON start touch $LOCK ;; stop) $DAEMON stop rm $LOCK ;; restart) $DAEMON stop sleep 3 $DAEMON start ;; *) echo "Usage: $0 {start|stop|restart}" exit 1 esac exit 0
これで起動スクリプトは完了です。
# chmod 755 /etc/init.d/vpnserver
起動スクリプトに実行権限をつけます。
# update-rc.d vpnserver defaults
OS起動時に自動的に実行するようにします。
# /etc/init.d/vpnserver start
SoftEther VPN Serverを起動します。これでインストールは完了です。
次にSoftEther VPN Serverの設定を行います。設定はWindowsから専用のツールを使用して行います。
以下のリンクにアクセスします。
https://www.softether-download.com/ja.aspx?product=softether
以下を選択します。
コンポーネントを選択:SoftEther VPN Server プラットフォームを選択:Linux CPU を選択:ARM EABI(32bit)
ダウンロードリンクの一番上部に表示されている「SoftEther VPN Server」をクリックしてダウンロードします。ダウンロードしたファイルを実行します。
「次へ」をクリックします。
「SoftEther VPNサーバー管理マネージャー(管理ツールのみ)」を選択して、「次へ」をクリックします。
「使用許諾契約書に同意します(A)」をチェックして、「次へ」をクリックします。
「次へ」をクリックします。
「次へ」をクリックします。
「次へ」をクリックします。
「完了」をクリックします。
「新しい接続設定」をクリックします。
「接続先設定名(N)」にこの接続先を識別するための任意の名称、「ホスト名(H)」にSoftEther VPN ServerをインストールしたRaspberry PiのIPアドレス、「ポート番号(P)」に443と入力して、「OK」をクリックします。
先ほど作成した接続名を選んで、「接続(C)」をクリックします。
ログインパスワードを設定する画面が表示されます。パスワードを入力して「OK」をクリックします。
「OK」をクリックします。
「リモートアクセスVPNサーバー(R)」をチェックして、「次へ(N)」をクリックします。
「はい(Y)」をクリックします。
仮想HUB名に任意の名称を入力して、「OK」をクリックします。
ダイナミックDNSの設定画面になります。プロバイダから固定IPアドレスが与えられていない場合は、適宜必要な項目を入力して「閉じる(X)」をクリックします。
今回は、L2TPやIPSecは何も使わないので、何もチェックしないでそのまま「OK」をクリックします。
特にこの機能は使いません。「VPN Azureを無効にする(D)」にチェックをして、「OK」をクリックします。
VPN接続するためのユーザーを作成します。ここで作成するユーザーは、後にインストールするSoftEther VPNクライアントでVPN接続するためのユーザーになります。「ユーザーを作成する(U)」をクリックします。
「ユーザー名(U)」に適当なユーザー名、「認証方法(A)」に「パスワード認証」、「パスワード認証」の部分の「パスワード」にパスワードを入力して、「OK」をクリックします。
「OK」をクリックします。
「閉じる(X)」をクリックします。
「3.ローカルブリッジの設定」でRaspberry Piの物理NICのインターフェース名を選択して、「閉じる(C)」をクリックします。
これで設定は以上になります。
次にVPNクライアントのPCの設定方法を記載します。VPNクライアント専用のツールをインストールする必要があります。
以下のリンクにアクセスします。
https://www.softether-download.com/ja.aspx?product=softether
以下を選択します。
コンポーネントを選択:SoftEther VPN Client プラットフォームを選択:Windows CPU を選択:Intel(x86 and x64)
ダウンロードリンクの一番上部に表示されている「SoftEther VPN Client」をクリックしてダウンロードします。ダウンロードしたファイルを実行します。
「次へ(N)」をクリックします。
「SoftEther VPN Client」を選択して、「次へ(N)」をクリックします。
「使用許諾契約書に同意します(A)」をチェックして、「次へ」をクリックします。
「次へ(N)」をクリックします。
「次へ(N)」をクリックします。
「次へ(N)」をクリックします。
「完了」をクリックします。
SoftEther VPN Clientが起動します。「新しい接続設定の作成」をクリックして下さい。
「はい(Y)」をクリックして下さい。仮想LANカードを作成します。
「仮想LANカードの名前(N)」に任意の名称を入力して、「OK」をクリックします。
結構時間がかかります。途中でフリーズした時もありましたが、無事作成されていました(´・ω・`)
以下のように入力して下さい。
接続設定名(N):この接続を識別するための任意の名称
ホスト名(H):SoftEther VPN ServerをインストールしたRaspberry PiのグローバルIPアドレス
ポート番号(P):443
仮想HUB名:SoftEther VPN Serverを設定した時に作成した仮想HUBの名前
ユーザー名(U):SoftEther VPN Server設定時に作成したユーザのユーザー名
パスワード(Y):SoftEther VPN Server設定時に作成したユーザのパスワード
作成した接続名の接続をダブルクリックすると、VPN接続が出来ます。
以上で、設定は完了になります。以下は、特殊な環境下での注意点となります。
■ DHCPサーバーの設定
SoftEther VPN ServerをインストールしたRaspberry Piと同じセグメントにDHCPサーバーがある場合には、そのDHCPサーバーに問い合わせて、IPアドレス等が自動で設定されます。
しかし、私の環境では、DHCPサーバーがなく、IPアドレスが自動で設定されませんでした。DHCPサーバーを立てたりとか、ルーター側でDHCPサービスを有効にしようとも考えたのですが、なんかめんどくさいなと思ってた時に、どうやら、SoftEther側で仮想的なDHCPサーバーを立てられることを知りました。これを利用すればOKでした。以下、設定方法です。
SoftEther VPNサーバー管理マネージャーを起動し、作成した仮想HUBを選択して、「稼働HUBの管理(A)」をクリックします。
「仮想NATおよび仮想DHCPサーバー機能(V)」をクリックします。
「SecureNATの設定(C)」をクリックします。
今回はDHCPのサービスだけ利用したいため、「仮想NAT機能を使用する(A)」を無効にします。
そして、「仮想DHCPサーバーの設定」で接続してきたVPNクライアントに通知したいIPアドレス等の情報を入力して、「OK」をクリックします。
「SecureNAT機能を有効にする(E)」をクリックします。
恐れず「OK」をクリックします。
「閉じる(X)」をクリックします。
これで設定は完了です。
■ VPN接続したいネットワークのサブネットが複数ある場合
私の環境がそうなのですが、SoftEther VPN Serverが置いてあるサブネット以外にも複数のサブネットがあり、VLAN間ルーティングされてます。他のサブネットにアクセスさせたい場合、VPNクライアントで作成された仮想NICのメトリックを1として下さい。これで、仮想NICに設定されたデフォルトゲートウェイが、VPNクライアントのPCのデフォルトゲートウェイになり、他のサブネットにもアクセスできるようになります。ただし、インターネットへのアクセスもVPNを経由するようになりますので、インターネットがちょっと遅くなるかもしれません。