1.はじめに | |||||
うちの無線 LAN の基地局は、大分前にオークションで安価に手に入れた BUFFALO (旧メルコ)の WBR-G54 である。 それまで使っていたルータが ADSL 導入当初に買った物で10Base-T のハブしか内蔵しておらず、時代遅れになってきたのと、別室で PowerBook を使いたかった為に導入したものだ。 引っ越して光回線になってからは無線 LAN の基地局として、PowerBook、そして CLIE、 iPhone の接続と活躍してくれていたのだが、如何せん WEP しかなく※1、セキュリティ面で問題があった。 またアンテナがしょぼい内蔵 only なためか、家の中でも場所によっては接続できなかったり、不安定になる事も多かった。 これはそろそろ 802.11n の基地局を買いなさい( Apple の Time Capsule ?)と言う事なのかと思っていた所、悪い友達から「 DD-WRT ってしってるぅ〜?」という話を聞いてしまった。 日経 Linux の 2008 年 10 月号の記事からの情報らしいのだが、 BUFFALO や LINKSYS の無線 LAN ルータのオープンなファームウェアーで、古い機種でも WPA2 等の高度な暗号化機能や、まともなファイアウォール等を使えるようになるらしい。 話を持ってきた友人は、自宅の古い無線 LAN ルータをメディアコンバータ化し、テレビをネットワークに接続するのが目的なんだそうだが、 WPA2 が使えるようになり、出力調整ができるのなら、自分も遊びがてらに一度入れてみようと思った。 ※1:一応純正ファームの最終版 Ver.2.23 では WPA + AES/TKIP までサポートしている。 |
|||||
2.最初のトライ( DD-WRT ) | |||||
調べてみると DD-WRT 以外にも OpenWRT や FreeWRT、tomato と言ったオープンなファームウェアーがあるらしいが(ベースが OpenWRT で、他はそこから派生したような感じかな)、取り合えず情報のある DD-WRT を使ってみることにした。 ダウンロードは DD-WRT のサイト( http://www.dd-wrt.com )から行う。 使いたい機種がサポートされているかどうかの確認は、「 Supported Hardware 」のタグから、DD-WRT の Wiki ( http://www.dd-wrt.com/wiki/index.html/Supported_Devices )に移動して行う。 WiKi の「 3.Supported Devices 」はメーカー名で分類されているので、うちのルータだと「 3.10 Buffalo 」になる。 Buffalo の無線 LAN ルータの対応状況は次のように表示される。 これによるとうちの WRB-G54 は Broadcom の石を使っていて、RAM 16M、フラッシュメモリー 4M らしい。また DD-WRT の対応バージョンは v23 SP2 以降で、インストール方式は ddadder を使うか、 Tftp_flash を使うとある。 ddadder と Tftp_flash の違いだが、ファームウェアーのインストールには2つの方法があり、一つは純正のファームウェアーだとだまして入れ替える方法、もう一つはルータのリブート時に一時的に tftp が有効になる事を利用してファームウェアーを送り込んでやる方法である。 このファームウェアーを騙してやるツール、実際には DD-WRT のバイナリーファイルに Buffalo のファームに偽装する為のヘッダー情報を追加してやるのだが、が ddadder である。( ddadder が使えなければ、バイナリーエディタを使って自力でヘッダー情報を追加する) でも Windows 用と Linux 用しか無いのと、誤って変に書き換えたファームを送り込んでルータを壊すのも心配なので、まずは tftp を使って送り込む方法を試す事にする。 |
|||||
3.ファームウェアーのダウンロード | |||||
さて、それでは tfpt を使って無線 LAN ルータにファームウェアーを送り込む訳だが、それに先んじてファームウェアーのダウンロードを行わなければならない(当たり前?)。 DD-WRT サイトのトップページから「 Downloads 」のタグをクリックし、表示されたリストから「 stable」そして「 dd-wrt.v24 SP1」に、もしくは「 v24-sp1」のリンクをクリックし、「 Consumer 」のディレクトリに入る。 ディレクトリは各メーカ毎に分類されているので、うちの場合は Buffalo を開く。 Buffalo のディレクトリ下には機種ごとのディレクトリが存在する。うちの場合には WBR-G54 なので、そのディレクトリに入る。 ここにはまた何種類もファームウェアーが存在するが、通常は「 dd-wrt.v24_std_generic.bin 」といった一番スタンダードな物を選択しておけば問題ないと思う。 ちなみに voip と付いている物はネット電話、 vpn は仮想専用線機能をサポートしたもの、mini は最小限の機能を、 mega は全機能をぶち込んだ物だそうだ。 mini は後述の tftp 方式でファームをぶち込む際、転送時間がかかりすぎて失敗する場合に使うことがあり、 mega は 6.6MByte あるので、 4MByte しかフラッシュメモリーを持たないうちの機種では使えない。
|
|||||
4. tftp でトライ | |||||
さて、いよいよ tftp でファームウェアーを送り込む。 この方法は、 Buffalo の無線 LAN ルータが起動直後に一定時間 tfpt での転送を受け付けるようになっている事を利用するものだ。 ping コマンドでルータの起動状況を監視し、ping が返ってくるようになったら(=起動したら)、すかさず tftp コマンドでルータに接続し、バイナリーモードでファームウェアーを put する。 ちなみに、うちは MacOS X なので ping も tfpt もあるので問題ないが、 Windows だと tfpt のツールを用意する必要がある。 何はともあれ、まずはルータを工場出荷状態に戻す。 リセットボタンの長押しでできる機種はそうして、うちのは一旦ログインして、設定画面から「工場出荷状態に戻す」を実行した。 出荷状態に戻したらリブート(電源の抜き差し)を行い、作業する PC のネットワークアドレスを「 192.168.11.2 」、マスクを「255.255.255.0」に設定して、ルータに対して「ping コマンドを打つ。 アドレスを 192.168.11.2 にするのは、 WBR-G54 の出荷状態でのアドレスが 192.168.11.1 であるため。他の機種の場合はそのアドレスに合わせる必要がある。 ping を打つと、次のような応答が返ってくる筈。
次にその状態で再度ルータを再起動すると、一旦 unknown host 等になった後、再度 ping が通り始める。
この ping が通り始めた瞬間に、すかさず tftp コマンドでファームウェアーを送り込むのである。Macintosh だと、ターミナルを2つ開いておき、片側で ping コマンドを流しておいて、もう片側で tfpt を打つ支度をしておくとやりやすい。
転送がうまく行くと「 xx Byte complete. 」といったメッセージが表示されるが、転送が失敗すると「 Timeout 云々」のメッセージが表示される。 転送が成功したら自動的にリブートするのでしばらく待つのだが、失敗した場合は再度ルータの電源を入れ直してリトライする。 ところがうちのルータはいくらやり直しても失敗ばかり。 何度もトライして mini 版に変更して、ようやく転送が成功したと思ったら、いつまで経ってもリブートする気配が無く、ルータのアドレスも 192.168.1.1 にならず、もとのまま。 あれれ?と思ってブラウザで接続した所、元のファームのまま変わっていない。 orz 続けて数回リトライしたら、今度は突然有線接続で応答しなくなる。 やばい!壊れた!とおもってリセット等色々したが接続できず、ちょっと泣きかけた所で「無線」のランプが付いている事に気づいた。 もしやと思い無線で接続し、ファームの画面を出す事ができたが、有線ポートは生き返らない。 物理的に死んでいたら泣くよなぁと思いながら急遽 Buffalo の改造純正ファーム※2をバイナリーエディタで作り、無線経由で送り込んで再セットアップした所、無事復旧。 ※2:Buffalo 純正のままだとヘッダー情報がゴミとなり、 DD-WRT が受け付けない。
|
|||||
5.ファームの改造 | |||||
tftp ではうまく行かないので、ファームウェアーの改造で Buffalo の純正ファームだと騙してインストールする方法をとることにした。 でも、それに先んじて Buffalo の純正ファームを DD-WRT のファームだと騙して戻しを行ったんだけどね (^_^; 。 ファームの改造はヘッダを付けるか取るかだけなので、バイナリエディタを間違えずに使えるのならそんなに難しい物じゃない。でも「バイナリーってなあに?」と言う人には絶対にやめておいた方がいい。 次の図は Buffalo の純正ファームウェアーと DD-WRT のファームウェアーをを Macintosh のバイナリーエディタ「HexEditor」で表示したもの。上が Buffalo の純正ファームウェアー、下が DD-WRT のファームウェアー。(ちなみに HexEditor は表示は見やすいんだけど、データのコピー&ペーストやバイナリデータの追加がうまくできなかったので、編集には 0xED を使った) 違いは Buffalo のファームの 0x00 〜 0x26 バイトに「WBR-B11 2.23 1.01_Kopt.filelen=3100672 」(0x57 42 52 〜 70 74 0a)というヘッダー情報が入っている事で、 DD-WRT のファームにはこのヘッダー情報が無く、いきなり「HDR0〜」と始まっている。 つまり Buffalo のファームウェアーであるとごまかす場合にはヘッダーを付ける必要があり、 DD-WRT のファームウェアであるとごまかす場合にはヘッダーを削除する必要がある。
先に DD-WRT から Buffalo の純正ファームに戻した際は、 Buffalo のホームページからダウンロードしたファームウェアー(wbrbg_223)のヘッダーをバイナリーエディタで削除し、名称に「.bin」の拡張子を追加して、 DD-WRT に食わせた。 同様にと言うか逆にと言うか、 Buffalo に DD-WRT のファームを食わせる場合は、 DD-WRT のファームウェアー(dd-wrt.v24_generic.bin)にバイナリエディタでヘッダー情報を追加する。 追加は3ステップ
また書き換えるファイルサイズは厳密でなくてもよく、HexEditor で表示されるサイズをそのまま書いておけば問題ない。ただしヘッダー自体は正しいファームの物をコピーするのが Better 。 こうやって作成した「見かけ Buffalo 、内容 DD-WRT 」のファームウェアーを「ファームウェアーのアップデート」で読ませた所、何ら問題なく DD-WRT のインストールができてしまった。 |
|||||
6.ところが、だ (v23 へのダウングレード) | |||||
DD-WRT のインストールが終わって自動的に再起動したら、自マシンのアドレスを 192.168.1.2 に変更して Safari で 192.168.1.1 に root/admin でログインする。 うちはルータとして使ってないので DHCP や DNS 、firewall の設定を外し、とりあえず MAC アドレスも WEP も無しにしていざ無線接続。 ところが PowerBook 側では親機も認識でき、接続をしにいくのだが、いくらやってもアドレスがとれない。相性が悪いのかと思って iPhone で試してみるが、こちらも親機は認識できるものの「接続できません」のエラー。 セキュア接続じゃないとだめなのか?と MAC アドレスブロックを入れたり WEP を有効にしたり、WPA や WPA2 にしても全く接続できない。 一旦あきらめてネットで情報を漁ると、一つ前のバージョンの v23 では動作しているような話がある。 そこで v23 (これのリリース日がまた古いんだ (^^; )をダウンロードしてダウングレードしたのだが、ここでちょっと落とし穴。 DD-WRT のファームウェアーアップグレード機能を使って v23 を入れたのだが、その際に以前の設定を引き継ぐかそれとも設定をクリアするか、を聞いてくるのに対し、「引き継ぐ」を選択した。 で、ダウングレードは難なく終わり、設定画面を出そうとした所で「パスワードエラーです」 (" ;; 。 v24 を入れた時に「パスワード設定しろ」と来たので設定したのだが、そのパスワードが効かない。デフォルトの admin でもだめ。 元々の WBR-G54 で使っていたパスワードやパスワード無しやらも試してみたが、頑として受け付けない。 うわ〜最悪!! と涙目になりながらリブートもしたが駄目。最後の望みをかけてリセットボタンを長押しし、リセットを掛けたらパスワードが初期化されてアクセスができた。 ほっと胸を撫で下ろしながら設定画面にアクセスし、無線の設定を行う。 まずはアクセス制限無しで設定した所、おお!繋がるじゃないか! MAC アドレスでの制限もOKで、 WEP も問題ない。 それでは WPA にしてみようと変更すると、「接続できませんでした」(涙) WPA2 もだめで、どうやら暗号化は WEP しか使えないようである。 |
|||||
7.ようやく TOMATO | |||||
WEP じゃ DD-WRT を使う意味半減、と DD-WRT の FAQ を漁って見ると、「v23 で無線LAN がうまく行かなきゃ VINT を使え」との書き込みがあった。 探してみると vintage というディレクトリがあり、そこに 〜.VINT.〜 と言う名称の付いたファームウェアーがあった。ちょっと期待を込めて駄目元で試してみたのだが、やっぱりだめ。 こうなったら情報は少ないが、軽くて安定しているという噂の Tomato ( http://www.polarcloud.com )を入れてみる事にする。 最初に Tomato にしなかった理由は、情報が少ない事とサポート機種(動作確認済機種)が少ない事で、 Buffalo だと次の機種しかサポートされていない。 WHR-G54S, WHR-HP-G54, WZR-G54, WBR2-G54, WBR-G54, WZR-HP-G54, WZR-RS-G54, WZR-RS-G54HP, WVR-G54-NF, WHR2-A54-G54, WHR3-AG54 ちなみにタグに「 Japanese 」とあるが、決してこれは日本語で書かれたページでも日本語化ツールでもない。 これは外人さんが日本語サイトやメールを見る時の補助ツールで、 Firefox と Thunderbird 用の「日本語→英語/ドイツ語/フランス語/ロシア語」ポップアップ辞書である。ぬか喜びしないように(笑)。 トップページの「 Tomato 1.21 」の欄に Download のリンクがあるので、それをクリックすると Tomato Firmware のページに移動する。 そのページの「 Download 」とタイトルのある下に「 Firmware 」のリンクがあるので、そこから「Tomato_1_21.7z 」をダウンロードする。もう一つある「Tomato_1_21_ND.7z 」は説明に書かれているように WHR-G125 用。 ところで Tomato は 7-Zip という珍しい圧縮形式になっているので、同時にその解凍ソフトをダウンロードする必要がある( StuffIt では解凍できなかった)。 解凍ソフトは tomato のホームページから Wikipedia 経由でソフトを探すことができるが、自分は Sixty Five, Ltd のサイト( http://sixtyfive.xmghosting.com/ )から 7zX をダウンロードした。
ツールをダウンロードしてファイルを解凍したら次のようなファイルが生成される。
このうち「 tomato.trx 」が WBR-G54 に使用するファームウェアー。他のはそれぞれの機種用のファイルである。
|
|||||
9.使ってみて | |||||
紆余曲折を経て Buffalo の純正ファームウェアーから Tomato に落ち着いた訳だが、今のところ接続も動作も非常に安定している。 うちは有線接続で下り 35MByte/s 、上り 40MByte/s 程度出ているが(上りの方が早い)、無線経由だと 下り18MByte/s 、上り 22MByte/s 程度。 802.11g の実効性能は 54MByte/s の半分程度だという事なので、無線接続しているのが PowerPC G4 500MHz ( 0.5GHz )の初代 PowerBook G4 だと言う事を加味しても十分な性能をたたき出せているようである。 無線接続の暗号強度も上がったし、満足できる範囲かな。 |
|||||