リモートアクセスにFONを活用
2009.12.06 Sunday 20:15
自分が普段使っているPCはデスクトップなので当然外には持ち出せない.しかし,実家や友人宅などで自分のことをやりたいことがある.やっぱりノートPC買うしかないかな,とか思っていたのだが,ふと買ったきりで使っていなかったFONを活用してリモートアクセスができるようにすればよいのではと考えて設定してみた.
リモートアクセスとは全く関係なさそうに思えるかもしれないが,
* 電気がもったいなのでPCの電源を入れっぱなしにしたくない
* パスワードの甘いリモートデスクトップに直接外から入れると,簡単にクラックされるらしい
という2つをFONを使って解決しようというのが今回の話.
リモートアクセスとは全く関係なさそうに思えるかもしれないが,
* 電気がもったいなのでPCの電源を入れっぱなしにしたくない
* パスワードの甘いリモートデスクトップに直接外から入れると,簡単にクラックされるらしい
という2つをFONを使って解決しようというのが今回の話.
準備するもの
ハードウェア
Fonera (今回はFonera+を使用)
Wake on LANに対応したパソコン (Windowsがインストールされていると仮定)
ソフトウェア
DD-WRT
putty (オリジナルはこちら putty)
TFTPD (TFTP daemon)
puttyを入れる
上のURLからputtyとTFTPDを入手してインストール & 設定する.本家puttyからの取得は個別ダウンロードとなっているが,必要なのはputtyとpuTTYgenの2つ.それとコマンドラインオプションの説明を読むためにドキュメントも取得しておいた方がよい.(ごったに版にはすべて含まれている)
DD-WRTのページからFonera用のファームウェアをダウンロードする.
ページ上部中央の「Support」,及びページ右側のファームウェアバージョンの下にある「Router Database」を開き,"FON" をキーワードに検索するといくつか型番が出てくるので,FON本体のシールのものを選択.La fonera+の場合は 2201となる.
バージョンがいくつか選べるが,最新のベータ版(v2.4preSP2 Build 13064)を選択した.そして,"linux.bin"をダウンロードする.fonera-firmware.binはアップグレード用のようなので,ここでは使用しない.
(ここまで30分程度かな?)
FONのファームウェア入れ替え
以下のページを参考にファームウェアを入れ替える
FON2201(La Fonera+)にDD-WRTを導入 | RANDOM.SOFT
MacFeeling Blog La Fonera+をDD-WRT化
書いてあるとおりにやれば良いのだが,いくつか注意点.
1. RedbootのIPアドレスは192.168.1.1 なので,pingを使って起動直後の検出を行っている.自分の場合LAN I/Fがもう1つ空いていたので,そこに192.168.1.254を設定した上でクロスケーブルでFoneraと接続したのだが,Yahoo BBのルータが192.168.1.1に対してpingを返してしまうので,起動直後の判定ができなかった.何回かトライして結局できたが初めからモデムとの接続を切って行う方が良い.
画面上で選択していたらたぶんタイミングを逃してしまうので,コマンドプロンプトを開いてputtyのコマンドを連打する.
putty -telnet -P 9000 192.168.1.1
2.上のページには「LANケーブルで直接つないで」という表現があるが,当然ながら直結にはクロスケーブルが必要.ストレートケーブルの場合はケーブル2本とハブが必要.
3.最初TeraTermを使ったが,メッセージが見えてもその後Ctrl+Cを押しても先に進まなかった.Puttyを使ったらRedboot>のプロンプトが出たので,TeraTermではない方がよい.
フラッシュメモリの書き込みは確かに30分程度かかるので,放置して待つ.
(これが完了するのに1時間弱)
ファームの書き込みを追えて再起動したら,http://192.168.1.1 に接続して各種設定を行う.
基本設定
最初にユーザ名とパスワードの設定を促される.ここで入れたパスワードはWebアクセス用のパスワードであると同時に,コンソールからtelnetでアクセスする場合のrootアカウントのパスワードとなる.
Setup >> Basic Setup
今回はルータとしては使用しないので,WAN Connection Type = Disabled
Router IPに,現在のLANと同じサブネットに属するIPを割り付ける.
Subnetは適切に,Gateway/Local DNSはルータのIPアドレスを入れる.
Network Address Server Settings (DHCP) : Disabled
Time Settings: Enable
TimeZone: UTC+9:00
DST: none
Server IP/Name: ntp.mfeed.ad.jp
ここまで入れたら Apply Settingを押す.設定中画面が出た後に元の画面に戻るが,IPアドレスが変更されているので続行する前に接続を本来の位置に変更してURLも新IPアドレスへアクセスする必要がある.
Setup >> DDNS
外部からここへホスト名でアクセスできるようにするために,Dynamic DNSに登録する.あらかじめDynamic DNSサービスへ登録し,その情報をこのページに設定する.DDNSは定期的に登録更新を行わないと取り消されてしまうので,そうならないようにするためにも登録しておく.
自分は,昔使用していた No-ip.comに登録した.メールアドレスと指定された情報を入れて登録を行うと,メールが届くので,そのメールのURLをクリックしてactivationを行う.その後,http://www.no-ip.com の右上に登録したメールアドレスとパスワードを入れてログインする.
注意: このアカウントをDDNSに設定すると,テキストのままFON内部の /tmp/ddns/inadyn.conf に保存されるので,普段使うパスワードの使用は避けた方がよい.
そして,中央右側にある Add a Host より新しいホスト名を登録する.
登録が終わったらこのページに戻り,以下のように登録情報を設定する.
DDNS Service: no-ip.com
User Name: no-ip.comのログインに使うメールアドレス
Password: no-ip.comのパスワード
Host Name: 登録したホスト名
設定が終わったら,Saveする.
Wireless >> Basic Settings
Regulatory Domain: JAPAN
Wireless Mode: AP (Access pointとして使用する場合)
Wireless Network Mode: 無線は現時点では使用しないので Disbled とした.
これで電波が出なくなる.
最後に Save を押して保存する.
Wireless >> Wireless Security
無線を使わなければ関係ないが,セキュリティがDisabledになっているのはよろしくないので,WPA2を設定する.
Security Mode: WPA2 Personal Mixed
WPA Algorithms: TKIP+AES
WPA Shared Key: (好きな文字列)
設定が終わったら,Saveする.
Services >> Services
ここでSSHを有効にする.パスワード認証ではクラックされるおそれがあるので,公開鍵認証のみアクセス可能とする.
下の方へスクロールして,Secure Shellのを
SSHd: Enable
SSH TCP Forwarding: Enable
Password Login: Disable
Port: 22
Authorized Keys: ここには次の手順で生成した公開鍵をPasteする.
1. puTTYgen[PuTTY鍵作成]を実行する.
2. 「生成」を押して鍵を生成する
3. 「OpenSSH用のauthorized keysにペーストするための公開鍵」エリアをコピーして,ここに貼り付ける.
4. 秘密鍵の方は「生成した鍵の保存」で名前をつけて保存する.
5. また,OpenSSHからのアクセス用として,メニューの「変換」→「OpenSSH形式へエクスポート」を使ってid_rsa等の名前で保存する.
設定が終わったら,Saveする.
Administration >> WOL
ここがWake on LANの設定であるが,基本的にはコマンドラインからWake on LANパケットを送出できるので,この設定は不要である.WOL AddressesにPCのアドレスを設定しておくことでこのページからパケットを出せるようになるので,覚書として登録しておくのも良い.
自分のPCがWake on LANで起動できるかを確認するために,"Automatic Wake-On-LAN" 機能を使うことができる.
Automatic Wake-On-LANは以下のように設定する.
WOL daemon: Enable
Interval (in seconds): テストなので60sec (最小間隔は15秒)
Host Name: ブロードキャストアドレスを入れる (255.255.255.255)
MAC Address(es): 起動したいPCのMACアドレスを xx:xx:xx:xx:xx:xx の形式で記入する.
Apply Settingsを押すと定期的にWOLパケットが出るようになる.テストが上手く行ったら,WOL daemon: Disableに戻す.
Administration >> Commands
ここで起動スクリプトやカスタムコマンドを登録できる.PCを起動する時にいちいちIPアドレスやMACを入れるのは面倒くさいので,以下のようなスクリプトをカスタムスクリプトとして登録すると良い.コマンドをテキストエリアに入れて,Save Custom Scriptを押すと保存できる.保存したコマンドは/tmp/custom.shとして実行できる.
wol -i ブロードキャストアドレス PCのMACアドレス
(MACアドレスはxx:xx:xx:xx:xx:xxの形式)
ここまで設定したら,念のためにFONを再起動して設定が保存されていることを確認すると良い.
ルータの設定
ルータのPort Forwardを設定する.TCPの外部ポートxxxxをFONのSSHポートに転送するように設定する.設定後,ルータの再起動が必要になることがある.
PCの設定
説明が前後するが,PCがWake on LANで起動できるように設定しておく.
BIOS設定: 自分のマザーボードは設定が無くても起動したが,設定が必要な物についてはWake on LANをEnabledにする必要がある.
BIOS設定ではOFF→ONにはできるが,スタンバイからの復帰はできない.スタンバイからの復帰はWindowsで設定する.ネットワーク設定からWake on LANで使うネットワークインターフェース(ローカルエリア接続等)のプロパティを開き,全般でネットワークカード名の右にある「構成」を押す.
するとハードウェアの設定画面が開くので,「電源の管理」で「このデバイスで,コンピュータのスタンバイ状態を解除できるようにする」にチェックを入れてOKする.
次にリモートデスクトップの設定を行う.マイコンピュータ→(右クリック)→プロパティ→リモート タブ の「このコンピュータにユーザがリモートで接続することを許可する」にチェックを入れる.
さらに,PCが起動中かどうかを簡単に判別できるようにするために,Ping応答を許可する.(Windows XP以降は標準ではpingに応答しない)
コントロールパネル→Windowsファイアーウォールで「詳細設定」タブを開く.そして,下から2番目にあるICMPの[設定(E)..」を押す.すると以下のようなチェックボックスの並んだダイアログボックスが出るので,『エコー要求の着信を許可する』にチェックを入れてOKを押す.
外部から接続するには
以下の物をUSB メモリに入れて持ち歩く.
* putty.exe, putty.lng
* 上で作成した秘密鍵 (id_rsa.ppk)
* 接続用スクリプト
接続用スクリプトは以下のようにする.
start putty.exe -i id_rsa.ppk -P (ルータに設定したポート番号) -L localhost:7080:(FONのIP):80 -L localhost:7089:(PCのIP):3389 -ssh DDNSに登録したホスト名
puttyの画面が開いたら,ログイン名(root)と鍵のパスフレーズを入力するとFONのコンソールに接続される.
接続したら,次のコマンドを入力してPCの電源を入れる.
wol -i ブロードキャストアドレス PCのMACアドレス
(MACアドレスはxx:xx:xx:xx:xx:xxの形式)
カスタムスクリプトを登録してある場合は,
/tmp/custom.sh
少し待ってから対象のPCへpingを飛ばして電源が入ったことを確認する.
その後リモートデスクトップクライアントを開いてlocalhost:7089 へ接続する.puttyのウィンドウは作業が終了するまで閉じてはいけない.
TeamViewerという便利なソフトを見つけた.商用利用は有料であるが,表示されるIDとパスワードを入力するだけでファイアーウォールを超えてデスクトップのリモート操作が可能になるソフトである.これを使えば,いちいちsshトンネルを設定しなくて良いので,wake on lanのことだけ考えればよくなる.ということで継続調査中.
Comments