アウトドア好きガジェットオタクの日常

アウトドアで使えるガジェットをメインに紹介します。

RaspberryPi1台でNAS+VPNサーバを構築してみた(OpenMediaVault5+SoftEtherVPN)

RaspberryPiを使った自宅NASを紹介しているブログは結構ありますが、VPN接続できるようにするところまでを紹介しているのは少ないと思ったので
今回はNASVPNサーバを兼用させてRaspberryPiを構築する手順を紹介します。

1.RaspberryPiにOS(Rasbian)をインストール

①インストールツールのダウンロード・インストール

まず、RaspberryPi公式サイト(https://www.raspberrypi.org/software/)にアクセスし、インストールツールを使用しているダウンロード・インストールします。
f:id:Fuu-min:20201121200344p:plain

※「Download for ***」の***部分は使用しているPCのOSで使い分けてください。

②インストールしたアプリを起動します。

「CHOOSE OS」でRaspberryPiにインストールするOSを選択します。(※今回は「RaspberryPi OS(Other)」→「RaspberryPi OS Lite (32bit)」を選択」
「CHOOSE SD CARD」でインストール先のSDカードを選択します。
f:id:Fuu-min:20201121200352p:plain
選択肢終わると「WRITE」からRaspberryPiOSのインストールを始めます。
インストールが完了したらSDカードをRaspberryPiに挿入し起動します。

注意点

以下作業はネットワーク環境が必要になります。RaspberryPiを必ずインターネットに繋がるようにしてください。
また、CUIで行うためSSHでの作業も可能です。必要に応じて設定してください。
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
f:id:Fuu-min:20201121200357p:plain

IPアドレス固定化

OpenMediaVaultの「システム」→「ネットワーク」→「インターフェス」からIPアドレスを固定してください。
例)有線接続の場合
バイス名:eth0
IPv4
 メソッド:スタティック
 アドレス:任意
 ネットマスク:255.255.255.0 ※環境によって異なる
 ゲートウェイ:ルータのIPアドレス
IPv4
 メソッド:DHCP
 

3.SoftEtherVPNSeverをRaspberryPiにインストール

今回VPNサーバは「SoftEtherVPN」を使うことにします。
まず、RaspberryPiに「SoftEtherVPNServer」をインストールするために公式サイト(https://www.softether-download.com/ja.aspx?product=softether)にアクセスしダウンロードURLを取得します。
赤枠の箇所をキャプチャ通りに設定し、緑枠のところからリンク(URL)をコピーしてください。
f:id:Fuu-min:20201121200405p:plain
コピーした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別で選択
f:id:Fuu-min:20201121200416p:plain

2020/11/21時点でMacOS版をインストールしても起動しませんでした(MacOS Big Sur 11.0.1)。原因不明のため以降Windows版での操作となります。


ダウンロードしたアプリを起動、RaspberryPiのVPNServerアプリにアクセスするための設定を行います。
f:id:Fuu-min:20201121200425p:plain

「新しい接続設定」選択、接続設定名「任意」、ホスト名「RaspberryPiのIPアドレスまたはホスト名」を設定し「OK」で進みます。
f:id:Fuu-min:20201121200431p:plain
設定が完了したら「接続」から設定画面を開きます。

初期設定で管理画面ログイン用のパスワード設定画面が表示されるため設定します。
サーバ機能設定は「L2PT」を選択、IPsec共通設定で任意の鍵を設定してください。
f:id:Fuu-min:20201121200437p:plain

VPN Azureは無効にしてください。
f:id:Fuu-min:20201121200446p:plain

ダイナミックDNSは今後使うため覚えておいてください。※赤枠部分に表示されているもの
(後で管理画面からも参照できます。)
f:id:Fuu-min:20201121200454p:plain

ユーザ名「任意」、認証方法「パスワード認証」を選択し作成します。
f:id:Fuu-min:20201121200320p:plain
「ローカルブリッジの設定」では、使用しているネットワークデバイスを設定します。
※有線の場合は「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」では設定が行えず
ブラウザから「一般」→「ネットワーク」からブリッジの追加を行っていく必要があります。
以下の手順で行います。

  1. 「eth0」を削除 ※適用はしない
  2. 「追加」→「ブリッジ」を選択
  3. 「ブリッジ」ー「インタフェース」から「eth0」を選択
  4. IPv4」「IPv6」を「etho0」と同じ値で設定
  5. 「適用」を実行

コンソールから「ifconfig」を打ってbr0が表示されていればOKです。

6.tapデバイスを追加

『5』で追加した仮想ブリッジを使用するためのtapデバイスを追加します。
まず、「ローカルブリッジ設定」を選択します。
f:id:Fuu-min:20201121200325p:plain

既に追加されているローカルブリッジを削除します。
f:id:Fuu-min:20201121200330p:plain

新しくローカルブリッジを追加します。
仮想HUBは既存から選択、作成する種類を「新しいtapデバイスとのブリッジ接続」を選択、tapデバイス名を設定してます。
f:id:Fuu-min:20201121200334p:plain
追加したデバイスの状態が「動作中」になっていればOKです。
f:id:Fuu-min:20201121200339p:plain
最後にコンソールから「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

まとめ

かなり特殊かと思いましたが、個人的にOMV+VPNの両立でだいぶ苦労しためほかにも迷っている方がいてその方の参考になればと思います。
(OpenMediaVaultの設定やVPNサーバの構築方法はもっとちゃんと説明されているサイトが山ほどあるのでそちらを参考にしてもらったほうがいいです。)

『スノーボードで使える!』自撮りボーダー5年目のおすすめアクションカメラ!

いま、アクションカメラが熱い!

f:id:Fuu-min:20201031235612j:plain
 『GoProHERO9』『OSMO Pocket2』『Insta360OneX2』であったりといろいろなアクションカメラの発表ありましたね。個人的には10/28に発表された『Insta360OneX2』がダントツでほしい!色味はGoProのほうがきれいだし、360度カメラは編集が面倒なんですが、アクションカメラはより広角で撮れるほうが強いと思っているのでGoProよりInsta360のほうがおススメです。
 あと、自分はスノボ以外にスキューバダイビングにも使うためハウジングに入れれば水中で広角で撮れることもInsta360が優れていることの一つです。GoProもハウジングはありますが水中に入れるとびっくりするほど画角が狭くなるんです。(空気と水の屈折率の違いのため。)
(小言:GoProはMaxLensモジュラー対応のハウジングが出たらダイビングでマストバイです。)

カメラ紹介

 今回は新しいカメラの紹介ではなく、スノーボードで使えるカメラの紹介と普段私が使っている使い方の紹介をしていきたいと思います。わたしが普段使っているスノボで使っているカメラは2種類『GoProHERO7』『Insta360OneX』です。それぞれの使うタイミングを紹介します。

GoProHERO7

f:id:Fuu-min:20201031235715j:plain
『GoproHero7』

GoProはなんといっても映像が綺麗!手ぶれ補正もピカイチなので追い撮りや自撮りで撮るときに活躍します。

【VLOG】SnowBoarding #1 ~ガーラ湯沢スキー場~
 手振れ補正をかけると画角が狭くなるためある程度ながい自撮り棒での撮影が必要です。※上記の動画ではこんな感じの自撮り棒を使っています。
 >

f:id:Fuu-min:20201031235819j:plain
『GoPro+自撮り棒』

 まっすぐな自撮り棒だけだと自撮り棒が大きく映ってしまうためアールのついたアームを使うといい感じで撮れます。
 自撮り棒を使うときのコツですが、カメラの重さと固定方法に注意することです。カメラ自体は軽いのですが自撮り棒につけるとてこの原理で重さが増すのと滑っているときに前にカメラを向けると風をもろに受けてさらに重く感じます。
 また、カメラの向きですがアームで角度をつける際にカメラを下方向に向けて固定するカメラの向きが安定します。

Insta360OneX

f:id:Fuu-min:20201031235938j:plain
『Insta360OneX』

 5.7K撮影可能な360度カメラ。1度の撮影でいろいろなアングルを切り出して編集することができるため表現できる幅がGoProの3台分ぐらいあります(個人の感想です)。GoProでは表現できない超広角な映像+手振れ補正で撮れるのも魅力的なポイントです。

【VLOG】SnowBoarding #10 ~ホワイトワールド尾瀬岩鞍~

 Insta360OneXの場合はものすごく広角で撮れるためそこまで長い自撮り棒は必要ありません。Goproと一部共通ですが、いつも全ては伸ばさずに使っています。

f:id:Fuu-min:20201101000037j:plain
『Insta360OneX+自撮り棒』

まとめ

 いかがだったでしょうか。最近はある程度の値段のカメラなら綺麗な画質で撮れるカメラが増えてきましたのでこれからアクションカメラの購入を考えている方の参考になれば幸いです。

今年はVR元年!(何回目だよ。。。)

1.VRが熱い!

 VRが話題になってから数年、幾度となく『VR元年』と言われては世間一般に普及するまでには至っていませんが、今回こそVR元年と言えるのではないでしょうか。
 

1.1.歴代VR

 まずは私が今までに買ったVRゴーグルを紹介します。
 ・OculusDK2+LeepMotion

f:id:Fuu-min:20201026022940j:plain

 1番最初に買ったのはこの『OculusDK2』(以下、DK2)でした。DK2は「DeveloperKit2」のことで、開発者向けの試作デバイスになります。この時は、VRゴーグルって何?ってぐらいの知名度で対応ソフトも全くありませんでした。
 専用コントローラもないため、キーボードやPS3XBOXのコントローラで操作するしかありませんでした。『LeepMotion』というハンドトラッキングバイスと組み合わせることで、手を使って操作することができるようになったときはすごく感動したのを覚えています。
  ・Fove0

f:id:Fuu-min:20201026023022j:plain

 いろいろなVRゴーグルが出始めた時に、このVRゴーグルは異色を放っていました。特徴は何といっても『アイトラッキング』とそれを利用した『Foveated Rendering(レンダリング負荷軽減)』です。
 『アイトラッキング』とはVRゴーグル装着者の視線を追跡できる機能で、視線だけで操作することができます。さらにこの『アイトラッキング』をつかって、見ているところだけ高解像度の映像を表示し全体的には低解像度にすることでレンダリング処理を軽減することができる『Foveated Rendering』が話題になりました。これはまさにSAOの世界だと思いました。
 だたしこれには欠点があり、「アイトラッキング」は眼鏡をかけているとうまく機能しません。また、『Foveated Rendering』はソフト側で対応する必要があり、対応アプリが全くありませんでした。コントローラもないため視線だけではどうしても没入感が味わえず、結果的に私には会いませんでした。

1.2.OculusQuest2がすごい

 2020年10月13日にFacebook社の「OculusQuest2」(以下、Quest2)発売されましたが、このデバイスがヤバイです。

f:id:Fuu-min:20201026023047j:plain

・何がヤバイのか?
 ①スタンドアロンVRである
  VRゴーグルは大きく分けてPCにケーブルで接続してつかう「PC接続型」とVRゴーグル一つで完結して使える「スタンドアロン型」に分けられます。
  「PC接続型」はVRゴーグルでトラッキング処理、PCでグラフィック処理を分担して行います。メインの処理はPCになるためハイレベルなグラフィック処理を行うことができます。
  Quest2は「スタンドアロン型」なのですが、この「スタンドアロン型」ではVRゴーグルに内蔵されたCPU+GPU(SoC)でグラフィック処理からトラッキング処理まで扱います。このためPC接続型に比べてハイレベルなグラフィック処理は行えません。(スマホのゲームとパソコンのゲームのグラフィックぐらい違います)が、最近はスマホでも高レベルなグラフィック処理が行われているように十分VRで見ても耐えられる映像が処理できるようになりました。
 
 ②映像が綺麗
  先ほど「スタンドアロン型はハイレベルなグラフィック処理は行えません。」と言いましたが、映像の綺麗さはグラフィックの処理能力がすべてではありません。それを出力する「ディスプレイ」の性能にも左右します。
  Quest2のディスプレイは現行VRゴーグルでもトップクラスに綺麗なのです。片目でほぼ2Kの高解像度の映像が表示できるため、『スクリーンドア効果』と呼ばれる映像が網目掛かったように見える現象がなくなりました。
  さらに、Quest2で採用されているLCD(液晶)も良い影響を与えています。他のVRゴーグルで採用されているOLED(有機EL)は発色(特に黒色)がよく映像が色鮮やかなのですが、ピクセル配列が『ペンタイル配列』と呼ばれる方式を採用していることが多くこれがスクリーンドア効果を助長する要因となっていました。初代OculusQuest(以下、初代Quest)ではOLEDを採用していましたが、Quest2でLCDに変更されているのは価格面もありますが映像面でもベストな選択だと思います。
 
 ③ハンドトラッキングができる
  いくら映像が綺麗でも操作方法が映像と一致しないとどうしてもプレゼンス(存在感)が落ちてしまいます。(今までの経験上。)専用コントローラで手の位置がVR世界に表示できることもいいのですが、やっぱり手があるとVR世界でできる範囲が広がると思うのでハンドトラッキングできるのは最高に良いです。
 
 ④価格が安い
  Quest2はとにかく安いです。下記に初代QuestとQuest2のスペック比較表を載せています。
  性能アップなのに価格ダウン。
  最高です!
  ・スペック比較表
スペック
OculusQuest
OculusQuest2
SoC
Snapdragon 835
Snapdragon XR2
メモリ
4GB
6GB
ストレージ
64GB,128GB
64GB,256GB
ディスプレイ
1440×1660(片目)
OLED(ペンタイル) 72Hz
1832×1920(片目)
LCD 90Hz
 6Dof
 4カメラ
 6Dof
4カメラ
外部IF
USB-C
3.5mmヘッドホンジャック×2
USB-C
3.5mmヘッドホンジャック
コントローラ
Oculus Touchコントローラー2つ
Oculus Touchコントローラー2つ
重量
571g
503g
価格
64GB:¥49,800
128GB:¥62,800
64GB:¥33,800
256GB:¥44,800
   赤字:性能UP青:性能Down

VRでできること

 VRゴーグルを買った大半の人が使う目的はゲームか映像鑑賞(99%はアダ〇ト目的 ※個人的見解)だと思います。
 ゲームはPCゲーム界では有名なSteemのVRプラットホーム『SteemVR』でたくさんのアプリが配信されています。またOculusではOculusStoreがあり、Oculus専用でデバイスようにカスタマイズされているアプリが配信されています。
 映像鑑賞ではYoutubeやAmazonPrime、DMMが専用アプリを用意していてVR映像に限らず、普通の映画などを大画面で見ているかのような体験ができます。
 

■今後の展望

 ゲームでいうと、今後は専用コントローラの登場がキーになるのではないかと思っています。なぜかというと、やはりVR世界で普通のゲームコントローラや手だけのコントローラの操作では限界があります。歩いたり走ったりする操作を行える専用コントローラが出てくるとゲームの可能性はさらに広がるのではないでしょうか。
 だた私が、期待しているのは現実世界に干渉できる「MR(Mixed Reality)」「AR(Augmented Reality)」の普及です。ゴーグルをかけながら現実空間を透かして見ることで現実のデバイスVR空間で使えるようになれば操作の幅が広がりますし、現実空間にVRの映像(例えばディスプレイやルート案内表示)を追加すれば現実世界での利便性向上にもつながると思います。まさにFacebook社が発表している「Infinite Office」や「Project Aria」がまさに私が理想としているMR、ARの形です。
 

■まとめ

 毎回毎回「VR元年」と言われていて、「本当に流行るの?」と疑問を思われている方も多いと思いますが、日進月歩の進歩で新たにVRで出来ることが増えていくため、そのたびに「VR元年」と呼ばれているのだと思います。
 このコロナ過でリモート作業が増えた現代にVRがマッチする可能性は十二分にあります。私はその可能性を信じてVR、ないしMR、ARの成長を追っていきたいと思います。