注意
DD-WRTではFONのアクセスポイントとしての利用はできなくなります。後でオリジナルに戻すことは可能ですが、リセットで戻せなくなる事例もあり、その際は相応の知識が必要です。La Foneraを壊す危険もあります。理解できない場合は絶対に実行しないこと!(自己責任。誰も助けません)
DD-WRTとは †
- DD-WRTはオープンソースな無線LAN APファームウェア
- 中身はファームウェアというよりは無線LAN AP向けのLinuxディストリビューション
- WPA2やVPNサーバー・クライアント、フリーホットスポット機能など、メーカーが出し惜しみしてる機能満載
- OpenWRTと違いLinuxの知識が無くてもブラウザから設定できる
- ファームのバージョンアップでsshを封印されたLaFoneraハードを最大限活用できる
ファームウェア †
- Fonが公式にリリースしているものではないことに留意。
以下は2chスレからの最近の状況。
- 10/04/23にv24-preSP2が出た。(SVN revision 14311)
- 10/04/13にv24-preSP2が出た。(SVN revision 14144)
- 09/10/10にv24-preSP2が出た。(SVN revision 13064)
- 09/07/21にv24-preSP2が出た。(セキュリティ対策の暫定リリース版、SVN revision 12533)
- 08/07/26にv24 SP1が出た。
- 08/05/18にv24が出た。
推奨ファーム †
以下のバージョンのファームがDD-WRTのフォーラムでのおすすめになっています。
対象機種 †
ブートローダにRedBootを採用する機種で、dd-wrtファームウェアが公開されている。
- LaFonera Fon2100E (別称: Fon1.0、元祖、特徴:小型筐体、5V電源仕様)
- LaFonera Fon2200 (別称:Fon1.1、特徴:電源が7.5V仕様、元祖と同サイズの小型筐体)
- LaFonera+ Fon2201 (別称:Fon1.5、特徴:LAN/WAN独立装備、7.5V仕様、元祖よりもひとまわり大きい)
- LaFonera2.0 Fon2202 (別称:Fon2.0、特徴:USBコネクタ装備、LAN/WAN独立装備、7.5V仕様、LaFonera+と同じサイズの筐体)
なお、FONERA2.0Nはブートローダがu-bootに変更されているため、以下の手順ではdd-wrt化はできない。(公式サイトでも、現時点では対応予定で「work_in_progress」であり、対応するファームウェアをダウンロードすることはできない@20100403)
DD-WRT化手順概略 †
v24正式版(&その直前のRC7版)と、それ以前のファームウェアでは、更新手順が異なる。
1. シリアルコンソール経由(v24 RC6.2までに適合) †
- シリアルコンソールでLa FoneraとPCを接続しroot.fsとvmlinux.bin.l7をTFTPで流し込む
- (ファイル名に注意 バージョン情報などの違いがあれば、vmlinux.bin.l7 にリネームすること)
- Foneraを分解し、コンソールケーブルを作成しなければならず、作成の手間と追加費用がかかる
- 失敗した時の復旧の保険が欲しい人、いじり倒す人はこちらの方法を推奨
- ケーブル作成と接続方法は下のシリアル端子配列を参照
代替無線ファームウェアDD-WRT
SS2ch:pc11.2ch.net/test/read.cgi/linux/1165810666/ から
(元ネタ:http://www.dd-wrt.com/wiki/index.php/La_Fonera_Flashing)
- PCとルータのLANポートにLANケーブルで接続(PCのIPアドレスは192.168.1.1に設定 La Foneraは192.168.1.2にする想定)
- PCとルータのシリアルにコンソールケーブル(カモン9-KEなど)で接続
- TFTPサーバ起動後、TFTPサーバーのディレクトリにファーム(root.fs、vmlinux.bin.l7)をぶっこむ。
- Tera Termの設定を 9600-8-N-1にする。
- ルータの電源をいれて、Ctrl+C、>Redbootプロンプトになったら以下のコマンド実行
>Redboot ip_address -l 192.168.1.2/24 -h 192.168.1.1
>Redboot fis init
>Redboot load -r -v -b 0x80041000 root.fs
>Redboot fis create -b 0x80041000 -f 0xA8030000 -l 0x002C0000 -e 0x00000000 rootfs
>Redboot load -r -v -b 0x80041000 vmlinux.bin.l7
>Redboot fis create -r 0x80041000 -e 0x80041000 -l 0x000E0000 vmlinux.bin.l7
>Redboot fis create -f 0xA83D0000 -l 0x00010000 -n nvram
>Redboot reset
- 再起動されてしばらくして文字化けしたメッセージが表示されてたらWRT化に成功してるのでTera Termの設定を115200-8-N-1にすれば表示なおる。何かエラーでてたらもう一度やり直し。
- fis 〜 vmlinux.bin.l7を修正、ブラウザからのアップデートに失敗する方はRedbootからfis listを実行し、vmlinux.bin.l7のLength値が0x000E0000かどうか確認して下さい
2. シリアルコンソール経由(v24正式版以降への更新) †
- シリアルコンバータ経由で、LaFonera内部のシリアルポートとPCを接続する。
以下の手順ではLa Fonera側のIPアドレスは192.168.1.2、PCのIPアドレスは192.168.1.10と想定して記述
異なる場合は、適宜読み替えて実行する。
- PC側では、ターミナルソフト(Tera Term)のシリアルポート設定を 9600-8-N-1にする。
既にv24 RC7が導入されている場合や、それ以前のファームウェアでもfconfigでシリアルポートの通信速度を変更している場合はそれに合わせる(ex. 115200bps)
重要:ファームウェア更新時の操作ミス(もしあれば)を後で検証できるよう、作業開始からDD-WRTのwebセットアップ画面にアクセスできるまで、ログファイルを保存しておくことを強く推奨。特に、初めてファームウェア更新にトライする場合など。
- TFTPサーバを起動し、アップロードフォルダに、La Foneraに注入するファームウェアを入れておく(公式サイトでダウンロード時、Console imageとして表記されているlinux.binを用いる)
- La Foneraの電源を投入し、RedBootコンソールに入る。(Ctrl+C操作)
Redbootプロンプトになったら以下のコマンド実行 (実際には、各コマンド毎にメッセージが表示される)
> RedBoot> ip_address -l 192.168.1.2/24 -h 192.168.1.10
> RedBoot> fis init
> RedBoot> load -r -v -b 0x80041000 linux.bin
> RedBoot> fis create linux
2番目のコマンド、fis initで確認メッセージが表示されるので「y」を入力。
最後のコマンド、fis create linuxにおいて書き込みに30分以上かかるので気にせず放置。
(PCのパワーセーブ設定次第では)スタンバイまたは休止状態に入らないよう、予め電源の設定を(一時的に)変更しておくとよいかも。
- RedBootの起動環境を設定する。
変更の主な目的は起動スクリプトの記述変更。それ以外のパラメータ変更は必須ではない。
最後の確認に「y」と入力し、fconfigは設定保存して終了する。
> RedBoot> fconfig
> Run script at boot: true
> Boot script:
> .. fis load -l vmlinux.bin.l7
> .. exec
> Enter script, terminate with empty line
> >> fis load -l linux
> >> exec
> >>
> (途中省略)
> Update RedBoot non-volatile configuration - continue (y/n)? y
> ... Erase from 0xa87e0000-0xa87f0000: .
> ... Program from 0x80ff0000-0x81000000 at 0xa87e0000: .
- 再起動する
電源のoff/onでもよい
> RedBoot> reset
- 書き換え後の設定等
コンソール側に諸々のメッセージを吐きながら、RedBootを経てDD-WRTファームウェアが起動してくる。
v24sp1ではファームウェアを書き換えた最初の起動で(Factory Default実行時も同様)ユーザ名とパスワードの変更を促す画面が表示されるようになった。
ここで変更してもいいし、後で変更することも可能なので好きなタイミングで変更(初期設定のまま運用することは避けるべき)。続いてFactory Defaultに初期化する場合はその際に変更した方が手間が少ない。
ユーザ名やパスワードを忘れたらリセットボタンで初期化可能
> Your Router is currently not protected and uses an unsafe default username and password combination,
> please change it using the following dialog!
デフォルトのままのセキュリティによるwebセットアップへの不正アクセスやその他のトラブルを防ぐため、実運用に入る前にユーザ名&パスワード変更を行っておくことを推奨。
- (ついでに)Console baud rateの設定 (必須ではない。 この手順は省略可)
- 手順が前後するが、RedBootの起動環境を設定する工程の一部。fconfigで Console baud rateを 115200 に変更。
- メリット: シリアルポート接続でコンソールに吐き出されるメッセージをモニタする際、RedBoot(ブートローダ)とlinux(dd-wrtファーム)起動後で通信速度が同じため、どちらも文字化けしない。
- デメリット: うまく設定できずにRedBoot起動環境設定を壊してしまう事例がある。
(やるなら二度手間になるが)DD-WRTの稼働が確認できた後に、フタ閉め直前にここだけ再設定する方が無用なトラブルを回避できる。この設定はRedBootの通信速度を指定するものなので、ここがおかしくなるとRedbootへのアクセスが出来なくなり、ファームウェアの再注入さえも難しくなる。
- 特にbackspaceで以前の数値が消せないような場合 RedBootの起動環境設定を壊す可能性が高く、保存せずに終了させる(=編集中止)。ターミナルソフトの設定も関与してくるものなので一概に(以前の数値が消せないような場合が)ダメだとは言い切れないが、トラブル事例の多くで、元の数字を消せなかったまま保存したとのレポートから。
- 必須の設定ではなく、この設定に拘る必要もない(コンソールのメッセージ全てを常時モニタしたい場合など、必要性は限定的)。
3. SSH経由 †
4. telnet経由 †
ssh化不要でかつシリアルケーブルなしでdd-wrt化が可能。ただしLa Fonera+だけ利用可能な方法かもしれないので注意されたい。
あらかじめホストPCに
- linux.bin
- tftpd
- telnetクライアント(putty推奨、teratermではダメだった)
を用意しておき、IPアドレスを192.168.1.254/24にする。La Fonera+とクロスケーブルなりで直結し電源を入れ、タイミングよくtelnetクライアントから192.168.1.1:9000に接続しにいくとRedBootにつながる。あとの操作は他と一緒(参考1、参考2)。
シリアル端子配列 †
La Foneraを分解してアクセスする内部シリアルポートのピン配列や関連事項など
1. LaFonera、FON2100E(ヘッダピン10本) †
La Fonera v1.0という呼び方もある。
シリアル端子からPCに接続するには電圧レベルシフタが必要。
携帯電話用接続ケーブルの9-KE等を流用するときは
(コンデンサ) (コンデンサ)
| | | | | |
| |RX|TX| |GND|
(メモリIC)
| | 9-KEの場合 | UP12Cの場合 | 9-CDMの場合 |
| GND | | 茶 | 黒 | 緑 |
| TX | | 橙 | 白 | 白 |
| RX | | 黒 | 緑 | 赤 |
こんな感じにつなぐ
(9-KE 色違いのバージョンあり GND-緑 TX-赤 RX-黒 )
2. LaFonera、FON2200(ヘッダピン4本) †
La Fonera v1.1という呼び方もある。
FON2100Eと比べてシリアルポートJP1のヘッダピンが4本に変更されているが、必要最小限のピンに限定したもの。
ケースを開封する際、専用ドライバが必要、ヘックスローブの6番(T6)が該当。
シリアル端子からPCに接続するには電圧レベルシフタが必要。
LEDを手前側に、電源ジャックを遠くに見て、JP1の手前側から順に
Vcc(+3.3V)、TxD、RxD、GND
3. LaFonera+、FON2201(ヘッダピン4本) †
LaFonera+とLaFonera2.0で、シリアルポートの配置は共通。
FON2100Eと比べてシリアルポートJP1のヘッダピンが4本に変更されているが、必要最小限のピンに限定したもの。
ケースを開封する際、専用ドライバが必要、ヘックスローブの9番(T9)が該当。
シリアル端子からPCに接続するには電圧レベルシフタが必要。
WANポート(白色RJ-45コネクタ)を手前に見て、JP1の手前側から順に
Vcc(+3.3V)、TxD、RxD、GND
La Fonera+には La Fonera v1.5という呼び方があり、La Fonera2.0には La Fonera v2.0という呼び方もある。
La Fonera+と La Fonera2.0はハードウェア的な基本設計は共通で、使用される部品が異なる程度。但し、搭載されるファームウェアはハードウェアの違いを吸収する部分が異なる(256Mbitメモリ&USBサポート)。
移行後の初期設定 †
ファームウェア書き換え後のリセット(または電源off/on)後に、La FoneraはIPアドレス192.168.1.1/24 で動作を開始する。
http://192.168.1.1/ でアクセスできるはず。これは無線側からアクセスできる。(La Foneraと同じサブネット内からアクセスすれば)有線側からもアクセスできる。
有線側からアクセスする場合、以下の設定で可能。
La Foneraを検証用PCとLANケーブルで直接接続する。(HUB経由でもok)
検証用PCで、IPアドレス/マスク:192.168.1.10/24 Gateway:192.168.1.1と設定。
webブラウザから http://192.168.1.1/ にアクセス。
webセットアップ(ログイン名・パスワードの変更を促す画面)が表示される。
環境設定部分のアクセスには デフォルトのユーザ名 root、パスワードは admin でログインできる。
正常に書き換えされていれば、SSIDが dd-wrt であるAPが(信号強度最大で)発見できるはず。その時点では暗号化やアクセス制限が無いため(=野良AP状態)、そのまま接続すればdd-wrtのwebセットアップ(ログイン名・パスワードの変更を促す画面)にアクセスできる。
正常にdd-wrt化できているはずなのに何か挙動がおかしいと思われる場合は、再度dd-wrtファームウェアを注入するか、リセットボタンによる初期化処理で本来の動作になる可能性もあるので試してみる。
リセットボタンで対処する場合は
電源onの状態で本体裏のリセットボタン(赤色または黒色)を楊枝など先端の細い物で約30秒押し続ける。
暫く(ボタンを離してから約60秒)待つとwebセットアップの情報を全て消去してから起動してくる。
webセットアップ画面のアクセスは SSID: dd-wrt、IPアドレス/マスク:192.168.1.1/24 、
デフォルトのユーザ名 root、パスワードは admin です。
但し、リセットボタンは 電源投入直後から有効になるわけではないため、ファームウェアの起動途中でハングアップしているような場合はリセットボタンによる初期化はできない場合がある。そのような場合だと思われる場合はファームウェアを入れ直すしかない(滅多にそんなことにはならないハズだが)。
dd-wrtのwebセットアップでリセットボタン監視を禁止していた場合で、webセットアップ(編集画面)にアクセスできなくなった場合でも、同様にファームウェアの入れ直しが必要となる。(特に、ユーザ名やパスワードを変更していた場合に陥る可能性あり)
日本語化 †
webセットアップの表示言語を日本語に変更できます。
移行後のアップグレード †
version 2007 - 0117以降の場合 †
- DD-WRTのページからfonera-firmware.binをダウンロード
- Foneraにブラウザからアクセスし、Administration>Firmware Upgrade
- Please select a file to upgradeの欄にはfonera-firmware.binを指定します
- 現在の設定をアップグレード後も使用する場合はAfter flashing, reset toをDon't resetにして下にあるUpgradeボタンを押します
- カウントダウンが始まりアップグレードが開始されます、カウントダウン終了後も処理を行っているのでFoneraの電源をきったりリセットしてはいけません
- この時処理が一瞬で終了したように表示される場合は初回の書き換えに失敗している可能性があります下記の方法で書き換えて下さい
- 数分経過した後にアップグレード完了画面が出れば成功です
- アップデートが正常に完了したかは右上のバージョン情報を参照して下さい
version 2007 - 0117以前の場合や書き換えに失敗している場合 †
- La Foneraにsshでloginする。
- /tmp以下に新しいファイルを持ってくる(WANにアクセスできるなら直接取得、できないなら他マシンを経由する)。
~ # cd /tmp
/tmp # wget 'http://www.dd-wrt.com/dd-wrtv2/downloads/beta releases/fonera builds/(date)/vmlinux.bin.l7'
/tmp # wget 'http://www.dd-wrt.com/dd-wrtv2/downloads/beta releases/fonera builds/(date)/root.fs'
- mtdコマンドを使ってFlash ROMを書き換える(root.fsのピリオドに注意)。
/tmp # mtd write vmlinux.bin.l7 vmlinux.bin.l7
/tmp # mtd write root.fs rootfs
- リブートする。
/tmp # reboot
- 設定が初期値になるので、適宜戻す(せめてsshを有効にしないと)。最近のやつは初期値に戻らないみたい。
イーサネットコンバータ化の設定 †
イーサネットコンバータとは?
簡単に言うと、有線LANポートを無線に変換するもの。
無線LANを搭載していない機器で、無線LANを利用できるようにする。
- 下準備として Admin > Factory Defaults > Yes > Save で設定を初期化してから作業することを推奨
- 設定クリア後、Lafoneraを既存のLANから切り離し、PCから無線LANで SSID:dd-wrt に接続
- ブラウザから設定画面を開く
- Security > Firewall
SPI Firewall: Disable
- Setup > Advanced Routing (RIP2 Router ではなく RouterにしないとDHCPがうまくいかない場合もある)
Operating Mode: RIP2 Router
Dynamic Routing > Interface: LAN&WLAN
- Wireless > Wireless Security
既存の無線APで使用しているWPAやWEPのキーに設定
- Wireless > Basic Settings
Regulatory Domain: Japan
Wireless Mode: Client Bridge
Wireless Network Name (SSID): 既存の無線APのSSID
- Setup > Basic Setup
Connection Type: Disable
STP: Disable
Router Name & Host Name: 適当に
MTU : Manual にして「1454」に設定する(Bフレッツ利用者のみ)
Router IP - Local IP address: 既存のLANのセグメント内の空いてるIPに
SubnetMask & Gateway & LocalDNS: 既存のLANと同じものに
DHCP Server: Disable
以上の設定を行った後、Lafoneraに有線でPC等を接続すれば既存のLANに接続できます。
APモードの設定 †
このAPモードにするとLa FoneraはNAT機能を停止するので、
無線側と有線側の間のアクセスは完全に自由に行えます。
有線側PCと無線側PCのファイル共有で特別な設定をする必要がなくなります。
ルーター、ルーター機能付モデムをもっている場合、ルータはそれに任せて、無線化だけすることができます。
LaFonera Software AP-modeを意訳したものがソース。
- 下準備として Admin > Factory Defaults > Yes > Save で設定を初期化してから作業することを推奨
- ブラウザから設定画面を開く
- Security > Firewall
SPI Firewall: Disable
- Setup > Basic Setup
Connection Type: Disabled
あとは好きなように
Router IP - Local IP address: 同じネットワーク上の他の機器と重複しないように設定する
今のところLafonera自体のIPアドレスは、DHCPで上位ルータから取得できない
DHCP Server: Disable
- Setup > Advanced Routing
Operating Mode: RIP2 Router
- Wireless > Basic Settings
Wireless Mode: AP
Network Configuration: Bridged
あとは好きなように
- Wireless > Security
必要であれば設定
今後追加予定の機能や判明しているバグ・不具合など †
- セキュリティ・脆弱性の問題
- httpdにまつわる脆弱性とその対処策が報告されている(2009年7月22日付)。詳細は本家を参照のこと。その後の対処策を含むファームウェアとしてDD-WRT v24 preSP2 (Build13064)がリリースされている。
- psyb0tワーム(2009年3月28日付) デフォルトの設定では感染しない。詳細は本家を参照のこと。
- メインデバイス(クライアントモード)で暗号化してないとバーチャルデバイス(APモード)の暗号化ができない。
- WDS(APモード)で暗号化が使えない。
- Web設定の NAT / QoS -> QoS で4つのEthernetポートの優先度を設定できる。(La FoneraにはEthernetポートは1個しかない)
- LaFoneraファーム時と比較して、高熱になりやすいという報告があります。ビルド・設定によっても違うらしい。
仕様 †
- もともとひ弱なLaFoneraだが、DD-WRT化でさらにスループットが落ちる。
- ランプはでたらめに点滅?(v24正式版以降のファームウェアではアクセスしているデバイスに連動した点滅になった風合)
オリジナルのファームウェアに戻す †
ぶっちゃけDD-WRT化と同じで、書き込むファームウェアが純正版というだけ。
- ファームウェアをダウンロードしてくる
- 7.1.1のバージョン(SSHが使える) ダウンロード
- 7.1.2のバージョン(以降SSHが使えない) ダウンロード(404)
- 7.1.5のバージョン(FONから)ダウンロード
- 7.1.5(というかFONからダウンロードした場合)はファイルに変更を加える必要があります。
- OSがLinuxかMacOS Xなら以下のコマンドで可能です。(バイナリエディタ使えばwinでも可能?)
- tail --bytes +520 fonera_0.7.1.5.fon > fonera_0.7.1.5.tar.gz
- ファイルを解凍し、kernel.lzma と rootfs.squashfsをTFTPサーバのルートディレクトリに置く。
- RedBootに接続し、以下のコマンドをタイプ(IPアドレスは自分の環境に合わせて変更すること)
- ip_address -l 192.168.1.254/24 -h 192.168.1.2
- fis init
- load -r -v -b 0x80040450 rootfs.squashfs
- fis create -b 0x80040450 -f 0xA8030000 -l 0x00700000 -e 0x00000000 rootfs
- load -r -b %{FREEMEMLO} kernel.lzma
- fis create -r 0x80041000 -e 0x80041000 vmlinux.bin.l7
- fis load -l vmlinux.bin.l7
- exec
- FONを再起動。
関連スレ †