コンテンツへスキップ

SoftEther VPN をRaspberry Pi にインストールしてVPN Server 化する。

これを使ったら、Raspberry Pi に設定ができるんじゃないかなと。

図1: SoftEtherのダウンロードページで、Linux用ARM 64bitのVPN Serverを選択しているところ。
図1: SoftEtherのダウンロードページで、Linux用ARM 64bitのVPN Serverを選択しているところ。

SoftEther VPNをRaspberry Pi にインストールしてVPN Server 化する。

導入する手順。

下記のドキュメントに詳しく書いてあります。
わかりやすい言葉で書いてあって安心感があります。

https://ja.softether.org/4-docs/1-manual/7/7.3

Raspberry Pi VPN サーバーの構築。

はじめに、自分のRaspberry Pi OS が何ビットか確認しておきましょう。

「getconf LONG_BIT」で64 が返ってきたら64ビットです。

図2: ターミナルで「getconf LONG_BIT」を実行し、Raspberry Pi OSが64ビットであることを確認。
図2: ターミナルで「getconf LONG_BIT」を実行し、Raspberry Pi OSが64ビットであることを確認。

ファイルのダウンロードと展開

softEther のダウンロードページからARM 向けのファイルをダウンロードします。
確認したビット数のものを入手します。

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

ダウンロードが終わったら、Paspberry Pi にコピーして、ファイルを展開。

「ここでファイルを展開」をクリックします。

図3: ダウンロードしたtar.gzファイルを右クリックして「ここでファイルを展開」を選んでいるところ。
図3: ダウンロードしたtar.gzファイルを右クリックして「ここでファイルを展開」を選んでいるところ。

実行ファイルの生成と配置

このフォルダパスを指定して、ビルドします。

図4: 展開したvpnserverフォルダのパスを指定して、makeでビルドする準備をしているところ。
図4: 展開したvpnserverフォルダのパスを指定して、makeでビルドする準備をしているところ。
make -C <フォルダパス>

※「C」は大文字です。

なんか、出来たけど使い方がわからない。。。orz

図5: ビルドが完了してvpncmdとvpnserverの実行ファイルができたところ。使い方はまだよくわかっていない状態。
図5: ビルドが完了してvpncmdとvpnserverの実行ファイルができたところ。使い方はまだよくわかっていない状態。

展開したvpnserver フォルダを/usr/local へ移動する。

uniuni@zapsrv01:~ $ sudo mv /home/uniuni/softether/vpnserver /usr/local 
uniuni@zapsrv01:~ $ 
図6: 展開したvpnserverフォルダを/usr/localへ移動したところ。
図6: 展開したvpnserverフォルダを/usr/localへ移動したところ。

ファイルの所有者は今のところ「uniuni」です。

図7: ls -lhで/usr/local/vpnserver の中身を確認。所有者がまだuniuniのままになっている。
図7: ls -lhで/usr/local/vpnserver の中身を確認。所有者がまだuniuniのままになっている。
パーミッションを変更します

所有者をroot に変更して、読み書きもroot のみ(600)、コンパイルしたvpnserver と、vpncmd だけ、700にする。

・所有者を変更
chown [OPTION]… [OWNER][:[GROUP]] FILE…

・パーミッションを変更
chmod [OPTION]… MODE[,MODE]… FILE…

この先、root での作業になるので、ユーザーも切り替えています。

uniuni@zapsrv01:~ $ sudo chown -R root /usr/local/vpnserver
uniuni@zapsrv01:~ $ su
パスワード:
root@zapsrv01:/home/uniuni# 
root@zapsrv01:/home/uniuni# chmod -R 600 /usr/local/vpnserver
root@zapsrv01:/home/uniuni# chmod -R 700 /usr/local/vpnserver/vpncmd
root@zapsrv01:/home/uniuni# chmod -R 700 /usr/local/vpnserver/vpnserver
root@zapsrv01:/home/uniuni# 
root@zapsrv01:/home/uniuni# ls -lh /usr/local/vpnserver
合計 12M
-rw------- 1 root uniuni   82  8月 17 22:43 Authors.txt
-rw------- 1 root uniuni 3.5K  8月 17 22:43 Makefile
-rw------- 1 root uniuni  32K  8月 17 22:43 ReadMeFirst_Important_Notices_cn.txt
-rw------- 1 root uniuni  37K  8月 17 22:43 ReadMeFirst_Important_Notices_en.txt
-rw------- 1 root uniuni  52K  8月 17 22:43 ReadMeFirst_Important_Notices_ja.txt
-rw------- 1 root uniuni 3.6K  8月 17 22:43 ReadMeFirst_License.txt
drw------- 2 root uniuni 4.0K 11月 19 00:40 chain_certs
drw------- 2 root uniuni 4.0K 11月 19 00:40 code
-rw------- 1 root uniuni 2.0M  8月 17 22:43 hamcore.se2
-rw------- 1 root uniuni  867 11月 19 00:40 lang.config
drw------- 2 root uniuni 4.0K 11月 19 00:40 lib
-rwx------ 1 root uniuni 4.9M 11月 19 00:40 vpncmd
-rwx------ 1 root uniuni 5.0M 11月 19 00:40 vpnserver
root@zapsrv01:/home/uniuni# 

VPN 機能のチェック。

VPN のユーティリティを使って、インストールした端末で「SoftEther VPN」が実行可能かどうかをチェックします。

チェックコマンドを実行する。

VPN Tools を実行する。

root@zapsrv01:/home/uniuni# cd /usr/local/vpnserver
root@zapsrv01:/usr/local/vpnserver# ./vpncmd

選択肢で「3」を選択するとツールが起動する。

vpncmd プログラムを使って以下のことができます。

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

1 - 3 を選択: 3

VPN Tools を起動しました。HELP と入力すると、使用できるコマンド一覧が表示できます。

VPN Tools>

こうだな。

図8: vpncmdを実行して、メニューから「3」を選びVPN Toolsを起動しているところ。
図8: vpncmdを実行して、メニューから「3」を選びVPN Toolsを起動しているところ。

「check」を実行すると、システムのチェックが開始されます。

VPN Tools>check
Check コマンド - SoftEther VPN の動作が可能かどうかチェックする
---------------------------------------------------
SoftEther VPN 動作環境チェックツール

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

この動作環境チェックツールを実行したシステムがテストに合格した場合は、SoftEther VPN ソフトウェアが動作する可能性が高いです。チェックにはしばらく時間がかかる場合があります。そのままお待ちください...

'カーネル系' のチェック中...
              [合格] ○
'メモリ操作系' のチェック中...
              [合格] ○
'ANSI / Unicode 文字列処理系' のチェック中...
              [合格] ○
'ファイルシステム' のチェック中...
              [合格] ○
'スレッド処理システム' のチェック中...
              [合格] ○
'ネットワークシステム' のチェック中...
              [合格] ○

すべてのチェックに合格しました。このシステム上で SoftEther VPN Server / Bridge が正しく動作する可能性が高いと思われます。

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

VPN Tools>

これ、ビルドするときにも実行されてたヤツやん。

図9: VPN Toolsの「check」コマンドで動作環境をチェックし、全項目合格しているところ。
図9: VPN Toolsの「check」コマンドで動作環境をチェックし、全項目合格しているところ。

ラズパイは合格らしいぜ。

スタートスクリプトへの登録

以下のファイルを作成する。

/etc/init.d/vpnserver

#!/bin/sh
# chkconfig: 2345 99 01
# description: SoftEther VPN Server
DAEMON=/usr/local/vpnserver/vpnserver
LOCK=/var/lock/subsys/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
テキストエディタで作る

ファイルの内容を貼り付けて整形。

図10: テキストエディタ(Geany)で/etc/init.d/vpnserverの起動スクリプトを作成しているところ。
図10: テキストエディタ(Geany)で/etc/init.d/vpnserverの起動スクリプトを作成しているところ。
cat コマンドで作る。

cat > /etc/init.d/vpnserver を入力してから、ファイルの中身を貼り付け、【ctrl】+【D】で終了。

Raspberry Pi OS のターミナルでコピペするには、
右クリックメニューを使うか、 【Shift】+【Ctrl】+【C】(コピー)/【V】(ペースト)を使用します。

図11: catコマンドで起動スクリプトの中身を貼り付けて作成しているところ。
図11: catコマンドで起動スクリプトの中身を貼り付けて作成しているところ。

権限を変更して、root 以外が書き換えないようにする。でも実行は許可する。

root@zapsrv01:/usr/local/vpnserver# chmod 755 /etc/init.d/vpnserver

root@zapsrv01:/usr/local/vpnserver# ls -lh /etc/init.d/vpnserver
-rwxr-xr-x 1 root root 353 11月 21 18:36 /etc/init.d/vpnserver
root@zapsrv01:/usr/local/vpnserver# 

VPN サービスの起動

systemd で起動。

図12: systemctlでvpnserverサービスを起動し、正常に動作していることを確認しているところ。
図12: systemctlでvpnserverサービスを起動し、正常に動作していることを確認しているところ。

図13: topコマンドでvpnserverプロセスが実際に動いていることを確認しているところ。
図13: topコマンドでvpnserverプロセスが実際に動いていることを確認しているところ。

VPN の設定

管理画面はWindows 版などを使うのが推奨とのことです。

図14: ブラウザでVPN Serverのデフォルトページにアクセスした様子。管理にはWindows版の管理ツールが推奨されている。
図14: ブラウザでVPN Serverのデフォルトページにアクセスした様子。管理にはWindows版の管理ツールが推奨されている。

マネージャーだけダウンロードできますね。

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

図15: SoftEtherのダウンロードページで、Windows用のVPN Server Managerを選択しているところ。
図15: SoftEtherのダウンロードページで、Windows用のVPN Server Managerを選択しているところ。

Windows 版の管理ツールを使用して設定します。

接続先のVPN サーバーについての情報を入力します。

名前と、アドレス、接続ポートなんかを入力します。

図16: VPN Server Managerで新しい接続設定を作成し、接続先のホスト名やポート番号を入力しているところ。
図16: VPN Server Managerで新しい接続設定を作成し、接続先のホスト名やポート番号を入力しているところ。

接続をポチ

図17: VPN Server Managerの接続一覧から、作成した接続先を選んで「接続」ボタンを押すところ。
図17: VPN Server Managerの接続一覧から、作成した接続先を選んで「接続」ボタンを押すところ。

パスワーをド設定

今後、ログインするときに聞かれます。

図18: 初回接続時に管理パスワードを設定しているところ。
図18: 初回接続時に管理パスワードを設定しているところ。

簡易セットアップが起動。

リモートアクセスVPN サーバーにします。

図19: 簡易セットアップウィザードで「リモートアクセスVPNサーバー」を選択しているところ。
図19: 簡易セットアップウィザードで「リモートアクセスVPNサーバー」を選択しているところ。

仮想HUB の名前を決めます。

図20: 簡易セットアップで仮想HUBの名前を決めているところ。
図20: 簡易セットアップで仮想HUBの名前を決めているところ。

ホント、ダイナミックDNS は神だな。

図21: ダイナミックDNSの設定画面。ホスト名やグローバルIPアドレスが確認できる。
図21: ダイナミックDNSの設定画面。ホスト名やグローバルIPアドレスが確認できる。

これで行けそうなんじゃないか。

図22: IPsec/L2TP/EtherIPサーバー機能の設定画面。L2TPサーバー機能を有効にしているところ。
図22: IPsec/L2TP/EtherIPサーバー機能の設定画面。L2TPサーバー機能を有効にしているところ。

これは無効で。

図23: VPN Azureの設定画面。今回はVPN Azureを無効にしているところ。
図23: VPN Azureの設定画面。今回はVPN Azureを無効にしているところ。

ユーザー設定。

ユーザーを作成する をクリック。

図24: 簡易セットアップの実行画面で「ユーザーを作成する」をクリックしているところ。
図24: 簡易セットアップの実行画面で「ユーザーを作成する」をクリックしているところ。

とりあえず、ユーザー名とパスワード

図25: ユーザーの新規作成画面で、ユーザー名とパスワードを入力しているところ。
図25: ユーザーの新規作成画面で、ユーザー名とパスワードを入力しているところ。

図26: ユーザーの作成が完了したことを知らせるメッセージ。
図26: ユーザーの作成が完了したことを知らせるメッセージ。

閉じる。

図27: 作成したユーザーが登録されているのを確認して、ユーザー管理画面を閉じるところ。
図27: 作成したユーザーが登録されているのを確認して、ユーザー管理画面を閉じるところ。

ローカルブリッジ先を設定して閉じる。

図28: 簡易セットアップの実行画面で、ローカルブリッジ先のEthernetデバイス(eth0)を選んで閉じるところ。
図28: 簡易セットアップの実行画面で、ローカルブリッジ先のEthernetデバイス(eth0)を選んで閉じるところ。

この画面は関係ないのでそのまま閉じます。

図29: VM内でローカルブリッジ機能を使う場合の注意事項ダイアログ。今回はVM環境ではないので関係ない画面。
図29: VM内でローカルブリッジ機能を使う場合の注意事項ダイアログ。今回はVM環境ではないので関係ない画面。

余談ですが、、、
以前にVM で構築した時に出てきて欲しかったこの画面。(VM で構築している時には出てこなかった。)
「プロミスキャスト有効にする」の設定がおっしゃる通り無効だったのでしばらくハマりました^^。
でも、節々に親切設計な印象を受けますね、このソフトウェア。

VPN サーバーを公開する。

これで設定はOK なはずなので、WEB に公開して接続できるようにします。

図30: VPN Server管理マネージャーで、作成した仮想HUBがオンラインになっていることを確認しているところ。
図30: VPN Server管理マネージャーで、作成した仮想HUBがオンラインになっていることを確認しているところ。

Raspberry Pi をDMZ に設定します。

図31: ルーターのDMZ設定画面。Raspberry PiのIPアドレスを転送先に指定しているところ。
図31: ルーターのDMZ設定画面。Raspberry PiのIPアドレスを転送先に指定しているところ。

iPhone から接続テスト。

ファイアウォールを停止した状態でVPN 接続が出来ることを確認。

図32: iPhoneのVPN設定画面。ラズパイのVPNサーバーに接続済みになっている。
図32: iPhoneのVPN設定画面。ラズパイのVPNサーバーに接続済みになっている。

ファイアウォールで開けておくポートが、調べてもちょっと見つからなかったので、
firewalld のログを頼りに500番(UDP)と、4500番(UDP)を開放したところ、VPN 接続ができました。

図33: firewall-cmd --list-allで、500番と4500番のUDPポートが開放されていることを確認しているところ。
図33: firewall-cmd –list-allで、500番と4500番のUDPポートが開放されていることを確認しているところ。

※ファイアウォールの設定についてはこちら

Linux のファイアウォール(firewalld)設定について簡潔にまとめ。

今回はRaspberry Pi にVPN サーバーをインストールして設定しました。
スマホでなんとなくVPN 接続してほくそ笑んでおります。

今度は、OpenVPN に挑戦してみたいです。

以上です。

(Visited 1,951 times, 1 visits today)

「SoftEther VPN をRaspberry Pi にインストールしてVPN Server 化する。」への1件のフィードバック

  1. ピンバック: インターネット経由で、パソコン電源をONする。(ルーターに依存しない) - .zapping

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です