FON2100E を DD-WRT 化に成功しました

先日入手した FON2100E ですが、すぐに fon-flash-gui でファームウェアの書き換えをしようとしたところ、書き換えができずに断念してしまいました。 本日はこの引き続きで、DD-WRT のファームウェアに書き換えを行い、成功しました。

ファームウェアの書き換えに成功した FON2100E です。

実のところ DD-WRT のファームウェアに書き換えはできたものの、各種の設定が保存することができない不具合が生じてしまいました。結局 gargoyle のファームウェアに書き換えて正常に動作をしていることを確認できました。

この記事は FON2100E の書き換えを行った備忘録として記述しています。

FON2100E は FON2201E のときとは大きくことなり、いきなり fon-flash-gui では書き換えができない状態です。一度ファームウェアの書き換えに成功すると fon-flash-gui で書き換えができるようになります。

それでは FON2100E のファームウェアの書き換えの手順の大まかな方法を紹介します。

参考にしたウェブサイトは次のものです。

LaFonera Software Flashing
http://www.dd-wrt.com/wiki/index.php/LaFonera_Software_Flashing

ファームウェアの書き換えに必要な電源投入時に telnet で redboot コンソールへ接続できるようにすることが大切で、その後にファームウェアの書き換えを行うようになっています。この telnet で redboot のコンソールへ接続するまでがいくつかの手順を踏まないとできない点に注意が必要です。大まかには次のとおりです。

  1. FON2100E へ SSH ログインできるようにする。
  2. SSH ログインを行って redboot の設定を変更できる拡張 FON ファームウェアを書き込む。
  3. SSH ログインを行って redboot の設定ファイルを書き換える。
  4. telnet で redboot のコンソールへと接続する。
  5. redboot のコンソールからファームウェアの書き換えを行う。
  6. redboot の起動方法の設定変更を行う。
  7. 再起動させて、無事に起動することを祈る。

参考にしたウェブサイトと一部変更してファームウェアの書き換えを行っていますが、基本は同じと考えてください。

1. FON2100E へ SSH ログインできるようにする。

まず最初に FON2100E のオリジナルのファームウェアを古い 0.7.1 r1 にします。 方法は簡単で、電源が入ったままの FON2100E のリセットボタンを30秒以上押し続けて離すだけです。これで 0.7.1 r1 のファームウェアに戻ります。なおインターネットへ接続できる状況に FON2100E を置いておくと、再び最新のファームウェアをダウンロードして設定し直してしまいます。そのためファームウェアの書き換え終了までは、インターネットへ接続できるようにルータなどへ接続するこは禁止となります。

古いバージョン 0.7.1 r1 に戻った FON2100E

FON2100E のファームウェアが 0.7.1 r1 に戻ったところで次のウェブサイトを参考にしてブラウザから SSH ログインができるようにする二種類のスクリプト(step1.html , step2.html)をファイルに保存します。

Hacking Fonera
http://blog.blase16.de/index.php?url=2006/11/28/Hacking-Fonera

— step1.html —
ここにスクリプトを記述したかったのですが、このブログでは上手く表記できないようです。

— step2.html —
ここにスクリプトを記述したかったのですが、このブログでは上手く表記できないようです。

ブラウザから step1.html と step2.html を順番に開きます。これで端末から SSH ログインができるようになります。パスワードは admin となります。なお最初に端末から SSH ログインするときには SSH のハッシュの認証を行う表示がでます。ここでは yes を入力して先に進みます。

$ ssh root@192.168.10.1


FON2100E へ SSH ログインができたら、SSH ログインを許可する dropbear の起動スクリプトの名称を変更します。

root@OpenWrt:~# mv /etc/init.d/dropbear /etc/init.d/S50dropbear

ファイアウォールの設定(/etc/firewall.user)を変更します。

root@OpenWrt:~# vi /etc/firewall.user


次に表示する2行の行頭にある # マークを削除して設定を有効にします。

# iptables -t nat -A prerouting_rule -i $WAN -p tcp --dport 22 -j ACCEPT
# iptables -A input_rule -i $WAN -p tcp --dport 22 -j ACCEPT

           ↓

iptables -t nat -A prerouting_rule -i $WAN -p tcp --dport 22 -j ACCEPT
iptables -A input_rule -i $WAN -p tcp --dport 22 -j ACCEPT


/bin/thinclient スクリプトの修正

root@OpenWrt:~#  vi /bin/thinclient

最終行の行頭へ # をつけてコメント化します。

#. /tmp/.thinclient.sh

そして最終行へ追加します。

cp /tmp/.thinclient.sh /tmp/thinclient-$(date '+%Y%m%d-%H%M')

これで vi を終了します。

以上で SSH ログインが常にできるようになりました。ここで一度 FON2100E の電源を切り、再投入しておきます。

2. SSH ログインを行って redboot の設定を変更できる拡張 FON ファームウェアを書き込む。

端末から FON2100E へ SSH ログインを行います。パスワードは admin です。

$ ssh root@192.168.10.1


参考ウェブサイトではインターネット上から拡張 FON ファームウェアをダウンロードして書き込むようになっています。しかし表記された場所に拡張 FON ファームウェアは存在しません。参考ウェブサイトに案内された別の場所から拡張 FON ファームウェア(openwrt-ar531x-2.4-vmlinux-CAMICIA.lzma)と redboot の設定ファイル(out.hex)をパソコンへ事前にダウンロードしておきます。そしてパソコンに保存してあるファイルを nc コマンドを使って FON2100E へ転送します。

まず最初に FON2100E へ SSH ログインしている端末上で次のコマンドを実行します。

root@OpenWrt:~# cd /tmp
root@OpenWrt:~# nc -l -p 7000 > /tmp/openwrt-ar531x-2.4-vmlinux-CAMICIA.lzma

そして新しく端末を開き、拡張 FON ファームウェア(openwrt-ar531x-2.4-vmlinux-CAMICIA.lzma)をダウンロードしたディレクトリへ移動して、 nc コマンドで転送させます。

$ cd (openwrt-ar531x-2.4-vmlinux-CAMICIA.lzmaが存在するディレクトリ)
$ nc 192.168.10.1 7000 < openwrt-ar531x-2.4-vmlinux-CAMICIA.lzma

おそらく一瞬で転送が終了しているはずです。FON2100E へ SSH ログインしている端末上で ls コマンドで確認をしてみてください。

root@OpenWrt:~# ls
dhcp.leases
hostapd.conf
log
network-config
openwrt-ar531x-2.4-vmlinux-CAMICIA.lzma
resolv.conf
run
spool

拡張 FON ファームウェアを書き込みます。

root@OpenWrt:~# mtd -e vmlinux.bin.l7 write openwrt-ar531x-2.4-vmlinux-CAMICIA.lzma vmlinux.bin.l7

Unlocking vmlinux.bin.l7 …
Erasing vmlinux.bin.l7 …
Writing from openwrt-ar531x-2.4-vmlinux-CAMICIA.lzma to vmlinux.bin.l7 …  [w]

行尾の [w] の部分は、書き換え動作中は [w] と [e] を繰り替えして表示します。

書き換えが終了したら再起動します。

root@OpenWrt:~# reboot

3. SSH ログインを行って redboot の設定ファイルを書き換える。

再度 FON2100E へ SSH ログインをします。パスワードは adminです。

$ ssh root@192.168.10.1

拡張 FONファームウェアの転送と同じ要領で redboot の設定ファイル(out.hex)の転送を行います。

root@OpenWrt:~# cd /tmp
root@OpenWrt:~# nc -l -p 7000 > /tmp/out.hex

パソコン側の端末から redboot の設定ファイル(out.hex)を nc コマンドで発信します。

$ nc 192.168.10.1 7000 < out.hex

これも一瞬でファイルの転送が終了します。そしてファイルが存在するか確認します 。

root@OpenWrt:~# ls
dhcp.leases     log             out.hex         run
hostapd.conf    network-config  resolv.conf     spool

redboot の設定ファイル(out.hex)を書き換えます。

root@OpenWrt:~# mtd -e “RedBoot config” write out.hex “RedBoot config”

Unlocking RedBoot config …
Erasing RedBoot config …
Writing from out.hex to RedBoot config …  [w]

再び FON2100E を再起動させます。

root@OpenWrt:~# reboot

 

4. telnet で redboot のコンソールへと接続する。

参考ウェブサイトでは、再起動(電源再投入)から10秒以内に telnet ログインするように記述されていますが、私の場合には redboot の状態で停止しており、いつでも telnet で redboot のコンソールへログインできる状況となっていました。

なおこの telnet ログインを行う前にパソコンの IP アドレスを設定変更しておきます。

192.168.1.166 / 255.255.255.0

なおパソコン上でデフォルト・ゲートウェイを設定しなければならないときには、192.168.1.1 でも入力しておいてください。

それでは telnet コマンドを使って FON2100E の redboot コンソールへログインします。

$ telnet 192.168.1.254 9000

Trying 192.168.1.254…
Connected to 192.168.1.254.
Escape character is ‘^]’.

この状態のままで redboot のプロンプトが表示されない場合には一回リターン・キーを押せば表示されるはずです。

RedBoot>

これで redboot のコンソールへログインできました。この後、ファームウェアの書き換えなどを行います。

5. redboot のコンソールからファームウェアの書き換えを行う。

次のように redboot のコマンドを使用して FON2100E のネットワーク環境の設定を行います。

RedBoot> ip_address -l 192.168.1.254/24 -h 192.168.1.166

IP: 192.168.1.254/255.255.255.0, Gateway: 0.0.0.0
Default server: 192.168.1.166

そしてフラッシュメモリのシステム部分の初期化を行います。

RedBoot> fis init

About to initialize [format] FLASH image system – continue (y/n)? y
*** Initialize FLASH Image System
… Erase from 0xa87e0000-0xa87f0000: .
… Program from 0x80ff0000-0x81000000 at 0xa87e0000: .

パソコン上にある DD-WRT のファームウェアを転送してきます。この場合、パソコン側で TFTP サーバの設定が必要です。また TFTP サーバのダウンロード・ディレクトリへ DD-WRT のファームウェア( linux.bin )を用意しておく必要があります。私の場合、以前から使用していた tftpd を使いました。この tftpd は、参考ウェブサイトで推奨の tftpd-hpa ではなく、debian 標準のもの(無印 tftpd )を使用しました。TFTP サーバ(tftpd)のインストールや設定は割愛します。

RedBoot> load -r -b 0x80041000 linux.bin
Using default protocol (TFTP)
Raw file loaded 0x80041000-0x8066efff, assumed entry at 0x80041000

転送してきたファームウェアを展開します。この部分で30分以上の時間が掛かりました。気長に待ちましょう。

RedBoot> fis create linux
… Erase from 0xa8030000-0xa865e000: ………………………………………………………………………………………
… Program from 0x80041000-0x8066f000 at 0xa8030000: ………………………………………………………………………………………
… Erase from 0xa87e0000-0xa87f0000: .
… Program from 0x80ff0000-0x81000000 at 0xa87e0000: .

redboot のプロンプトが表示されて処理が終了したことを確認して reset コマンドで再起動させます。

RedBoot> reset

6. redboot の起動方法の設定変更を行う。

現状のままでは、 redboot のコンソールの部分で停止した状態となっています。そこで redboot の設定を変更して DD-WRT が自動的に起動するようにします。
端末から再び telnet コマンドで FON2100E の redboot コンソールへログインします。

$ telnet 192.168.1.254 9000

Trying 192.168.1.254…
Connected to 192.168.1.254.
Escape character is ‘^]’.

redboot のコンソールから設定スクリプトを実行します。

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
>> 

この状態で次の表示が出てこないときにはリターン・キーを一回押します。
そして次のように質問が表示されますので次のとおりに回答して行きます。

Boot script timeout (1000ms resolution): 10
Use BOOTP for network configuration: false
Gateway IP address: 192.168.1.254
Local IP address: 192.168.1.254
Local IP address mask: 255.255.255.0
Default server IP address:
Console baud rate: 9600
GDB connection port: 9000
Force console for special debug messages: false
Network debug at boot time: false
Update RedBoot non-volatile configuration – continue (y/n)? y
… Erase from 0xa87e0000-0xa87f0000: .
… Program from 0x80ff0000-0x81000000 at 0xa87e0000: .

以上で redboot の設定は終了です。reset コマンドで再起動させます。

RedBoot> reset

7. 再起動させて、無事に起動することを祈る。

しばらく放置していると無線 LAN の電波に DD-WRT の SSID が表示されてくると思います。無線 LAN は何もセキュリティの無い状態ですのでそのままログインできます。そしてブラウザから 192.168.1.1 へアクセスを行って DD-WRT の設定を行います。

ここで私の場合ですが、ログインパスワードの設定の部分は無事に設定することができたのですが、その後の設定がすべてできない状態となってしまいました。設定を反映させようとするとブラウザの接続が切れてしまいます。再び 192.168.1.1 へアクセスすると変更前の内容が表示されています。

一番最初に DD-WRT のビルド 14896 のファームウェアを使用しましたが、その後 fon-flash-gui を使って、ビルド 13064 も書き込んでみましたが同様の症状が発生しました。

そこで再び fon-flash-gui を使ってgargoyle 1.2.5 のファームウェアを書き込んでみると、設定もちゃんと保存されて、設定も反映させることができました。現在のところ DD-WRT が正常に動作しない理由は不明です。

DD-WRT のステータス画面です。

2014-08-30 追記

DD-WRT が正常に動作しなかった件ですが、gargoyle を導入した後、再度 DD-WRT ( Build 14896 ) を焼き直したところ、正常に動作するようになりました。結局 DD-WRT が動作不良となっていた原因については不明です。リージョン(region)に JP を指定できる DD-WRT において しばらく使用してみたいと思っています。

DD-WRT でも稼働するようになった FON2100E
広告

Linksys BEFSX41 ルータを入手しました

インターネット・オークションにて Linksys 社のルータ BEFSX41 ver2.1 を入手しました。

入手した Linksys BEFSX41 です。

インターネット・オークションには似た型番の BEFSR41C という機種のルータが数多く出品されていますが、本機 BEFSX41 は日本では未発売の機種のようです。物珍しさから落札してきました。

なおインターネット上でも BEFSX41 について記述された日本語のブログ類が見当たりません。情報収集は主にアメリカ圏の英語で記述されたものが頼りとなっています。

BEFSX41 の前面
BEFSX41 の背面
ポート 4 が DMZ 対応ポートとなっています。

外観は Linksys 社の無線LANルータの WRT54G シリーズと同じ筐体を使用しています。そのため無線LANルータとの積み重ねも出来ます。このように同一の筐体の使いまわしはコストダウンの他、デザイン性の統一などいろいろなメリットもあるようです。

二段重ねにした BEFSX41 と WRT54GS です。
上段が BEFSX41 , 下段が WRT54GS です。

まず最初に動作確認のために背面にある初期化ボタン(リセットボタン)を押して、初期化した後、BEFSX41 へブラウザからアクセスしてみました。BEFSX41 の初期値の IP アドレスは 192.168.1.1 です。そしてパスワードは、ユーザ名: 空欄 、パスワード: admin となっています。

ファームウェアのバージョンを確認してみると 1.52.9 となっていました。Linksys 社のウェブサイトでファームウェアの存在を確認すると、有りませんでした。どうもこの 1.52.9 のバージョンが最初で最後のファームウェアのようです。

BEFSX41 の設定画面です。

いつものようにデータ転送速度の計測を行ってみました。BEFSX41 の測定条件は、初期化した状態のまま、DHCP クライアントで家庭内 LAN へ接続して、自宅サーバから FTP 転送でおよそ 100MB の単一ファイルをダウンロードすることで計測しました。5回計測の平均値を求めました。

データ転送速度 計測結果
1,619 KB/s ( 12,951 Kbps )

なんともしょぼい計測結果となってしまいました(笑)。

2000 年代前半に製造された商品なので、ADSL モデムを経由しての通信であれば問題ない程度の性能となっていました。ちょうどヤマハの RTA55i と同程度の性能でした。

余談ですが 2ch のプロバイダのスレッドなどを閲覧していると、夜間の19時から24時ごろにかけて光回線にも係わらず一部のプロバイダで激しい速度低下(場合によっては 1Mbps を下回る)が見られるなどの書き込みが見られることから、意外とこの 12Mbps 程度の速度のルータでも現役で通じるのではないかとも思ってしまいます(笑)。

BEFSX41 の設定を変更して、PPPoE 接続で直接インターネットへ接続して、BEFSX41 へ接続したパソコンから我が家の OpenVPN サーバへ接続をしてみました。なお BEFSX41 本体には VPN 接続の機能は存在していません。

OpenVPN で接続は可能だったのですが、どうもデータの受け渡しが上手くできないようです。ブラウザで各ウェブサイトを巡ると画像が表示されなかったり、接続ができないことがありました。なお PPTP 接続では問題は発生しませんでした。

BEFSX41 へ接続しているパソコンを DMZ として設定すると問題なく通信を行って、問題が発生したウェブサイトも閲覧できるようになりました。

そこでいろいろと調査してみるとファイアウォール機能の SPI ( Stateful Packet Inspection ) を無効にすると OpenVPN の接続が正常に行えることが判明しました。

この現象は SPI の誤動作と言うよりは、時代的に OpenVPN を配慮した設計となっていないことが原因のようです。SPI は完全ではありませんが、ファイアウォール機能としては有効な手段のため無効にしてまで OpenVPN 接続をする必要性はないと思われます。

OpenVPN を使用するにはファイアウォール機能を無効にする必要があります。
PPTP であればそのまま使用できます。

無線LANルータの WRT54G のように第三者が作成したファームウェアの導入ができるものであれば、もう少し遊べたかもしれません。本機 BEFSX41 は私の Linksys コレクションの一つとして保管することとしました。

FON2100E を入手

インターネット・オークションにて FON2100E を入手しました。先日の FON2201E や FON2405E に引き続いて三台目のものとなります。

今回入手した FON2100E です。

届いた FON2100E の状態はなかなか良いもので、梱包箱や説明書や fon ステッカーなどの備品も揃っていて、本体そのものも表面の保護シールも残されていて綺麗な状態でした。

FON2100E を入手した状態です。

しかしこの保護シールを剥がしてみると、シールのラベル部分を残して日焼けをしている状態でした(笑)。このような保護シールで表面を保護することは傷から本体を守ってくれますが、変な日焼けを引き起こしてしまうようです。もっと別の方法で表面を保護することを考えた方がよいようです。

FON のロゴマークの周囲の白いプラスチックが黄色く変色しています。

早速電源を投入して動作状況を確認してみました。無線 LAN の電波が発射されていない状況でしたが、しばらくすると FON_AP や MyPlace の電波が発射されているのを確認しました。どうもファームウェアのアップグレードが行われていたのではないかと思われます。FON のファームウェア・バージョンは 0.7.2 r2 でした。

とりあえず MyPlace のところから FON2100E を経由してインターネットへ接続してみました。問題なくインターネットへアクセスができました。ハードウェアには問題はないようです。ただネット上では FON2100E の発熱が酷いとのことでしたが、確かに本体が熱くなっています。真夏の猛暑日や酷暑日に使用するには躊躇させられます(笑)。

そこで早速 DD-WRT 化を行なってみることとしました。

FON2100E へファームウェアを書き込みます。

いつものようにイーサネット・スイッチを経由してファームウェアを書き込むパソコンと FON2100E を接続しました。そして fon-flash-gui で DD-WRT のファームウェアを書き込もうとしました。すると初期段階で停止してしまいました。

Telnet for RedBoot not enabled

どうも現状では fon-flash-gui でファームウェアの書き込みができないようです。

ssh ログインができる 0.7.1 r1 以前のファームウェアでないと設定できないのでしょうか?

もしかして本体を開いてシリアルコンソールから接続をする必要性があるのでしょうか?できることであれば、解体せずに書き換えができればよいのですが・・・。

FON2201E でトントン拍子にファームウェアの書き換えが成功していたので、この FON2100E でも同様の感覚でできるものと思い込んでいました(涙)。

ネット上をしばらく検索して今後の対応を考えてみたいと思っています。

FON2100E(左) と FON2201E(右) の比較

FreeBSD 9.3 へアップグレード

FreeBSD 9.2 から 9.3 へアップグレードを行いました。

どうも8月5日にはすでに FreeBSD 9.3 が発表されていたようですが、全然気づかないままでした。まあ、いきなり飛びつくほどのものではないので、ちょっと様子見をした感じでアップグレードをしたこととなります。

FreeBSD 9.3-RELEASE アナウンス
http://www.freebsd.org/ja/releases/9.3R/announce.html

FreeBSD 9.3 へアップグレードを行って特に問題は発生していません。いつものように我が家のサーバとして活躍しています。

またアップグレードの方法は subversion で /usr/src のソースツリーを更新した後、buildworld と buildkernel でビルドするという従来から行ってきた方法です。出来上がったシステムは、サーバマシンで使用されているプロセッサの P4-Prescott に適応したものとなっています。通常の i686 ビルドによるものとの速度の違いがどれほどあるのかは不明で、まったく気分の問題となっています(笑)。プラシーボ効果と言ったところでしょうか。

FreeBSD php5-5.4.31_1 へアップデート

FreeBSD の ports へ php5 のアップデートが到着していました。

具体的な修正点は不明ですが、ネットワーク関連でもよく使われる php5 だけに、アップデートが到着したときには速やかに対応するようにしています。

もちろん今回の pho5 のアップデートに伴ってウェブサーバの Apache の php5 のモジュール(mod_php5-5.4.31_1,1)もアップデートが行われました。