SoftEther VPNブリッジ接続検証 AVアプリケーション編

横浜の自宅と愛知の実家間を光回線(フレッツ光ネクスト、双方IPoEでIPv6接続)+SoftEther VPN ブリッジ接続した状態でどんなことができてるかアプリケーション面を追加検証しました。

SoftEther VPN[公式]は、以前はUT-VPNと呼ばれていた無償版PacketiXの後継ソフトで、近日正式版がリリースされるPacketiX VPN 4.0の無償バージョンに当たるもののようです。同シリーズは通常のVPNでは遮断されるようなローカルネットワーク専用のプロトコルを通すことができるのが特徴です。難しい書き方をすると、EthernetフレームをTCPパケットで包んで伝送し、相手方でまたEthernetフレームとして復元します。速度的なことを別にすれば、あたかも普通のハブで接続しているかのように振る舞えるVPNということです。なので、通常な家庭内LANでしか使えないDLNAや、iTunesホームシェアリング、TimeMachineバックアップ等がVPN越しで使えてしまいます。

またブリッジ(拠点間)接続というのは、一台一台にSoftEtherクライアントソフトウェアをインストールし、都度コネクションを張らなくても、各拠点に1台ずつ稼働してつながっていれば、LAN内のパケットを自動的に中継してくれるという接続形式です。なので、SoftEtherをインストールできないiPhone/iPad/AppleTVなども含めて2拠点のネットワークを丸ごと直結した感じで使えます。いちいち事前に接続操作をしなくて良いのも楽チン。

■DLNAでレコーダーの番組を視聴

横浜のnasneで録画した番組を、実家からPSVita(torneアプリ)とArrow Tab WiFiの「MyCloudビデオ+」であっさり視聴できました。ただし三倍でしか試していません。またPSVitaでは予約操作やライブ試聴も問題なく使えてます。スキップした時にじゃっかんカクつきますが、少し見ていればすぐに落ち着きます。実用上全く問題ない気がします。

DLNA (DTCP-IP)って往復7ms以内の応答速度が使えないって制約があって、わざわざ遠隔視聴用のそれを緩和したDTCP+なんて規格が出始めているわけですが、実家からSoftether経由でnasneにpingを打つと片道28msとかかかってます。それでも見られちゃうもんなんですねぇ。

2013.04.05追記:

実家のBRAVIAからDS1511+のDLNAサーバーにアクセスして、生tsファイルの再生もできました。一方なぜかnasneからは3倍でも再生できず(一覧は見えるけど再生するとエラー)。またAX1000はアクセス制限設定があり試せず。

■iTunesホームシェアリング

PC/MacのiTunes同士の共有。これも問題ありません(AAC/256kbps)。ただ最初に遠隔マシンから曲リストを取得するのに結構待ち時間が長いので、遠隔側で共有するプレイリストを絞っておくとよりサクサク使えるんじゃないかと思います。感覚的には大きなXMLファイル1つを頑張って転送してる感じ。もっと細切れに少しずつでも反映されるようなプロトコルにすればいいのにとか。

■AppleTV

同様に、横浜機のiTunesライブラリ内の楽曲や720pのMP4動画を再生してみましたが全く問題なし。動画のチャプタースキップも割と一瞬。思わずファイルサーバーの全動画をiTunesにつっこみたくなります。

■TimeMachineバックアップ

これも長期実家滞在中に困っていたところですが、実家のMacBookから自宅のMac mini Serverに全く問題なく毎時間バックアップがとれているようです。

 

当初、「広域イーサネクスト使えばできちゃうんじゃね?」って思ってたことが全部できてます。ファイルコピーのスループットこそ当初の期待ほどは出てないですが、アプリケーション面ではとても便利になりました。拠点間VPNなので、リモートデスクトップやファイル共有なども事前接続操作なしにいつでも使うことができ、まるで自宅にいるかのような感覚で作業でできます。

PacketiXのブリッジ対応版(Small Business Edition)は買うと4,5万するんですが、その無償版が使えて本当に有り難いです。というか年間購読ライセンス1.5万円位なら出してもいい気がしてきました。

唯一の不満はMac版のクライアントがない点でしょうか。サーバー版はあるんですがブリッジ接続はできないみたいです。せめてクライアントがると、ノマドってる時に自宅のiTunesライブラリが聴けたり、TimeMachineからファイル取り出したりできて便利なんですが。VMWareでWindowsが動いてるので、そこにクライアントいれる手はあるんですがちと面倒かなと。しかも仮想WindowsをブリッジしてMacから通信できるようにする場合、うっかり仮想Windowsを(VMWare側の)ブリッジモードで起動してしまったら公衆ネットワークに自宅のブロードキャストパケットが流れるというそら恐ろしいことにw。Mac版クライアントの登場を切に願います(出たら有償版でも買う!)。

オンラインアルバムとしてSonology DS Photo+再評価

16GBモデルのiPhone4Sを使っている妹が、最近動画撮りだしたら容量足りなくなったというので見てみると、動画ではなく写真が8割ほど締めていることが判明。「動画ファイルを入れて見るとかしない限り16GBで余裕」という勧め方をしてしまったんですが、写真でもそんなにいくんですねーサーセン。というか、厳密にはiPhoneでとった写真ではなく、デジカメで撮ってPCに移した写真を同期したものが2006年の分からドッサリ。(なぜかσ(^^)が苦労して)月単位でフォルダ分けしてあるので、同期する期間を減らせば空くよと説明するも、「たまに子供が赤ん坊だった頃のが見たくなる」と抵抗。んなのiPadやAppleTVで見ろよ、といいたいけれど、まぁ出先で人に見せたくなったりとかもするんだろう。

ってことで、サーバー/クラウドに上げておいてアプリからさくさく閲覧できるソリューションを物色。条件としては、

  • iPhoneでもiPadでも使える
  • 同期が簡単
  • 閲覧が簡単(リストではなくタイルビューが欲しい)
  • 速い
  • 安い(できれば無料)
  • それなりに名の知れて信頼感のあるサービス
  • そこから簡単にメールやFBポストができるとなお良し

あたり。クラウドストレージの無料容量を使うとすると、5GBだと足りない。古くからのHotmail使いだったけどSkyDriveは使ってなかったらしく25GB権はもらえなかったっぽい。

でまぁ、中略して結局落ち着いたのがSynology製のNASがもってるPhotoStation(Webアルバム)およびDS Photo+(iOSアプリ)を再活用してみようと。

■Synologyおさらい

Synologyは日本ではマイナーですがQNAPなどの競合にあたる海外NASブランドで、2011年に評価機をいただき本ブログでもレビューをしたことがあります。海外有力NASブランドの特徴として、

  • HDDが別売りで、ベイ数が違うモデルがラインナップされている
  • ファームウェアが共通化されており国産NASより多機能

というのがあります。Synology製品のファームDisk Station Manager(DSM)はもはやOSと呼べるほど多機能で、Ajax駆使しまくりのGUI操作が快適で、つい先日も4.2がリリースされたばかりです。2年も前のモデルなのにいまだに機能やパフォーマンスが向上するメジャーバージョンアップが提供されるなんて、国産製品ではちょっと考えられないですね。

ウチは5ベイのDS1511+ですが、NASだけでなくWebサーバー、メールサーバー、ルーターにまでなります。使ってないですがAsteriskまでパッケージが提供されていますw。もちろん国産NASがもっているスマフォ向けのリモートアクセス機能なども国産NAS以上に充実しています。例えばBUFFALOはリモートアクセス・ファイルブラウザ的なアプリ1つでPDFも写真も動画も一応表示できますってレベルですが、Synologyは目的別にアプリが用意されており、写真専用に配布されているのが表題のDS Photo+[公式]というわけです。

■DS Photo+のメリット

・同期が簡単

DS Photo+ではアルバム=フォルダというシンプルな管理な上、その実体ファイルはSMBやAFPで普通にネットワークドライブ上に見えてるので、特別専用のアプリを使ったりもっさりしたWebインターフェイスから操作をしなくても、普通にフォルダを掘って写真ファイルをコピーするだけで準備完了です。

現状は横浜自宅にあるDS1511+を使うので、まぁ別途コピーが必要ですが、自宅内に設置してあればお使いの写真管理ソフトの保存先をネットワークドライブにしておけばそもそも同期とか不要でしょう。

・閲覧が簡単

リテラシーの低い家族が使うので、標準の「写真」アプリに近い見た目がよかろうと。多くのファイルビューワーだと、左にサムネイル、右にファイル名やメタデータという配置のテーブルビュー(リスト画面)が使われてたりしますが、写真に限って言えばメタデータいらないので、タイル状に写真サムネイルだけが並ぶのがいいだろうと。これはiOS6からコレクションビューという名前でAPIが提供されており、これを使えばこの手のUIは比較的簡単に実装できます。しかしそれ以前だと各社独自に実装していたので、出来にバラツキがあります。

下に、DS Photo+、Web Access i (BUFFALO)、SugarSyncの一覧画面を並べて見ます。

IMG_3124 IMG_3123 IMG_3125
DS Photo+ Web Access i SugarSync

どうです?DS Photo+はタブバーのアイコンと背景色以外は標準写真アプリそっくりです。

BUFFALOは一応サムネイルビューと呼ぶモードがあるものの、サムネイルが小さくて写真の判別が難しい上に、4インチ画面に最適化すらされず放置されています。また先日仕事先のLinkStation用に設定しようとしたところ、LinkStation側のWebAccess機能のバージョンが古すぎて非対応だと切り捨てられていました。アプリのバージョンアップにあわせてファーム側も対応していってくれないんだ、、的な。ちょっと長期的に活用するのは不安が残ります。

SugarSyncは悪くないですがやはり見落としします(まぁ無料5GBじゃ足りないのでどのみち今回の用途にはあわないんですが参考まで)。

・速度も速い

速度もだいぶ違います。検証は愛知の実家で、Synologyは横浜、LinkStationは実家の状態で比較したんですが、明らかに横浜から持って来てるSynologyの方が速い。設定画面にサムネイル品質というのがあるので、おそらくNAS側でサムネイルを事前生成してあるんではないかと。標準アプリで本体内の写真を見るよりは遅いですが、WiFi環境なら実用レベルかと(ちなみに前記事のSoftEther VPN経由)。一方、Web Access iはたぶん写真データを丸ごとダウンロードしてiPhone側でサムネイルを作ってるらしく、まさに写真のように1つ1つが五月雨式に白紙アイコンからサムネイルに置き換わっていく感じです。ファイルブラウザに毛が生えたような作りなので、不可視フォルダである.AppleDoubleとか見えちゃってるのもダサいというか、リテラシー低い家族には使わせたくないですね。

・シェアもできる

実はDSMには単にファイル共有サービスやアプリ向けに写真データを送信するだけでなく、自前のWebアルバムサービスPhotoStationを内蔵しています。つまりPicasa Webアルバムやflickrみたいなブラウザ閲覧できるページを簡単に公開できるわけです。アプリからはそのURLを簡単に取得できるので、写真データ自体はNASにおいたまま、URLをメールとかで人に伝えて見せることもできます。もちろんFacebookやTwitterにシェアすることも可能。

なお、インターネットに公開する場合、80/443番ポートを本機に向けて通過させ、適当なドメイン名をとるなどが必要になります。「http://ホスト名/photo/」にアクセスするとPhotoStationになります。ホスト名だけ(/)だと、5000番ポートにリダイレクトされて管理画面のログイン画面になりますが、そちらのポートを空けないでおけば不正アクセスされることはないでしょう。PhotoStation用に独自ポートを空けることもできるっぽいですがなぜか上手くいきませんでした。自宅内から見られれば良いというのであればこの辺は一切気にする必要なしです。DS Photo+側には単にIPアドレスだけ指定すればOKです(/photo/はつけない)。

・ユーザ単位で作れる!

そしてこれを今までは知らなかった(DSMのどこかの時点で追加された?)んですが、DSMのユーザ毎に独立で公開できることがわかりました。普通は共有フォルダのphotoフォルダ下のフォルダがアルバムとして見える関係なんですが、設定画面で個人公開をオンにすると、SMB(UNC)的には\\IPアドレス\home\photoという個人フォルダ下のphotoフォルダが公開対象になります。PhotoStationのURLは「http://ホスト名/~ユーザ名」、DS Photo+側のサーバー指定は「IPアドレス(ホスト名)/~ユーザ名」で良いようです。これを使えば、元々あったσ(^^)のアルバムとは全く独立に家族の写真をホストすることができます。これも国産NASではあまりない機能なんじゃないでしょうか。

 

とりあえずはインターネット公開はせず、自宅内からの閲覧で使ってもらおうと思います。要望があれば横浜でポートあけてもいいんですが、まぁiPhone4Sの3Gだと実用になるか微妙だし。いずれは実家にももう一台2ベイクラスのを一台設置したいなぁとか思ったり。

実家ルータ替えとSoftEther VPN移行

ようやく仕事が一段落したので実家に帰ってネットワーク環境整備をしてきました。

■ルータをOG400Xa一本に

法人向けひかり電話回線向けにOG400Xaが貸与されたんですが、これだと広域イーサネクストに必要なIPv6パススルーが(ひかり電話と同時に)使えないことがわかり、かなり変則的な形でWR9500Nと二重ルータ状態にしてたんですが、いろいろいじってるウチに、「IPv6パススルー」のチェックボックスをONにできないままでもLAN内マシンからIPv6通信ができてる。ISPがIPoEなせいですかね。てことで、OG400Xaをメインルーターにしても支障なさそうなので構成変更。IPv4(PPPoE)もIPv6(IPoE)もOG一本に。WR9500Nはアクセスポイントモードに変更。

これだとOGのVPNサーバー(PPTP/L2TP/IPSec)機能が使えるのも安心。今まではLAN内のWindows機上の仮想Linux機にPPTPサーバーをさせてたんですが、こわくてWindows機の再起動とかできなかったんですよね。今後はなにかあれば家族にルーターを再起動してもらえば済むので安心です。ただ現状iPhoneでしか試してないですが、L2TPがつながらず、PPTPしか接続に成功していません。

以下スピードテスト。相変わらず夜はフレッツ鷺(詐欺)にクラスチェンジします。Webページの表示とか目に見えて遅いです。

2616387924 2617096216
昼過ぎ頃(NGN網内は731Mbps) 夜9時頃(NGN網内は578Mbps)

 

■広域イーサネクスト->UT-VPN、そしてSoftEther VPNへ

この状態で改めて広域イーサネクストで接続。IPv6パススルーがなくてもつながりました。しかし相変わらずExplorerコピーで1Mbps程度。UT-VPNでも似たり寄ったりだったんですが、先日装いも新たにSoftEther VPNという昔の名前に先祖返りしたような形で新バージョンが公開されました。さっそく双方を入れ替え。おぉ、こちらだと昼過ぎの時間で4~5Mbps出る(IPv6接続)。

広域イーサネクストで期待した速度は全然出ませんが、もともと東西間ではNGN折り返しにならない上に、どう考えてもパンクしているNTT西日本のインターネットゲートウェイを通るんだから、やはりこんなもんなんでしょう。

とりあえずブリッジ接続なのでBonjour系のサービス(iTunesホームシェアリングやAirPlay等)が自宅<->実家間で安定して使えれば良しってとこですかね。広域イーサネクストと違って、DHCPやRA等のパケットを遮断する機能もあり、実家端末に自宅ネットワークのIPアドレスが割り振られたりといった不具合も出てません。

DS1511+のOSをDMS4.2に更新。SMB2.0対応の効果は?

SynologyのNAS、DS1511+のOSというかファームウェアDSMが4.2になりました[公式]。今更かよっ!って感じですがWindowsファイル共有のSMBプロトコルが2.0に対応したのと、AFPでもファイル転送速度が高速化されたのがハイライト。SMB2.0はWindows Vista以降で採用された新しいファイル共有プロトコルで、高速化が目玉。Sambaでは2年近く前にリリースされた3.6から対応しています。

一応更新前後でベンチとっておきました。

image

image

DSM4.0 DSM.4.2

 

んー、2011年にLinuxサーバーにSamba 3.6を変えた時同様、。あんま変わらないですね(シーケンシャルはむしろ落ちてるorz)。後は、高レイテンシ時の速度低下が抑えられるのがSMB2のメリットなんですが、これは実家からVPNでアクセスした時に変わるかなぁ。

AFPの方はMacで手頃なベンチマーク方法がわからなかったので割愛。

HTTP Live Streaming覚え書き

以前、Darwin Streaming Serverを使って動画ファイルをソーシャルビューイングする話を書きましたが、この方式(RTSP)だとiOS端末から視聴できないので、HTTP Live Streamingに挑戦してみました。

HTTP Live StreamingはAppleが推進しているストリーミング配信方式で、近年デ・ファクトになりつつあるようです。主立った特徴として、

  • Apacheなど通常のWebサーバーにファイルを置けば配信できる
  • クライアントの通信帯域に合わせて、複数用意したビットレートのファイルを自動的に使い分けてくれる
  • HTML5のvideoタグを使ってHTMLページ内でインライン再生できる(iPhoneは全画面強制)

等があります。いつもソーシャルビューイングする面子にiPadしか通信端末がない人がいて動画視聴とチャットが同時にできなくて困ってたんですが、HTMLページに動画に加えインラインフレームでチャットサイトを呼び出すことで、1画面内で再生とチャットが同時に実現しました。更にAppleTV等AirPlayクライアントがある環境なら動画再生をそちらに飛ばし、iPad側はチャットに徹するという、疑似バックグラウンド再生までできてしまいます。画面写真を貼りたいところですが諸般の事情により自重。ベランダの植木鉢の成長動画をみんなで愛でている様でもご想像下さいw。

■動画の下ごしらえにはApple製のCUIツールを使用

iOS端末で視聴する場合、動画のコーデックはH.264を使います。ただしコンテナはmp4ではなく.ts(MPEG2 トランスポートストリーム)になります。更にDarwinで使う時のヒントトラックのようなインデックス情報をテキストファイルで用意する必要があります。これを簡単にしてくれるCUIツールがAppleから配布されています。Developer登録してないとダウンロードできないかもなので、未登録な人はFFMPEG等を使う方法をググったりしてみて下さい。今回は、streamingtools_beta157_signed.dmgを入手しインストールしてある状態で操作しています。

目標として、720p、600p、480pという三段階の画質/ビットレートの同内容の動画を用意し、クライアント側の帯域にあわせて自動選択をすることにします。H.264/AACなmp4ファイルを用意し、下記のフォルダ階層下に配置します。

src/
    lo/
        hoge.mp4
    mid/
        hoge.mp4
    hi/
        hoge.mp4

srcフォルダの下に、lo/mid/hiというビットレート別のサブフォルダを作り、それぞれの中にレート違いの動画hoge.mp4を置いてます。CUIツールでパス指定とオプションを駆使すればこの配置である必要もないですが、とりあえずAppleのドキュメントに倣っています。動画ファイルを取り違えないよう注意しましょう。

次に、各動画のコンテナ変換とセグメンティングを行います。

cd src/lo
mediafilesegmenter -s –I hoge.mp4

loの部分をmid、hiに置き換え計3回実行します。-sオプションは.tsファイルを単一ファイルで出力する指定。以前はセグメンテーション毎に通し番号の付いた無数の.tsファイルを生成されてたんですが、これをつければ出力される.tsファイルは1つだけになります。-I(大文字のi)はIフレーム単位のシークが行えるようにするインデックスも合わせて出力します。どちらもiOS端末がiOS5以降でないと対応できないようです。ここまででファイル構成は以下のようになると思います。hoge.mp4は不要になるので消しても構いません。

src/
    lo/
        hoge.mp4
        hoge.plist
        iframe_index.m3u8
        main.ts
        prog_index.m3u8
    mid/
        hoge.mp4
        hoge.plist
        iframe_index.m3u8
        main.ts
        prog_index.m3u8
    hi/
        hoge.mp4
        hoge.plist
        iframe_index.m3u8
        main.ts
        prog_index.m3u8

main.tsがtsコンテナにパッケージングし直された動画ファイルです。エンコードする訳ではないので数秒で終わります。prog_index.m3u8ファイルがHTML5のvideoタグで動画ファイルの代わりに指定するプレイリスト定義ファイルです。

次に、この3パッケージの動画をクライアントが動的に切り替えて使用できる統括プレイリストを作成します。srcフォルダ直下に移動し、

variantplaylistcreator -o all.m3u8 lo/prog_index.m3u8 lo/hoge.plist -iframe-url lo/iframe_index.m3u8 mid/prog_index.m3u8 mid/hoge.plist -iframe-url mid/iframe_index.m3u8 hi/prog_index.m3u8 hi/hoge.plist -iframe-url hi/iframe_index.m3u8

ちと見辛いのでビットレート毎に色分けしてみます。最初に出力ファイル-o all.m3u8を指定した後、prog_index.m3u8と(動画名).plistを指定し、-iframe-urlオプションでiframe_index.m3u8を指定。これをビットレート種類の数繰り返すわけです。Iフレームシークが不要な場合は3つ目は省略できます。これでsrcフォルダの下にall.m3u8が生成されます。

一式をWebサーバーに置き、QuickTime Player等のHTTP Live Streaming対応ソフトでall.m3u8ファイル(ビットレート固定したい場合は各サブフォルダのprog_index.m3u8)を開けば(QuickTime Playerの場合は「ファイル」->「場所を開く…」から)再生できるはずです。ただ、手持ちの環境では、なぜかWindows版のQuickTime PlayerやVLCでは再生できませんでした。せっかくiOSで再生できるようになったのにWindowsな人が排斥されては困ります。ここはまだ調査中です。

■HTMLページに埋め込む

HTMLファイルにこんな感じで書くだけでOKです。

<video src="all.m3u8" controls preload=”auto” width="100%"></video>

controlsは操作UIを表示する(なくても表示される?)、preloadはページを開くと同時に動画を先読みする指定です。その他、autoplayを指定すると自動で再生が始まるはずですがiOS(Safari)の場合は無視されるようです。JavaScriptからの再生制御もiOSでは効きませんでした。これができるとAjaxや時刻指定で一斉に再生開始して同期視聴できたり面白い
んですが…

実際に再生してみると、まずは480pの動画から再生され(多分variantplaylistcreatorで指定した順?)、帯域に余裕があると見るや600pや720pに途切れることなくスイッチしていきます。(事前のエンコは手間ですが)最低通信速度の面子に合わせて全員が画質を落とさなくても済むのは大きいです。

画質落ちてもいいからパケット量を減らしたい、という場合は、all.m3u8の代わりにlo/prog_index.m3u8を指定したHTMLを用意してやればOKです。我が家ではURIのGETパラメーターで指定できるように工夫したりしてます。

また、これもウチではMac/iOSのSafariからしか再生に成功していません。videoタグは使えるはずのChromeやFireFox、果てはWindows版のSafariでNG。.m3u8形式のファイルを動画として認識してくれないってことなんでしょうかね?WindowsやAndroidでもHTTP Live Streaming自体はできそうな記事がちらほら見付かるので、もう少しリサーチしてみたいと思います。

 

複数ビットレートを使い分けようとしない限り、事前の準備はDarwinを使ったRTSP配信とそう手間はかわらず、相手がMacかiOSなら別途ソフトのインストールもいらないで視聴できることがわかりました。難点は同期再生できないこととWindowsからの再生が(今のところ)できない点。このあたりはリサーチ次第で改善できる余地がありそうなので、もう少し研究してみたいと思います。