Raspberry Pi + VPS (ハードPogoplugの代替考察)

Pogoplorer へ戻る

まえがき

Pogoplug を提供するクラウドエンジンズも Pogoplug Cloud へ舵を切り始め、ハードPogoが継続されるのかあやすぃので、代替環境を模索してみた

条件など

構成

構成に至るまで

まずは既成品

Pogoplorerで神経が衰弱(回復の見込みナシ)していることもあり、とりあえず出来合いのNASを検討
いまどきなので、宅外から見られる機能があるNASも珍しくないが、UPnP必須なの(細かく調べないと記載されてない)多し

そんな中、元々NAT超えなんかあたりまえの BitTorrent Sync が Netgear の NASで使えるようになったとかいう話
でも、なんか引っかかってた事が... BitTorrent Sync って、"Sync" なんですな
ブラウザからサインインしてちょとファイルを取ってくるとか、FTPみたいに純粋なアップダウン的じゃなくて... PCは問答無用で同期とか

お米と一緒に買ったラズベリーパイ

Amazonで、お米買うついでに買った、Raspberry Pi(RPi)
次期バージョン(B+じゃなくて)も噂される中、今更購入したのだが、思った通り~楽しい~楽しすぎる (RPiのハウジングが欲しい)
とりあえず、省電力、低コストで、確たる使い道も決まってないので、これを起用

RPiの情報は、豊富にあるため以降の設定解説は省略(爆)
質問のある方は、フォームからどうぞ → 都度載せることになるかと思います

SambaでNAS化 + BitTorrent Sync

RPiの初期設定を済ませて、Samba導入でNAS化
BitTorrent Sync も導入(NAT超えも問題ない)

先ほどの "Sync" が引っかかる所
外部のスマートフォンなどから利用する場合、大量の蓄積フォルダは、読み込み専用で必要な物だけ取得、アップロード用フォルダは、読み書き設定で同期させる という運用ならOKかも

汎用プロトコルを模索

ひとまず NAT超えはおいといて、

SFTP: 元々SSHが起動しているので、直ぐ使えるが初期ディレクトリ = home ディレクトリ。
アカウント権限の元、色んな所へ移動できてしまいます。さらに、ルートを指定ディレクトリへ移動させるには、homeディレクトリの移動など面倒
ユーザーが一人なら、これが手っ取り早い

FTPS(vsftpd): apt-get でインストールされる 2.3.5 には、ルート指定したディレクトリの属性がリードオンリーじゃないとダメとか、不思議な仕様あり

WebDAV: Apache2 に標準搭載なので、設定を有効にして直ぐに使用可能 → とりあえずこれにしておく
(CPU温度監視のため既に Apache 稼働中だった)

ここまでの状況

ポートフォワーディングできる環境だと、Samba(LAN) + WebDAV(WAN)
ポートフォワーディングできない環境だと、Samba(LAN) + BitTorrent Sync(WAN)
が利用可能

汎用プロトコルのNAT超え

ポートフォワーディングNG な環境で、一般的なNAT超え(Udpホールパンチング等を使わない)を考えると、どうしてもグローバルIPを持った中継サーバが必要になります (条件の低コストに反してしまいますが..)

今回は、グローバルIPを持つVPS(仮想プライベートサーバ)で、VPN(仮想プライベートネットワーク)サーバを動かし、 Raspberry Pi をクライアントとして接続、特定のポートを VPSからトンネルして、Raspberry Pi の WebDAVへ繋ぎます

Pogoplug でいう「クラウドエンジンズの中継サーバ」の役割ですな (内容は全く違うけど)
VPSは 500円/月くらいから借りられます (その金額なら Pogoplug Cloud が契約できたりするんだけど、あれはあれで用途が別)

ということで、とりあえず簡単に使える PPTP(pptpd)サーバをVPS(CentOS 6.5 64bit)で、PPTPクライアント(pptp-linux)を Raspberry Pi で動かします
(VPNは、OpenVPN 他、環境にあったものを選択すればよいです)
今回 MTUは、どちら側も 1400 に設定. 1200~1500あたりを探ったが、1400が最も速くて安定していた

VPSで受けたポートを、VPN越しの RPiへ渡すには、VPS側の iptables は下記の様な記述になります
VPN側アドレス VPS:192.168.2.1, RPi:192.168.2.100 で TCP 443 を渡す時↓
*nat
-A PREROUTING -m tcp -p tcp --dst VPSのグローバルIP --dport 443 -j DNAT --to-destination 192.168.2.100:443
-A POSTROUTING -m tcp -p tcp --dst 192.168.2.100 --dport 443 -j SNAT --to-source 192.168.2.1
RPi側でサービスを起動させて、必要なポートをつないでやれば、VPS:Port = RPi:Port みたいな扱いで利用できるワケです
※アンダーラインの引いてある 443 を好きなポートへ変更すれば、RPi側のポートを変更することなく、WAN側の接続先ポートを変更できます
【注意】apache のログには、192.168.2.1 から接続されているように記載されるので、iptable 側もログをとっておくべきです

速度は、RPi→VPSで 8Mbps程度、RPi→VPS→クライアントでも 同程度なので RPiの能力かなぁと (暗号化のビット数を落としても、変化なしでした)

当たり前ですが VPSには、クライアントがやりとりしたデータの2倍は転送量が発生します
クラウドエンジンの中間サーバもこの辺りがネックで、転送量が片側だけで済む Pogoplug Cloud へ かじを切っているのでしょう

動作状況

心配した RPiの耐久性は、稼働(2014/8/9頃)から約1ヶ月後にあった VPSのメンテナンスまで連続稼働
VPN接続のタイムアウト値が短かったので修正して、2ヶ月以上安定した状況

PRiの電源アダプタは、5V-2A(Nexus7 2012 に付属していたもの)を使用. 発熱はほんのり暖かい程度
構成途中にポータブルな 1Aタイプを利用していたが、かなり発熱していたので、容量に余裕のあるものを使いましょう

無駄骨1

RPi の Apache へ Pydio(ajaxplorer)を置いてみる
動作は、かなりもっさり。緊急用としてはありかも
LANからも、体感できるほどの速度向上は無かった

無駄骨2

VPS の Pydio(ajaxplorer)へリポジトリから VPN越しに PRi の sambaをマウントしてみた
ディレクトリ表示はフツーだが、ダウンロード開始までが、ひじょーーに時間がかかる!!

公式フォーラムによると Pydio の samba マウントは、一旦 Pydioが取得してからダウンロード開始となるので、 linux ならどっかにマウントして、それをリポジトリへ登録しろとのこと

純粋なわたくしは、cifs-utils をインストールして samba を VPN越しにマウントしようとするものの「Unable to apply new capability set.」
OpenVZ は CIFS をマウントできないのでした...

検討課題(そのうちやるかも)

RPi側で作成した「オレオレ証明書」が、Windows Explorer WebDAV で弾かれる
RPiでVPSドメイン名の証明書を作成したが、そもそも接続先と応答元が違うので、この辺りにも問題あるかも
その辺りを回避できる、適当な WebDAVクライアントを使ってます(各OSにあり)

暗号化したトンネルを、SSLが流れるのは、何か無駄なような...
(済)PPTPで暗号なしだと、速度UPするのか?(認証まで暗号化されないのは困るけど)
(済)VPS側で、Apache(WebDAV)を稼働させ、トンネル越しにNASをマウントすると、Raspberry Pi の負担が減るかも

RPiにGBE(ギガビットイーサ)が欲しい・特にLANでの速度
好きなNASを買ってきて、USBじゃなくてNASのSambaをRPiへマウントすりゃいいよーな気もする・RPiは外部接続ゲートウェイ

質問など

無いと思いますが フォームからご連絡下さい