インターネット上のサーバー(VPS)から家のネットワークをアクセス

#contents

#navi(Pogoplug)

**概要 [#af80bf50]
インターネット上に[[Sakura/VPS]]のような固定IPのsshサーバーを借りている場合、
そこへ向かって ssh コネクションを張ることで、VPS から家の中の NAS や WEBカメラ等にアクセスできるようにしたい。

[[Sakura/VPS/SSH Reverse Tunnel]]で紹介した OpenBlockS を使う方法でも構わないが、
それだけのために OpenBlockS を買うのももったいないので、Pogoplug で実現する方法を紹介する。

ルーターに ssh 接続のための NAT を設定して、自宅のアドレスを DDNS等の仕組みでわかるようにしてから
接続する方法もあるが、自宅からインターネット上の固定アドレスを持ったサーバーへの接続を逆方向に使うほうが、
ルーターを触らないで済むぶん設定が楽である。

**インストール手順 [#mb22d4c9]
+インストールスクリプト &ref(hsj-auto-reconnect.txt); をダウンロード
+otsuka(at mark)example.sakura.ne.jp/10022 の部分を、自分の契約している VPS のホスト名、ユーザー名、sshポート番号に変更する
+インストールスクリプトを Pogopug に送り込んで実行
+/root/.ssh/pogoplug_rsa.pub の公開鍵を VPS の authorized_keys にセットする
+Pogoplug を再起動すれば VPS に対して ssh コネクションを維持してくれる
+VPSを再起動しても、ssh コネクションが維持されることを確認する

**VPS側から自宅のPogoplugにsshで接続 [#e42042a9]
-自宅の Pogoplug からsshコネクションが張れれているかどうかは、
 sudo netstat -np | grep 10022
で調べることができる。(ポート番号を変更している場合は、10022 の部分を変えて実行すること)
-VPS側から自宅の Pogoplug へ ssh で接続するときは、以下の内容を ~/.ssh/config に加えておけば、ssh mypogoplug で接続できる。(自宅の pogoplug /root/.ssh/authorized_keys に VPS で使っている公開鍵をセットしておくと便利)
 Host mypogoplug
   HostName localhost
   Port 30022
   User root
   ForwardX11 no

**VPS側から自宅のNASの共有フォルダにアクセス [#s5f776aa]
『[[VPSのデスクトップで家のNASにアクセスする>Sakura/ssh#kd1539bf]]』でも紹介しているが、Pogoplugの場合は、cronとwgetによる自宅IPアドレス通知は必要ない(netstat -np | grep 10022 コマンドで調べられる)。

+/etc/network/interfaces に以下を加える
 auto lo:0
 iface lo:0 inet static
      address 192.168.11.10
      netmask 255.255.255.255
+$HOME/bin/connect-mypogoplug.sh のような名前で以下のスクリプトを書いて保存(NASのアドレスは 192.168.0.143 としたが、自分の家の環境で調べておいて変更すること)
 #!/bin/bash
 shopt -s huponexit
 sudo -E ssh mypogoplug -F $HOME/.ssh/config -D 1080 -L 192.168.11.10:139:192.168.0.143:139
+connect-mypogoplug.sh を実行、VPSから自宅のPogoplugにsshで接続できることを確認(ログインしたままにすること)
+デスクトップのツールバー:場所:サーバーへ接続~
&ref(connect-server-settings.png);
+ブックマークに NAS on Home ができているので、自宅へのssh接続がしてあれば次回からはブックマークで接続可能
+アクセスが終わったら、ファイル・ブラウザのアイコンから共有フォルダを切断
+自宅へのssh接続をログアウトで切断

**ファイルシステムの書込み禁止 [#lf76986d]
ファイルを不用意に書き換えては困る場合は、ファイルシステムごと書込み禁止にしておけばよい。
/etc/init.d/db に操作例がある。
-書込み禁止設定
 mount / -o remount,ro
-書込み禁止解除
 mount / -o remount,rw,noatime

**再接続 [#zed582a0]
プロバイダのメンテナンス等の理由で自宅のIPアドレスが変わってしまった場合、Pogoplug 側からVPSへ再接続をかけないと通信できない状態になることがある。自宅にいる場合は可能だが会社や出先でこの状態になった場合は、VPS側から遠隔で再接続を行う必要がある。手順が少しややこしいので書いておくことにする。
プロバイダのメンテナンス等の理由で自宅のIPアドレスが変わってしまった場合、Pogoplug 側からVPSへ再接続をかけないと通信できない状態になることがある。自宅にいる場合は可能だが会社や出先でこの状態になった場合は、VPS側から遠隔で再接続を行う必要がある。
もちろんVPSを再起動してしまえば簡単なのだが、なんでもかんでも再起動というのはサーバーではやりたくないので、少しトリッキーだが以下の手順で再接続できる。
-VPSで以下のコマンドを使ってssh接続のプロセス番号を調べる(sshのポート番号を変えているときは 10022 を変更後のポート番号に読み替える)。
 sudo netstat -nap | grep 10022
-リモートのIPアドレスに対して、自宅からの接続かどうかを dig -x コマンドで調べて、右端の ESTABLISHED 2524/sshd: otsuka のように表示されているプロセス番号に対して sudo kill 2524 とすると切断できる。
-1分後に Pogoplug から再接続してくるので、再度 netstat -na | grep 10022 コマンドで確認する

**参考 [#da267527]
#amazon_associate(B006WWG16C)

トップ   差分 バックアップ リロード   一覧 単語検索 最終更新   ヘルプ   最終更新のRSS