2016.02.14
カテゴリ:Linux
Raspberry PI をVPN サーバーにしてみる
現在 Raspberry PI をバージョン違いで三台所有していますが(1B, 1B+, 2B) 1B+ を起動せず放置してたので
試しに VPN サーバーにしてみようかと思ってやってみました。
VPN 立てた後の用途は特に考えてません(適当)
- 前提条件
- Raspberry PI
サーバー用途なので有線LANで固定IPアドレス設定にしておいた方がよいです - WindowsPC (VPN管理用)
管理クライアントソフトをインストールする必要があります
- Raspberry PI
- SoftEther のダウンロード&ビルド
- SoftEther ダウンロード センター からダウンロード
- SoftEther VPN (Freeware) > SoftEther VPN Server > Linux > ARM EABI(32bit) を選択して最新ビルドを入手
- SoftEther VPN (Freeware) > SoftEther VPN Server Manager for Windows から管理クライアントも入手しておく
wget http://jp.softether-download.com/files/softether/v4.19-9599-beta-2015.10.19-tree/Linux/SoftEther_VPN_Server/32bit_-_ARM_EABI/softether-vpnserver-v4.19-9599-beta-2015.10.19-linux-arm_eabi-32bit.tar.gz tar -xvf softether-vpnserver-v4.19-9599-beta-2015.10.19-linux-arm_eabi-32bit.tar.gz cd vpnserver make
ビルドした後に /usr/local/vpnserver に一式配置してパーミッションを設定。
cd ../ mv vpnserver /usr/local cd /usr/local/vpnserver sudo chmod 600 * sudo chmod 700 vpncmd sudo chmod 700 vpnserver
- サービス登録
- vpnserver の起動スクリプトを書いてサービス登録。
sudo vi /etc/init.d/vpnserver sudo chmod 755 /etc/init.d/vpnserver/ sudo apt-get install chkconfig sudo chkconfig vpnserver on
- vpnserver の起動スクリプトを書いてサービス登録。
- /etc/init.d/vpnserver ※行頭「*」の部分は半角アスタリスク「*」です
#!/bin/sh ### BEGIN INIT INFO # Provides: vpnserver # Required-Start: $local_fs $network # Required-Stop: $local_fs $network # Default-Start: 2 3 4 5 # Default-Stop: 0 1 6 # Short-Description: SoftEther VPN Server # Description: Start vpnserver daemon SoftEther VPN erver ### END INIT INFO 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
- ルータのポート開放設定/ファイアウォール設定
- 以下ポートを通過するように設定が必要です。
TCP 50 ESP TCP 443 HTTPS ※管理クライアント操作用のため、ルータを通過する必要はない UDP 500, 4500 -
- 以下ポートを通過するように設定が必要です。
- 管理クライアント側設定 (Windows)
- SoftEther VPN Server Manager for Windows をインストールして起動
- 新しい接続設定を追加
接続設定名は任意、ホスト名にRaspberry PIサーバーのIPアドレスを入力 - 管理パスワードを設定して接続
- 「リモートアクセスVPNサーバー」にチェック
- 「仮想HUB」の名前を入力して追加
- DDNS名を設定
(私はドメインを持っているので使う必要がなかったのでここは適当に設定しました) - 「L2TPサーバー機能を有効にする(L2TP over IPsec)」にチェック
「IPsec事前共有鍵」を設定 ※VPNクライアント接続時に必要 - 「VPN Azureを無効にする」をチェック
- ユーザーを作成 ※VPNクライアント接続時に必要
- ローカルブリッジ設定で仮想HUBと「eth0」を選択して追加
- 接続テスト
- とりあえず Android で WiFiを切って LTE経由で VPN 接続設定して繋がるか確認
(確認端末: Nexus 5 - Android 6.0)
- とりあえず Android で WiFiを切って LTE経由で VPN 接続設定して繋がるか確認
- 設定 > もっと見る > VPN から VPN設定追加
名前: 任意
タイプ: L2TP/IPSec PSK を選択
サーバーアドレス: DDNS名を入力
IPSec事前共有鍵: 設定した共有鍵を入力 - 追加した設定をタップすると接続開始(このときに追加したユーザー名、パスワードを入力)
- 「接続中」から「接続しました」になればOK
証明書を使った認証とかもできそうな感じですし
安全に通信するならそこまでやった方が良さそうな気がしますがとりあえずここまで。