is01格安リモートアクセス術: Win7とのVPN+VNC設定
職場のPCで毎日スクリプトを何本か走らせているのだが、土日は休みなのでそれができない。PCを持ち帰ったり、休日出勤したりすることで対応できるが、当然ながらそんなことはやりたくない。
そんなとき、追加費用をさほどかけることなく、VPNを使ったリモートアクセスにより、自宅にいながら職場のPCを操作できることを知る。
と言うことで、やや見切り発車的であったけれども、buffaloのWHR-G301Nを新規購入した。PPTPサーバとWOL(Wake on LAN)に対応しており、しかも3,000円と安い。VPN環境を格安で構築するのに最適のルーターだ。
だが、ここからが長かった。ネットワークに関する知識も経験も圧倒的に不足している私にとって、越えなければならない壁は高すぎた。試行錯誤を繰り返しては、何度も挫折した。それゆえ、is01からVPN越しで職場のPCを操作できたときは、物凄く嬉しかった。
更に微調整をすることにより、is01を使って安全・格安・快適に、Win7にリモートアクセスできるようになった。様々なリソースを組み合わせていることもあり、時間が経過すれば忘れてしまうこと必須なので備忘的にメモを残しておくにする。
用意するもの [サーバ側] ※接続される側
- Windows7パソコン(※WOL対応。OSは「Windows 7 Home Premium」でOK)
- ルーター(※PPTPサーバ&WOL対応のもの。実際に使ったのは WHR-G301N http://buffalo.jp/products/catalog/network/whr-g301n/ )
- ADSL回線(※実際に使ったのは ADSL-direct II http://campaign.live.jp/eaccess/top/ )
- DDNS(※無料のダイナミックDNS(DDNS)サービス。MyDNS.JP http://www.mydns.jp/ など)
- Android端末(※実際に使ったのは HT-03A http://www.nttdocomo.co.jp/support/utilization/product/ht03a/ )
- k9 mail(※無料のメールアプリ。android)
- UltraVNC(※無料のVNCソフト。Win7。バージョンに注意)
用意するもの [クライアント側] ※接続する側
- ルーター(※VPNパススルー対応のもの。実際に使ったのは CG-WLR300N http://corega.jp/prod/wlr300n/ )
- ADSL回線
- Android端末(※is01@froyo)
- QuickVPN(※無料のVPNアプリ。android)
- PocketCloud(※無料のVNCアプリ。android)
サーバ側 (Win7PC) で行なうこと
- Win7PCを WOL(Wake on LAN) に対応させる。 http://www.atmarkit.co.jp/fwin2k/win2ktips/715wol/wol.html
- ルーターにランダムかつ長文のパスワードを付け、定期的に変更する。
- ルーターをPPTPサーバとして設定する。ユーザーのパスワードはランダムかつ長文のものとし、定期的に変更する。
- ダイナミックDNS(DDNS)サービスを利用して、サーバ側の変動するIPアドレスを特定ドメインと紐付ける。
- Win7PCと同一ネットワーク上のandroid端末 (HT-03A) から、DDNSが指定したメールアドレスを定期的に受信させることで、変動するIPアドレスをDDNSに通知する。android端末を使うのは節電&耐久性が目的で、電源はWin7PCのUSBから取る。
- UltraVNCをWin7PCにインストールする。バージョンが新しいと、androidからVNC接続できないケースがあるので注意。
- Win7PCのIME設定を変更し、『alt+enter』や『shift+enter』などで半角全角を切り替えできるようにする。これをするとしないとでは、is01@froyoの使い勝手が大きく変わってくる。
クライアント側 (is01) で行なうこと
- ルーターでVPNパススルーを有効化する。
- is01を使う際、パスワード入力を必須とする。
- is01のrootをとってfroyo化する。(1.6のままだとQuickVPNが使えないし、VNCでカーソルキーが使えないので不便)
- QuickVPNをis01にインストールする。VPN時にユーザー名とパスワードが保存できるので便利。
- PocketCloudをis01にインストールする。とても使いやすいVNCアプリ。IPアドレスは、グローバルではなく、プライベートなものにする必要があるみたい。
パスワードについては、『ランダム、可能な限り長いもの、定期的に更新、手軽に扱える』ことを念頭に、対策をかなり考えた。PHPでランダムかつ長文のパスワードを自動作成するスクリプトを用意し、簡単に更新できるようにしている。また、種となる文字列についても、分かりづらい方法で決めている。
少し前まではbuffaloのルーターが標準で対応する無料のDDNSが存在した。だが、現在は有料のDDNSしかない。この事実を知ったのはbuffaloのルーターの購入後。VPNをどれだけ利用するか読めない中、有料サービスを使うのは気が引ける。
仕方ないので、無料DDNSと消費電力の少ないandroid端末(+root化+ダウンクロック)を組み合わせることで代替することにした。ここ最近、目覚まし時計としてしか使われていなかったHT-03Aだが、上述の通り今はDDNSへIPアドレスを定期的に伝えるという重要な役割を果たすことになった。
このHT-03Aはandroidの初期製品なので結構癖が強く、例えばWifiのセキュリティ周りで苦労させられた。ちなみに、HT-03Aだけはセキュリティを甘くするかわりに、スタンドアローンで繋ぐように、ルーターの設定をしている。
VPN&VNC構築について、より詳しいメモを残したいのだが、現在そこまでの気力が沸いてこない。今後詳細メモを作成するかどうかは、かなり微妙なところだが、忘れっぽい自分のためにもやりたいのだが。