インターネット上のサーバー(VPS)から家のネットワークをアクセス
概要 †
インターネット上にSakura/VPSのような固定IPのsshサーバーを借りている場合、 そこへ向かって ssh コネクションを張ることで、VPS から家の中の NAS や WEBカメラ等にアクセスできるようにしたい。
Sakura/VPS/SSH Reverse Tunnelで紹介した OpenBlockS を使う方法でも構わないが、 それだけのために OpenBlockS を買うのももったいないので、Pogoplug で実現する方法を紹介する。
ルーターに ssh 接続のための NAT を設定して、自宅のアドレスを DDNS等の仕組みでわかるようにしてから 接続する方法もあるが、自宅からインターネット上の固定アドレスを持ったサーバーへの接続を逆方向に使うほうが、 ルーターを触らないで済むぶん設定が楽である。
インストール手順 †
- インストールスクリプト 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で接続 †
- 自宅の 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の共有フォルダにアクセス †
『VPSのデスクトップで家のNASにアクセスする』でも紹介しているが、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で接続できることを確認(ログインしたままにすること)
- デスクトップのツールバー:場所:サーバーへ接続
- ブックマークに NAS on Home ができているので、自宅へのssh接続がしてあれば次回からはブックマークで接続可能
- アクセスが終わったら、ファイル・ブラウザのアイコンから共有フォルダを切断
- 自宅へのssh接続をログアウトで切断
ファイルシステムの書込み禁止 †
ファイルを不用意に書き換えては困る場合は、ファイルシステムごと書込み禁止にしておけばよい。 /etc/init.d/db に操作例がある。
- 書込み禁止設定
mount / -o remount,ro
- 書込み禁止解除
mount / -o remount,rw,noatime
再接続 †
プロバイダのメンテナンス等の理由で自宅の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 コマンドで確認する
参考 †
#amazon_associate(B006WWG16C)