SSH のポート転送を用いて Samba にアクセスする
ちょっと自宅のSambaサーバーの調子が悪かったのでググっていたら、偶然、SMB over SSHなる技術(というかテクニック)を発見しました。読んで字のごとく、Windowsのファイル共有プロトコルとSSHのポートフォワーディングで転送して、WAN越しで使ってしまおうというものです。
帰省中にファイル共有、特にメディアサーバーの動画を視聴したいということがしばしばなんですが、
- PacketiXはなぜかブツブツ切れる(実家から使った場合のみ?)
- OpenVPNだと遅い
- PPTPはCentOSにしてからつながらなくなった
という状態。なんか良いVPNの代替案がないかなぁ、と思っていたところなんですが、SMBが直接WAN経由で使えるってのもわかりやすくていいなぁ、と。もしかしてVPNのオーバーヘッドがない分、スループットも期待できるかな、とか(それでもSSHの暗号化はあるんですが)。
設定も簡単そうだったので冒頭のリンク先を参考に試してみました。
サーバー側は特に設定の必要無し。
クライアント側にはループバックの仮想NICを作成し、適当なIPアドレスを振ります。ポートは137で固定なので、マウントしたいファイルサーバーの数だけ仮想NICを作るのがちと面倒だし、美しくない感じ。
SSHクライアントはいつも使っているputtyで。トンネル設定を追加した状態で普通にログイン。プロンプトが出たままで放置しておけばOK。1つの設定に複数のトンネルを書き込めるので、SSHサーバーが1つであれば、ファイルサーバーが複数であってもセッションは1つ張ればOKです。
とりあえず快活CLUBのマシンから接続を確認。NICのインストールは再起動を必要としないので、こういうネットカフェとかでも利用できますね。一応、DivXファイルを再生できることは確認。ビットレート高めのWMVはカクカクでした。どこがネックになってるんだろ?
VPNに比べた時のデメリットは、IPアドレスが変わること。実家マシン用はHOSTSファイルで上手いこと置き換えれば良いですが、LAN内でも使うノートPCなんかは実体は同じサーバーなのに、LAN内と外からとでIPアドレスがかわるのは気持ち悪いですよね。オフラインフォルダなんかとも相性がよくないはず。
まぁ、今度帰省した時に実用的なスループットが得られたら、実家からのストリーミング用に使おうかってとこですかね。
2007.05.05追記
逆にメリットとしては、ファイルサーバー側のアクセス権制御が活かしやすいってとこですかね。VPNだと丸ごとLANを公開することになってしまうんですが、こっちなら特定サーバーの特定共有だけ見せる、ということがやりやすい。
2007.05.12追記
どうもVistaではこの方法が使えないようです。Vistaの場合、ループバックデバイス側もローカルのSMBクライアントがポートを占有してしまうみたいで。実家にバックアップ用のLinuxサーバーを立てたので、そいつにポートフォワードをやらせるしかないみたいです。まぁ、その方が毎回セッションはらなくていいから楽なんですけどね。
実家からもDivXのストリーミング程度は使えました。常時SSH転送してるマシンが立ってるってことは、LinkTheaterみたいなのも使えるってことかも。
「マウントしたいファイルサーバーの数だけ仮想NICを作る」ってのは勘違いでした。プロパティの詳細設定から1つの仮想NICに複数のIPアドレスを持たせられました。