2011年10月20日木曜日

DD-WRTでアイドルタイムの自動切断

DD-WRT+PPPoEは基本24時間プロバイダから切断されることがないよう?
それにエコーが5秒ごとにピカピカ点滅するのでなんだか気持ち悪い
そこで無通信状態がしばらく続いたらプロバイダと切断するようにした

用意するもの:
・Linux(仮想マシンでOK)
・gcc g++ binutils patch bzip2 flex bison make gettext unzip zlib1g-dev libc6 subversion

適当なフォルダに移動
mkdir firmware_mod_kit
cd firmware_mod_kit
svn checkout http://firmware-mod-kit.googlecode.com/svn/trunk/ firmware-mod-kit-read-only
cd firmware-mod-kit-read-only/trunk/

whr-g300nv2-firmware-MULTI.binをDD-WRTのホームページからダウンロードして上記trunkフォルダに保存
sudo ./extract-ng.sh whr-g300nv2-firmware-MULTI.bin
注意:sudoをつけていないと完成したフォームウェアの後半半分がFFで埋められる模様。書きこまれたルーターはごみ化。

fmk/rootfs/lib/services.soをバイナリエディタで編集
 ・network.cの3403行付近を探す
 ・intervalで検索してそれっぽいところを1箇所編集。2011/10の時点ではintervalで検索して最初に一致した部分だった
 ・idle, lcp-echo-interval, lcp-echo-failure以外があるとpppdがすぐ終了してしまうようなので空白0x20埋めする

改変したservices.soを先ほどのフォルダに上書きする
trunkフォルダに移動
sudo ./build-ng.sh
注意:sudoを忘れないように
fmk/new-firmware.binをDD-WRTの更新ページから上書き

・ここでルーターが10分以上たっても起動しなくなった場合TFTPなどでファームウェアを復旧してください。記事がここにあります。

telnetでルーターに接続します
 nvram set ppp_idletime=分(10分の例:nvram set ppp_idletime=10)
 nvram set ppp_demand=1
 nvram commit
 ルーターのPPPoEの設定をするところで設定ボタンを押す

元に戻したい時は
 nvram set ppp_demand=0
 nvram commit
 ルーターのPPPoEの設定をするところで設定ボタンを押す

0 コメント: