RaspberryPi1台でNAS+VPNサーバを構築してみた(OpenMediaVault5+SoftEtherVPN)
RaspberryPiを使った自宅NASを紹介しているブログは結構ありますが、VPN接続できるようにするところまでを紹介しているのは少ないと思ったので
今回はNASとVPNサーバを兼用させてRaspberryPiを構築する手順を紹介します。
1.RaspberryPiにOS(Rasbian)をインストール
①インストールツールのダウンロード・インストール
まず、RaspberryPi公式サイト(https://www.raspberrypi.org/software/)にアクセスし、インストールツールを使用しているダウンロード・インストールします。
※「Download for ***」の***部分は使用しているPCのOSで使い分けてください。
②インストールしたアプリを起動します。
「CHOOSE OS」でRaspberryPiにインストールするOSを選択します。(※今回は「RaspberryPi OS(Other)」→「RaspberryPi OS Lite (32bit)」を選択」
「CHOOSE SD CARD」でインストール先のSDカードを選択します。
選択肢終わると「WRITE」からRaspberryPiOSのインストールを始めます。
インストールが完了したらSDカードをRaspberryPiに挿入し起動します。
2.OpenMediaVaultのインストール
今回のNASを管理するためにOpenMediaVaultを導入します。
以下コマンドを実行してインストールします。(完了まで20分ほどかかります)
wget -O - https://github.com/OpenMediaVault-Plugin-Developers/installScript/raw/master/install | sudo bash
※最初にサイレントでパスワード入力を聞かれる場合があるためEnter等で処理が止まってないか注意してください。
インストールが完了したら、別端末(PC等)からアクセスできるか確認してください。
※URLに「(IPアドレスまたはホスト名)」を入力してアクセス。例ではIPアドレスを192.168.1.99に設定
初期ユーザadmin PW:openmediavault
3.SoftEtherVPNSeverをRaspberryPiにインストール
今回VPNサーバは「SoftEtherVPN」を使うことにします。
まず、RaspberryPiに「SoftEtherVPNServer」をインストールするために公式サイト(https://www.softether-download.com/ja.aspx?product=softether)にアクセスしダウンロードURLを取得します。
赤枠の箇所をキャプチャ通りに設定し、緑枠のところからリンク(URL)をコピーしてください。
コピーしたURLをつかってRaspberyPiでwgetをつかってダウンロードします。(※保存場所は任意、後で移動します。)
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
ダウンロードが完了したらファイルを解答・展開します。
tar zxf softether-vpnserver-v4.34-9745-rtm-2020.04.05-linux-arm_eabi-32bit.tar.gz
展開まで完了したら以下のコマンドを順に実行してインストール〜権限設定までを行います。
cd vpnserver make cd .. sudo mv vpnserver /usr/local/ cd /usr/local/vpnserver/ sudo chmod 600 * sudo chmod 700 vpncmd sudo chmod 700 vpnserver
4-1.【確認】自宅内でVPN接続できるかテスト準備
いきなり外から繋げる前に最小環境で接続ができるか確認していきます。
まず、RaspberryPiにインストールしたSoftEtherVPNServeの起動スクリプトを作ります。
sudo nano /etc/init.d/vpnserver
#[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 # Description: SoftEther VPN Server ### END INIT INFO DAEMON=/usr/local/vpnserver/vpnserver LOCK=/var/lock/vpnserver vpn_start() { ${DAEMON} start } vpn_stop() { ${DAEMON} stop } test -x ${DAEMON} || exit 0 case "$1" in start) vpn_start touch ${LOCK} ;; stop) vpn_stop rm ${LOCK} ;; restart) vpn_stop sleep 3 vpn_start ;; *) echo "Usage: $0 {start|stop|restart}" exit 1 esac exit 0
作成したスクリプトの権限を設定します。
あと、RaspberryPi起動時に自動起動するようcron編集画面にて下記のコマンドを追記します。
sudo chmod +x /etc/init.d/vpnserver sudo crontab -e
#cron編集ファイルに記載する行 @reboot sudo /etc/init.d/vpnserver start
RaspberryPiを再起動します。
4-2.SoftEtherVPNServerManagerをインストール、設定
RaspberryPiにインストールしたSoftEtherVPNServerの設定を行うための管理ツールを別端末(Windows またはMac)にインストールします。
SoftEtherの公式サイトから今度は「SoftEnther VPN Server Manager of ***」を選択してダウンロードします。
※***の部分はOS別で選択
2020/11/21時点でMacOS版をインストールしても起動しませんでした(MacOS Big Sur 11.0.1)。原因不明のため以降Windows版での操作となります。
ダウンロードしたアプリを起動、RaspberryPiのVPNServerアプリにアクセスするための設定を行います。
「新しい接続設定」選択、接続設定名「任意」、ホスト名「RaspberryPiのIPアドレスまたはホスト名」を設定し「OK」で進みます。
設定が完了したら「接続」から設定画面を開きます。
初期設定で管理画面ログイン用のパスワード設定画面が表示されるため設定します。
サーバ機能設定は「L2PT」を選択、IPsec共通設定で任意の鍵を設定してください。
VPN Azureは無効にしてください。
ダイナミックDNSは今後使うため覚えておいてください。※赤枠部分に表示されているもの
(後で管理画面からも参照できます。)
ユーザ名「任意」、認証方法「パスワード認証」を選択し作成します。
「ローカルブリッジの設定」では、使用しているネットワークデバイスを設定します。
※有線の場合は「eth0」
4-3.【確認】自宅内でVPN接続できるかテスト
iPhoneやPCを使って自宅LAN内からVPN接続できるか確認します
例)iPhoneの場合
「設定」→「一般」→「VPN」→「VPN構成を追加...」を選択
以下の設定を行う。
タイプ:L2TP
説明:任意(自宅NASなど)
サーバ:RaspberryPiのIPアドレス
アカウント:『4-2』で設定したユーザー名
パスワード:『4-2』で設定したパスワード
シークレット:IPsec共通設定鍵
すべての信号を送信:オン
VPN構成の状況をオンにして接続済みとなればOK
5.仮想ブリッジを作成し外部ネットワークからアクセスできるように設定
まず、RaspberryPiに仮想ブリッジの設定ユーティリティソフトをインストールします。
sudo apt-get install -y bridge-utils
次に、OpenMediaVaultでブリッジの追加を行います。
実はここが難所ですした(汗
OpenMediaVaultは独自にネットワーク設定を持っているため通常ブリッジを追加したり固定IPアドレスを設定する際に変更する「interfaces」や「dhcpcd.conf」では設定が行えず
ブラウザから「一般」→「ネットワーク」からブリッジの追加を行っていく必要があります。
以下の手順で行います。
コンソールから「ifconfig」を打ってbr0が表示されていればOKです。
6.tapデバイスを追加
『5』で追加した仮想ブリッジを使用するためのtapデバイスを追加します。
まず、「ローカルブリッジ設定」を選択します。
既に追加されているローカルブリッジを削除します。
新しくローカルブリッジを追加します。
仮想HUBは既存から選択、作成する種類を「新しいtapデバイスとのブリッジ接続」を選択、tapデバイス名を設定してます。
追加したデバイスの状態が「動作中」になっていればOKです。
最後にコンソールから「ifconfig」を打って「tap_(tapデバイス名)」が表示されていればOKです。
7.起動スクリプトをtapデバイス用に修正
『4-1』で作成した起動スクリプトをtapデバイスで接続るように修正します。
sudo nano /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 # Description: SoftEther VPN Server ### END INIT INFO DAEMON=/usr/local/vpnserver/vpnserver LOCK=/var/lock/vpnserver vpn_start() { ${DAEMON} start sleep 2 tap=`/sbin/ifconfig -a| awk '$1 ~ /^tap/ {print $1}'` tap=`/sbin/ifconfig -a| awk '$1 ~ /^tap/ {print $1}'` brctl addif br0 ${tap} } vpn_stop() { ${DAEMON} stop } test -x ${DAEMON} || exit 0 case "$1" in start) vpn_start touch ${LOCK} ;; stop) vpn_stop rm ${LOCK} ;; restart) vpn_stop sleep 3 vpn_start ;; *) echo "Usage: $0 {start|stop|restart}" exit 1 esac exit 0
設定を反映するためRaspberryPiを再起動します。
8.ルータ設定からVPN用のポートを開放する
ルータ設定画面から以下のポートを開放するように設定します。
※設定方法はお使いのルータによって異なるため省略します。
500 | UDP | IKE (Internet Key Exchange) |
4500 | UDP | IPsec NAT-T |
9.【確認】自宅外ネットワークからVPN接続を行う。
『4-3』で確認したVPN接続の設定を変更し、自宅外ネットワーク(4Gなど)に繋げた状態でVPN接続が行えるか確かめます。
例)iPhoneの場合のVPN設定項目
タイプ:L2TP
説明:任意(自宅NASなど)
サーバ:ダイナミックDNSアドレス
アカウント:『4-2』で設定したユーザー名
パスワード:『4-2』で設定したパスワード
シークレット:IPsec共通設定鍵
すべての信号を送信:オン
VPNをオンにし接続済みとなればOK