2016年12月1日木曜日

RaspberryPi + Weaved を使って Samba を over SSH で接続してみる

概要

前回 RaspberryPi で Samba を構築しました
同一ネットワーク内に Mac から接続できることは確認しましたが、グローバルネットワークからも接続したいケースがあると思います
そんな場合に Samba over SSH を Weaved (改め remot3.it を使って実現できたので紹介したいと思います

環境

  • RaspberryPi Zero (Jessie 8.0)
  • Samba 4.2.10
  • weavedconnected 1.3-07m
  • Mac OS X 10.12.1 (動作確認)

weavedconnected のインストールと設定

過去 に紹介したのでそちらを参考に設定してください
もちろん remot3.it のアカウントも必要になります

Samba サーバの構築

こちらも過去に紹介した記事を参考に設定してください
USB の外付け HDD を使って Samba サーバを使って構築していますが、とりあえず Samba が動作すれば OK なのでローカルストレージでも OK です

remot3.it から over SSH で接続してみる

ここからが本題です
over SSH とは簡単にいうと SSH 接続することで、SSH 以外のポートにアクセスできるようにする技術です
サーバからするとアクセスさせるポートの解放が SSH だけで済みます
クライアントからすると少々手間な作業が必要ですが、SSH できればどのポートにもアクセスできます

ループバックアドレスを追加する

まず、クライアント側のループバックアドレス用のインタフェースに仮想の IP を追加します
この IP は over SSH して使用する Samba のポートをバインドするために利用します

今回は Mac で行うので以下のコマンドを実行してください

sudo ifconfig lo0 alias 192.168.100.10 255.255.255.0

192.168.100.10 を仮想ループバックアドレスに使用します
ネットマスクは適当で良いですが今回は /24 としています
192.168.100.10 のアドレスはローカルネットワーク内で他のサーバが利用していないアドレスを指定してください

転送する

まず、remot3.it で SSH 用のコマンドを発行してください
今回は以下のコマンド (アドレスとポート) が発行されたとします

ssh -l pi proxy99.test.net -p 333333

ここに SSH するときに同時に Samba のポートを先ほどの仮想ループバックアドレスに転送するようにします

ssh -f -N -L 192.168.100.10:7139:192.168.179.12:139 pi@proxy99.test.net -p 333333

「-f」でバックグラウンド実行にし「-N」でポート転送であることを明記し「-L」でバインドするアドレスとポートを指定します
over SSH するときのキマリ文句みたいな感じなのでそのまま使ってください

-L の後にローカルとサーバの転送するアドレスとポートを指定します
ローカル側は

  • 192.168.100.10:7139

に転送します
この 7139 の部分は 1024 のポートでまだ使われていないポートであればどこでも OK です

でサーバ側の

  • 192.168.179.12:139

はサーバのローカルアドレスと Samba で使用しているポートの 1 つの 139 を指定します
Samba は他に 137, 138 (UDP) , 445 (TCP) というポートも使用していますが、over SSH の場合 139 だけ転送すればとりあえず見えるようになります
このローカルアドレスの部分はサーバによって異なるので各自の環境の合わせて変更してください

コマンドを実行するといつもの remot3.it の SSH ログインのようにログインプロンプトが出るのでログインしましょう
エラーがでなければ転送成功です
試しにローカルにバインドしたポートを見てみると LISTEN していることがわかります

netstat -an | grep 7139

tcp4       0      0  192.168.100.10.7139    *.*                    LISTEN

動作確認

では、これで smb マウントできるか確認してみます
Finder から cmd+k で「サーバへ接続」のダイアログを表示しましょう
over SSH の場合接続するアドレスはバインドしたローカルの仮想ループバックアドレスとポートになります
over_ssh_samba_onweaved_input_address.png

Samba 用のユーザ名とパスワード入力します
over_ssh_samba_onweaved_input_pass.png

で問題なく認証できれば Samba の内容が見えるようになると思います
netstat の結果もESTABLISHED に変わっている思います

over SSH で接続しているのでローカルで接続しているときよりも動作がかなり重いです
新規でフォルダ等を作ってみるとわかりますが、反映までに約 10 秒くらいかかる感じです (ネットワークの環境にもよると思います)

メリット

一応 over SSH するときのメリットも記載しておきます

  • サーバ側でオープンする FW のポートは SSH だけで良い
  • どんなネットワーク環境からでも Samba にアクセスすることができる

デメリットとして

  • 重い
  • remot3.it の場合一定期間で発行したアドレスとポートがなくなるので、再度接続しなければならない
  • ローカルにバインド用のアドレスを作成しなければならない

あたりかと思います
下は今回 remot3.it を使ったので自作サーバなど別の環境ということであれば解決できる問題ではあります
ただ、セキュリティ的に SSH のポートをフル解放しておくのは微妙なのでクライアント側が固定 IP であればアクセス元 IP を指定したほうが良いです
逆に固定 IP でない場合には remot3.it のほうが安全なのかもしれません

最後に

over SSH で Samba にアクセスしてみました
一時的に Samba にアクセスしたい場合には便利かなと思いますが常時運用するにはちょっと向いていない方法かなと思います

当たり前ですが、ローカルでアクセスできる状況であれば基本はローカルアクセスで smb マウントしたほうが良いと思います

ちなみにループバックアドレスを削除するコマンドは以下の通りです

  • sudo ifconfig lo0 down
  • sudo ifconfig lo0 127.0.0.1

一旦 1 つにしてから再度 127 のループバックアドレスを設定します
仮想アドレスのラベルをちゃんと指定すれば一発で消せると思います

0 件のコメント:

コメントを投稿