2016年1月31日日曜日

固定のグローバルIPが無くても外部から自宅サーバーにログインする.

デスクトップPCを Wake on LANで起動できるようにしたので,外部から自宅サーバーに接続すれば,そこからデスクトップPCの電源を付けられるようになった.


しかし,残念ながら固定のグローバルIPを持っていない


寮に住んでいるため,会社が契約しているプロバイダを使用する以外に選択肢がなく,今後も固定IPを手に入れることはしばらくできそうにない.


WiMaxのグローバルIPアドレスオプションや,インターリンクLTE SIMなどの選択肢も検討してみたが,やりたいことに対してコストがかかりすぎるし,なんとなくスマートじゃない.


しかし,調べてみるとこれにピッタリの方法があったので備忘録として残しておく.





方法としてはSSHポートフォーディングを利用することで,俗に言うSSHでトンネルを掘ること.これだけで外部のネットワークから固定IPを持っていない自宅サーバーにログインすることが可能になる.


必要なのは,外部からアクセス可能なサーバーがひとつだけ.(自宅サーバーとは別)


やり方は簡単で,このサーバーを仮に,「外部サーバー」と名付けるならば,「自宅サーバー」から「外部サーバー」にSSHでログインしっぱなしにしておくだけ.


あとは,「外部サーバー」を一旦経由することで「自宅サーバー」にいつでも接続できるようになる.





詳しいやり方を下に記す.


準備としてまず,「自宅サーバー」から「外部サーバー」へログインしておく.
$ ssh user@123.123.123.123 -R 9022:192.168.100.1:22


その際,Rオプションで

「任意の(空き)ポート番号」:「自宅サーバーのIP」:「外部サーバーのSSHポート番号(通常は22)」

のようなオプションを付けておく.そして,外部から接続するときは


初めに,外部サーバーに普通にログイン.
$ ssh user@123.123.123.123

続いて,外部サーバーから自宅サーバーにログインする.
$ ssh user@localhost -p 9022


このとき接続先は,localhost でポート番号は初めに Rオプション で指定した番号を指定する.たったこれだけで簡単に自宅サーバーにログインできるようになるが,問題がひとつあり,それは初めに準備した「自宅サーバー」から「外部サーバー」への接続が何かの拍子に切れてしまうこと可能性があることだ.


「自宅サーバー」,「外部サーバー」がどんなに安定動作していても24時間常に接続し続けるのは難しいし,長時間操作のないクライアントを自動でログアウトするような設定がなされている場合もある.


これを解消するために,「自宅サーバー」から「外部サーバー」への接続をsshコマンドではなく,autosshコマンドに置き換える.
$ autossh user@123.123.123.123 -R 9022:192.168.100.1:22


autosshコマンドはSSH接続が切れた際に再接続を試みるコマンドで,万が一の際にも,「自宅サーバー」と「外部サーバー」の接続を保ち続けることができるようになる.


あとは「外部サーバー」をどこから調達してくるかという問題.


さくらVPS などが安くて有名ですが,私が所属していた大学の研究室は卒業生でもアクセスできるようサーバーを立てているのでそこを経由させることで無料で実現できました.


やはり持つべきものは,サーバーを立てている研究室のアカウントですね.

0 件のコメント:

コメントを投稿