2007年7月


番外編の今回は、前々から試してみたかったアレを試してみます。


その名もm0n0wall
FreeBSDをベースに作られた、FireWall機能に特化したアプライアンスディストリビューションです。


もともと、組み込み型のFireWallを作ろうとして出来上がった物なので、配布形式もコンパクトフラッシュへのディスクイメージだったりとか、あるいはそれ専用に作られた機器に特化した形式だったりします。

後者はもはや趣としてはファームウェアの域です。



さてそのm0n0wallですが、今回評価の対象としたのは2007年7月時点での最新版であるVersion1.231。
機能としてはごく当たり前のパケットフィルタリングやNAT機能に加え、

  • トラフィックシェーパー(帯域制限)
  • 無線LANサポート
  • 802.1q TagVLANサポート
  • IPSEC/PPTP VPN(RADIUS認証サポート)
  • ダイナミックDNSクライアント機能
  • WOL(Wakeup on LAN)機能
  • Captive Portal(webブラウザによる認証後にLANが使えるようになる)機能
  • DNSリレー/キャッシュ機能(dnsmasq使用なので簡易DNS機能もあり)
  • syslogロギング機能
  • SNMPエージェント機能


という、なかなか楽しげな機能が備わっています。

特にトラフィックシェーパーやCaptive Portal機能なんかは、二桁万円台のFireWallでは機能として持ってるかどうか?という機能です。後者なんかは特にそうではないかなと。

DynamicDNSクライアント機能なんて、逆に本職のFireWallアプライアンス機には機能自体が無いかもしれませんね。



最近はご家庭向けのブロードバンドルーターでも、ちょっと気の利いたものだと、無線LANのアクセスポイント機能に加えて、PPTP VPNやWOL、簡易DNS、ダイナミックDNSクライアント機能が乗っているものもあるので、それらブロバンルータと本格的なFireWallとの中間に位置するのがこのm0n0wallだと捉えることもできます。


というか、最近のブロバンルータは、フタを開けてみるとBSDやLinux系OSの上に各種フリーウェア類を乗っけて、それにwebの設定画面をくっつけたという、まさにm0n0wallのような状態なので、そう言う意味だと、そういった「実はUNIX動いてますブロバンルータ」の直系の兄貴分といった感じになりますかね。




毎度の事ながら講釈が長くなりました。
早速使ってみることにしましょう。



今回m0n0wallを稼働させる母体となるのは、前回話題に上げたNetshelter/FWを使います。
こいつはCFスロットが付いている上に、本体背面のスイッチをカチっとやるだけでブートデバイスを内蔵HDDからCFへ切り替えることができるスグレモノなので、今回のようなケースには最適です。




■CFカードへのディスクイメージ書き込み


まずはディスクイメージのダウンロード。
専用機器をターゲットにした物含め、イメージファイルがいくつか用意されていますが、今回は普通のPCからのCFブートなので、generic-pc 用として用意されているイメージファイルをダウンロードして使用します。

CD-ROMブート用のイメージファイルもありますね。
手軽に試したい場合はこちらも使えるかも知れません(コンフィグの保存はフロッピーディスクに保存するようです)


ダウンロードしたら、そいつを手持ちのCFカードへ書き込みます。
CFカードの容量は8MBもあれば十分です。


書き込み方は、Windowsマシンからの場合は、イメージファイルと同じ所に置いてある physdiskwrite というソフトを使って書き込む方法と、手持ちのPC-UNIXマシンがある場合は dd で書き込む方法の二種類があるようです。

今回は、手持ちのFreeBSD6.2R環境からUSBカードリーダー経由で書き込んでみました。
PC-UNIX環境が無い場合は、上記のphysdiskwriteやknoppix等のCDブートLinuxから書き込んでみましょう。



さて、用意したCFカード(45MB)をUSBカードリーダへ装着し、カードリーダをUSB接続。
すると、以下のように /dev/da0 として認識されました。
linuxの場合だと /dev/sdX とかで認識されると思います。

    umass0: GENERIC USB Storage Device, rev 2.00/1.8a, addr 2 da0 at umass-sim0 bus 0 target 0 lun 0 da0: Removable Direct Access SCSI-0 device da0: 1.000MB/s transfers da0: 45MB (93952 512 byte sectors: 64H 32S/T 45C) da1 at umass-sim0 bus 0 target 0 lun 1 da1: Removable Direct Access SCSI-0 device da1: 1.000MB/s transfers da1: Attempt to query device size failed: NOT READY, Medium not present da2 at umass-sim0 bus 0 target 0 lun 2 da2: Removable Direct Access SCSI-0 device da2: 1.000MB/s transfers da2: Attempt to query device size failed: NOT READY, Medium not present da3 at umass-sim0 bus 0 target 0 lun 3 da3: Removable Direct Access SCSI-0 device da3: 1.000MB/s transfers da3: Attempt to query device size failed: NOT READY, Medium not present


ダウンロードしたディスクイメージファイルを dd で書き込んでいきます。

    # gzcat generic-pc-1.231.img | dd of=/dev/da0 bs=16k


書き込みが完了したら、正常に書き込めたか、試しにマウントしてみましょう。

    # mount /dev/da0a /mnt # df -k /mnt Filesystem 1024-blocks Used Avail Capacity Mounted on /dev/da0a 6911 5592 1319 81% /mnt


マウントついでに、ちょっと中身を覗いてみましょうか。

    # cd /mnt # ls boot/ conf/ kernel.gz* mfsroot.gz # find . . ./boot ./boot/loader.rc ./boot/loader ./mfsroot.gz ./kernel.gz ./conf ./conf/config.xml


とても単純ですね。
カーネルファイルとルートファイルシステム、あとはブートストラップローダーとその設定ファイル、それから、m0n0wall自体の設定ファイル(config.xml)だけが入っています。


書き込み自体は特に問題なく行けてるっぽいですね。
umountして、カードリーダーを取り外し、書き込み終了です。




■ブートと初期設定


さていよいよお待ちかねのCFブート&初期設定です。
NetShelter/FWでのCFブートを例に挙げていますが、普通のPCでもCF→IDE変換基板を経由してあげれば、手順としてはHDDからの起動と同様です。
(最近はSD→IDE変換基板なんてものもあるので、携帯やデジカメにおまけで付いてくる小容量のSDやminiSDカードが余ってるようならそいつを使うってのも面白いですね)



さてNetShelter/FWの場合です。

本体背面にある、わざわざ「BOOT」とか書いてある、あからさまに怪しげなスイッチを "C" の位置へ移動させ、


先程書き込んだCFカードをCFスロットへ装着し、


シリアルポートにシリアルクロスケーブルを接続し、Tera Term Proを起動したら、いざ電源ON!


うまくいくと....


こんな風にデロデロとブートメッセージを拝むことができます。
一通りのブートシーケンスが完了すると、初期セットアップのメニューが出てきます。



初期状態ではLAN側、WAN側共にsisチップのNICを使用するような決め打ちセッティングになっているので、何はともあれ、まずはNICデバイス名を変えてあげます。



今回はfxp0をLAN側、fxp1をWAN側にしてみました。
オンボードLANが3つあるので、残りの1つをOptionalポートに割り当てることもできるのですが、ひとまず今回はそのままにしておきます。
LAN側のIPアドレスを変更したい場合は一緒にやってしまってもよいでしょう。

なお、NICの追加削除やVLANデバイスの割り当てについては、このメニューからだけではなく、webコンソール画面からも設定することができますので、後で気が変わっても大丈夫。


設定が完了したら一旦再起動されます。


再起動完了後、LAN側のネットワークからwebコンソールへ接続し、以下のようなwebコンソール画面が表示されれば初期セットアップはひとまず完了です(Basic認証の初期ID/Passwordは admin/mono)。



いよいよ次からは本格的なセットアップを行っていきますが、ちょっとここで一区切り。
次回に続きます。




おっかしぃなぁ...こんなに引っ張るつもりは全くなかったんだけど....




■Tips & Trics

ここまでの手順でのTips&Trics。


1. シリアルコンソールに何も出てこない!

    モニタとキーボードが接続されているマシンの場合は、シリアルコンソールではなくモニタとキーボードを使って設定してくださいな。

    今回のようにキーボードが接続されていない機器の場合は、CFカードのルートディレクトリに "-P" とだけ書かれた boot.config ファイルを置いておくことで、起動時にキーボードの有無をチェックし、キーボードが無ければシリアルポートをコンソールとして使用するようになります。

    boot.config ファイルの中身は、本当に "-P" だけですよ。

      # cat boot.config -P


2. NICデバイス名をシリアルコンソールでいちいち指定するのが面倒

    IPアドレスやNICデバイス名の設定は、 /conf/config.xml に格納されている。
    デフォルトのファイルを見れば変更箇所はすぐ分かるので、CFカードをマウントしてvi等のエディタで開いて書き換えておけばOK。

    なお、デフォルトではLAN側にはIPアドレスが設定されており、WAN側はDHCPでアドレスを取る事になっているけど、NICデバイスがsis0とsis1に決め打ちになっているので、sisカードを搭載していない場合は、上にも書いたとおりただ繋げただけでは通信不能。

    シリアルコンソールで設定するならいいけど、使用するデバイス名が分かってるような場合は事前にconfig.xmlを編集しておくと手間が減って吉です。




なうなう一覧へ