ラベル DD-WRT の投稿を表示しています。 すべての投稿を表示
ラベル DD-WRT の投稿を表示しています。 すべての投稿を表示

2014年2月11日火曜日

DD-WRT でシスログを USB メモリに書き込み

はじめに

DD-WRT でログを USB メモリーに書き込むようにします。

一応、Web GUI の Services -> Services で Syslogd を有効にすることはできますが、この場合はログの書き込み先が /var/log/messages 又は IP アドレスを指定したリモートサーバーとなり、それ以外を指定することはできません。

/var/log/messages に書き込まれたログは DD-WRT を再起動すると消えてしまい、あまり都合良くありません。

なので、今回は WebGUI での Syslogd の設定は Disable とし、別の方法で Syslogd を起動してログを USB メモリーに書き込むようにします。

また、将来 Optware をインストールすることを意識してファイルシステムの選択やマウントポイントを決めました。

無線 LAN ルーター本体は WZR-300HP で、「 Buffalo WZR-300HP に DD-WRT インストール 」で DD-WRT をインストールしてます。

USB メモリーのフォーマット

「 OTRW2 (Optware the right way Take 2) 」によると USB メモリのファイルシステムは ext2 が良いようです。ext3 でジャーナルを使うと、フラッシュメモリーの寿命を縮めるかもしれないらしいです。

パーティション作成

DD-WRT では fdisk を使えないようなので、Ubuntu をインストールした PC に USB メモリを挿してパーティションを作成します。

作成後のパーティションはこんな感じになりました。

$ sudo fdisk -l /dev/sdb

Disk /dev/sdb: 4089 MB, 4089446400 bytes
61 heads, 60 sectors/track, 2182 cylinders
Units = cylinders of 3660 * 512 = 1873920 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0xabcabcab

   Device Boot      Start         End      Blocks   Id  System
/dev/sdb1               1        2182     3993030   83  Linux

今回の PC 環境では USB メモリは /dev/sdb でした。環境によっては別のデバイスになる場合もあり、間違えると別のディスクの大事なデーターを誤って削除してしまう場合もあるので、 デバイス名の指定には注意する必要があります。

ext2 でフォーマット
$ sudo mkfs.ext2 /dev/sdb1

これも誤って別の大事なデーターを消してしまわないようにデバイス名の指定は注意する必要があります。

USB メモリをマウント

フォーマットした USB メモリを無線 LAN ルーターに挿します。

Web GUI の Services -> USB タブ
  • Core USB Support を Enable
  • USB Storage Support を Enable
  • Automatic Drive Support を Enable
  • Disk Mount Point は /opt を選択 (後々の Optware のためにこれにします)
  • Save ボタンを押す
  • Apply Settings ボタンを押す
  • USB メモリがマウントされ、Disk Info にマウントされた情報が表示されました

ちゃんと /opt にマウントされてます

# mount | grep opt
/dev/sda1 on /opt type ext2 (rw,relatime,errors=continue)

Syslogd を起動

USB メモリにシスログ保存用のディレクトリを作成

# mkdir -p /opt/some/where

Web GUI の Services -> Services タブで Syslogd が Disable になっていることを確認。「はじめに」で説明したとおり、ここの Syslogd では USB メモリにログを書き込めないので Disable にしときます。

Web GUI の Administration -> Commands タブ
Commands ダイアログボックスに以下を入力
/bin/busybox syslogd -L -s 8192 -b 10 -O /opt/some/where/messages
/bin/busybox klogd

なぜ /bin/busybox を付けてるか興味がある人は後の「おまけ」を参照して下さい。

Save Startup ボタンを押す

システムを再起動

# reboot

Syslogd と Klogd が起動しています

# ps www | grep log
 1581 root      1044 S    /bin/busybox syslogd -L -s 8192 -b 10 -O /opt/some/where/messages
 1583 root      1040 S    /bin/busybox klogd
 1811 root      1044 S    grep log

ログファイルもできました

# ls -la /opt/some/where/messages
-rw-r--r--    1 root     root         41242 Feb 11 12:15 /opt/some/where/messages

Firewall ログを出力するようにする

今の状態で、無線 LAN に関するログが MAC アドレス等と共に出力されます。これだけでなく、Firewall のログも出力されるようにします。

Web GUI の Security -> Firewall タブの Log Management
  • Log を Enable
  • Log Level は High を選択 (これはお好みで。Medium や Low を選択すると出力されるログが少なくなるようです)
  • Dropped, Rejected は Enable を選択、Accepted は Disable を選択 (これもお好みで)
  • Save ボタンを押す
  • Apply Settings ボタンを押す

おまけ

Syslogd と Klogd の起動は上に書いたように /bin/busybox を付けてますが、/bin/busybox を付けずに

/sbin/syslogd -L -s 8192 -b 10 -O /opt/some/where/messages
/sbin/klogd

こんな感じでも一応 Syslogd と Klogd が起動します。

しかし、Web GUI で Syslog とは無関係な設定箇所を保存したり適用したりするタイミングなどで Syslogd と Klogd のプロセスが落ちてしまいます。

この場合のプロセスは

2013 root      1044 S    /sbin/syslogd -L -s 8192 -b 10 -O /opt/some/where/messages
2017 root      1040 S    /sbin/klogd

となっており、どうやらもともと Web GUI で Syslog の Enable/Disable を管理しているので、いろいろなタイミングで

killall syslogd
killall klogd

が実行されているっぽいです。(これに気づくのにかなり時間がかかりました。)

この killall を回避しないといけないのですが、DD-WRT はたまたま

# ls -la /sbin/syslogd /sbin/klogd
lrwxrwxrwx    1 root     root            14 Mar 25  2013 /sbin/klogd -> ../bin/busybox
lrwxrwxrwx    1 root     root            14 Mar 25  2013 /sbin/syslogd -> ../bin/busybox

というように Syslogd と Klogd の本体は busybox なので、busybox コマンドの引数に syslogd と klogd を指定する方法を使い

/bin/busybox syslogd -L -s 8192 -b 10 -O /opt/some/where/messages
/bin/busybox klogd

これで起動したところ、各プロセスは以下のようになりました。

1581 root      1044 S    /bin/busybox syslogd -L -s 8192 -b 10 -O /opt/some/where/messages
1583 root      1040 S    /bin/busybox klogd

これで killall を回避できてるっぽく、今のところうまく動いてます。


2014年1月18日土曜日

Buffalo WZR-300HP に DD-WRT インストール

はじめに

数年間使い続けた無線 LAN ルーターの調子が悪くなり、近所の電気屋さんで Buffalo WZR-300HP を安く売っていたので買いました。

この WZR-300HP のファームウェアを DD-WRT に入れ替えました。

以下は私が実施した手順の記録であり、 まったく同じハードウェアと条件でこの通りにやってもうまくいかない場合もあるかもしれません。 最悪、無線 LAN ルーターが二度と使い物にならない場合もあるかもしれませんが、自己責任でお願いします。

DD-WRT ファームウェアをダウンロード

WZR-300HP が DD-WRT によりサポートされていること確認
DD-WRT の Router Database で WZR-300HP を入力すると「Supported」が yes になっていてサポートされていることがわかります。
DD-WRT のサイトからファームウェアをダウンロード

WZR-300HP は WZR-HP-G300NH2 と同じハードウェアらしく、工場出荷状態の WZR-300HP にフラッシュする DD-WRT のファームウェアは以下で良いようです。

Description Filename Date Size
WZR-HP-G300NH2 Firmware - Webflash image for first installation buffalo_to_ddwrt_webflash-MULTI.bin 2013-04-19 17,95 MB
一応 MD5 チェックサム
$ md5sum buffalo_to_ddwrt_webflash-MULTI.bin
f42bded1f08c20abd8739cdec211cf18  buffalo_to_ddwrt_webflash-MULTI.bin

サイトにはこのファイルの MD5SUM も GPG シグネチャも掲載されておらず、 改竄が心配でないこともないですが、とりあえずこれでいきます。

WZR-300HP に DD-WRT ファームウェアをインストール

WZR-300HP を工場出荷状態に戻す
この時点ではまだ Buffalo の純正ファームウェアです。WZR-300HP の Web GUI で工場出荷状態に戻しました。
「管理設定」->「初期化/再起動」
  • 「設定初期化」ボタンをクリック
  • 「設定」ボタンをクリック
  • 表示どおり、140秒程度待って本体全面のランプが通常状態になるのを待ちました。
DD-WRT ファームウェアを Web GUI で WZR-300HP にアップロード

Web GUI の通常の「ファーム更新」のページでは DD-WRT のファームウェアを受付ないので Web GUI にデバッグモードのユーザー、パスワードでログインしました。

  • ユーザー: bufpy
  • パスワード: otdpopy +「admin」ユーザーのパスワード
「管理設定」の /cgi-bin/cgi?req=frm&frm=py-db/firmup.html をクリック
  • 「ファイル選択」をクリック
  • 先ほどダウンロードした buffalo_to_ddwrt_webflash-MULTI.bin を選択
  • 「同時に初期化する」にチェックを入れる
  • 「OK」をクリック
  • 「ファームウェア更新中です」の画面になりました。プログレスバーが 100% になるのを待ちます。
  • 「100% (complete)」となり、本体全面の LED は POWER ランプと WIRELESS ランプのみが緑色に点灯しています。
  • DD-WRT の Web GUI (初期設定では http://192.168.1.1/) に接続して、DD-WRT の GUI 画面になっていたら DD-WRT インストール成功です。
DD-WRT サイトのインストール手順に従いハードリセット
  • リセットボタンを押し続ける人と電源プラグの抜き差しをする人の二人で実施するとやりやすいです。
  • 電源が入っている状態で本体底面のリセットボタンを 30秒間押し続ける
  • リセットボタンを押し続けたまま本体の電源プラグを抜き、更にリセットボタンを 30秒間押し続ける
  • まだリセットボタンを押し続けたままの状態で電源プラグを差し、リセットボタンを最後の 30秒間押し続ける

DD-WRT 設定

Web GUI (初期設定では http://192.168.1.1/) に接続

最初にユーザー名とパスワードを設定

後は自分の好みにあわせて設定していきます。デフォルト設定では無線 LAN のセキュリティがかかっていないので早めにやっておいた方が良いです。