Gentoo Network APpliance User Guide
1.
なぜGNAP?
名称
GNAPとは、Gentoo Network APplianceの頭字語です。
その必要性
GNAPは、完全なインストールをする必要のない内部ルータやファイヤウォールなど、古いPCをベースにしたネットワーク装置を立ち上げる必要性から生まれました。
わたしは、壊れそうな部品を載せた何台もの古いPCを持っており、故障した場合は簡単に交換できるようにしたいのです。
経験上、設定済みの取り外し可能なメディアが一番柔軟性がある方法です。
PCが故障したときは、その設定済みのメディアを別の装置に載せるだけでいいのです。
わたしはFDへのインストールを基本としたファイアウォール機能を持つLEAF Bering-uClibcから使い始めましたが、メディアの脆さ、フロッピーの自動作成の難しさ、拡張性のなさといった問題ですぐに私の中の評価は下がりました。
わたしはウェブインタフェースでISOイメージが自動生成可能なCDへのインストールに設定されたLEAF Bering-uClibcに切り替えました。
これは、ほとんどの問題を解決しましたが、拡張性に問題が残りましたし、ウェブアプリをメンテするとという作業が悪夢になりつつありました。
わたしは、ようやくGentoo Catalystを活用することに決めました。
Gentoo CatalystはカスタムLiveCDを作成することができ、拡張性の問題と標準的でない保守作業の両方の問題を解決することができます。
考え方としては、一度作成したら何処でも使用可能な一般的な最小限のLiveCDコアを作成し、装置の用途に応じてカスタマイズした特別な設定で上書きをしたCDを作成することです。
これでCD作成を簡単にして、特別なLiveCDをカスタマイズするための、すべてのCatalyst手順を実行する必要がありません。
2.
GNAPを使ってカスタムネットワーク装置LiveCDを作成する方法
要件
GNAP ToolsとGNAP Core tarball、そしてapp-cdr/cdrtoolsパッケージが必要なだけです。
カスタムGNAP LiveCDを作成するためにrootである必要はありません。
どのように動作するのか?
gnap_overlayスクリプトはGNAPコアtarballと一つかそれ以上の上書き用のソース(ディレクトリかconfletファイル)を使用して、ブータブルLiveCD ISOファイルか取り外し可能なディスクデバイスにブータブルファイルシステムを作成します。
注意:
訳注: 後で説明が出てきますが、confletはディレクトリを含むtar.bz2ファイルのことです。
|
図 2.1: gnap_overlayがどのようにして動作するか |
 |
overlay.confファイル
overlay.confファイルは一般的なカスタマイズオプションを設定します。
overlay.confは、上書きソース(etc/overlay.confとして)に必ず用意するか、-cパラメータで直接指定します。
このファイルのなかで、ローカライゼーションとカスタムLiveCD上で、どの機能を有効にするか決定します。
| オプション |
値 |
Default |
| TIMEZONE |
uclibc準拠 timezone code |
empty (UTC) |
| KEYMAP |
端末キーマップ値、例: fr
|
us |
| NBCARDS |
起動させたい接続されたネットワークカードの数 |
1 |
| IP_RELAY |
IPリレーを起動時に有効にするか? |
no |
| NET_CONFIG |
ネットワークはファイルにて設定されているか、それともDHCPか? 例: dhcp
|
static |
| USE_PPPOE |
yes設定で起動時にrp-ppoeデーモンを起動する。 |
no (起動しない) |
| USE_SSH |
yes設定で起動時にOpenSSHデーモンを起動する。 鍵が生成されていなければ、起動時に生成されます。 |
no (起動しない) |
| USE_FW |
yes設定で起動時にファイアウォールスクリプトを起動する。
FW_TYPEオプションをみてください。
defaultでないオプションを設定するにはetc/shorewallかetc/fireholディレクトリに上書きファイルをおいてください。
|
no (起動しない) |
| FW_TYPE |
あなたが使用したいファイアウォールの種類によってshorewallかfireholを設定してください。 |
shorewall |
| USE_TC |
yesを設定して起動時にトラフィックコントロールのスクリプトを起動する。
TC_TYPEオプションをみてください。 使用する設定ファイルをetc/cbqinitかetc/htbinitに上書きしてください。
|
no (起動しない) |
| TC_TYPE |
あなたが使用するトラフィックコントロールの種類によってcbqinitかhtbinitを設定してくださ。
|
cbqinit |
| USE_VPN |
yesを設定して起動時にOpenVPNデーモンを起動します。
使用するOpenVPN設定ファイルをetc/openvpnに上書きしてください。
|
no (起動しない) |
| USE_DNSDHCP |
yesを設定して起動時にDNSMasqデーモンを起動します。
使用するDNSMasq設定ファイルをetc/dnsmasq.confに上書きしてください。
|
no (起動しない) |
| USE_HTTP |
yesを設定して起動時にBoaデーモンを起動します。
使用するBoa設定ファイルをetc/boaディレクトリに上書きしてください。
|
no (起動しない) |
| NTPSERVER |
時刻同期先のNTPサーバの名前 |
empty (NTPを使って時刻同期を行わない) |
オーバーレイソース
バージョン1.3から、複数の上書きソースを指定することが可能になりました(-oオプション)。
上書きソースは、ディレクトリもしくはディレクトリを含むtar.bz2ファイル(confletと呼びます)のどちらかです。
上書きディレクトリとconfletは起動直後のLiveCDルートファイルシステムのdefaultファイルを置き換えるファイルを含んでいます。
主に置き換えられるファイルには、ホストネームを設定するetc/conf.d/hostname、ルートパスワードを設定するetc/shadowやネットワーク情報を設定するetc/conf.d/netが含まれます。
注意:
GNAPツールのexamples/サブディレクトリには、様々な目的のための典型的な上書きディレクトリとconflet例を見つけることができます。
|
注意:
GNAP上書きスクリプトはCVSサブディレクトリを無視します。
これは必要のないものをGNAPシステムに取り入れることなくあなたの上書きファイルをCVSを使って簡単にバージョン管理を行うためです。
|
生成とCDの作成
gnap-toolsパッケージのgnap_overlayスクリプトを使ってください。
たとえば、gnap-core-1.3.tar GNAPコアとoverlays/myfirewall上書きディレクトリを使ってmyfirewall.iso LiveCDを作成します。
コード表示 2.1: gnap_overlay使用例 |
$ ./gnap_overlay -i myfirewall.iso -g gnap-core-1.3.tar -o overlays/myfirewall
|
注意:
この例では、etc/overlay.confがoverlays/myfirewallディレクトリにあるべきです。
または、-cオプションを使って、特定のoverlay.confを指定してください。
|
次にISOファイルをメディア(CD-RWを推奨します)に記録しテストます。
生成、ハードディスクやCFに記録する
gnap-toolsパッケージのgnap_overlayスクリプトは、GNAP設定が書き込まれた起動可能なハードディスクを作成するのにも使われます。
ハードディスクだけでなく、DiskOnModuleやCFカードにも書き込むことが可能です。
まず、対象のメディアが正常に設定されている必要があります。
Master Boot Record(MBR)をインストールする必要があります。
コード表示 2.2: /dev/sdaデバイスにMBRを作成する |
# dd if=mbr/mbr.bin of=/dev/sda bs=512 count=1
|
fdiskを使用して有効なパーティションをデバイス上に作成する必要があります。
そして、-dオプションを使用してgnap_overlayを呼び出してディスクに書き込みます(rootである必要があります)。
デバイスを書き込むホスト上での、書き込み先のパーティション名を知っておく必要があります。
またデバイス上でブートする(-r)GNAPシステムから見えるパーティション名も知っておく必要があります。
たとえば、CFカードは/dev/sdb1ですがSoekrisシステムでは/dev/hda1になります。
コード表示 2.3: GNAPをディスクに書き込む |
# ./gnap_overlay -d /dev/sda1 -g gnap-core-1.3.tar -o overlays/myfirewall -r hda1 -m
|
注意:
複数の読み込みアクセスによるデバイスの疲弊をさけるために-mを使ってGNAPに起動後に、squashfsファイルシステムをキャッシュすることも可能です。
|
3.
GNAPコアをどうやって再構築するか
警告:
GNAPコアの内容を変更(または最近のPortageスナップショットで標準コアを再構築)したいと考える上級者のみが本章を読むべきでしょう。
コアの再構築は時間がかかる上に最近追加されたパッケージのバージョンによって引き起こされた問題に対応する必要が出てきます。
|
前提条件
GNAPコアを構築するために、root権限が必要です。 これはCatalystを使用するためです。
次のパッケージもインストールされている必要があります。
- dev-util/catalyst (1.1.8でテストされています)
- sys-fs/squashfs-tools (2.0でテストされています)
最後にシードステージとしてuclibc/hardened stage2 tarballが必要です。
現在は、stage2-x86-uclibc-hardened-2004.3.tar.bz2となっており、ここでダウンロード可能です。
最初からGNAPコアを構築する
現在のバージョンのGNAPに使われるgnap_makeビルドスクリプト、Catalyst設定ファイル、Portage設定、カーネル設定がGNAP Sourcesに含まれています。
-sパラメータを使用してstage2 tarballシード指定し、-eパラメータでスペックディレクトリのフルパスを指定し、gnap_makeを走らせてCatalyst stageとtarballの生成を行います(-t all)。
コード表示 3.1: 新しいGNAPコアtarballを1ステップで構築する |
# ./gnap_make -t all -s ../stage2-x86-uclibc-hardened-2004.3.tar.bz2 -e /root/gnap-1.5/specs
|
これを終了するためには、非常に長い時間がかかります。
現在の日付がバージョンになっているGNAPコアtarballができあがるはずです。
もし以前に構築されたPortage snapshot(か公式ダウンロード版)を再利用したい場合は、portage-YYYYMMDD.tar.bz2ファイルを/var/tmp/catalyst/snapshotsサブディレクトリにコピーして、-pオプションを指定します。
コード表示 3.2: 20040101 snapshotから構築する |
# ./gnap_make -t all -s ../stage2-x86-uclibc-hardened-2004.3.tar.bz2 -p 20040401 -e /root/gnap-1.5/specs
|
もし失敗した場合や最後の段階を再度実行したい場合は、どのCatalystステージを呼び出すかgnap_makeで指定したいはずです。。
これは、次のパラメータを使用することで可能です。
再利用するGNAPタイムスタンプバージョン(-v)、stage名(snapshot, stage3, livecd-stage1,livecd-stage2)もしくは対象となる特別な(最終的にGNAPコアtarballになる)tarball(-t)。
コード表示 3.3: 構築済み20041008 Portage snapshotを使用して二つの20041012 GNAPビルドを呼び出す |
# ./gnap_make -p 20041008 -v 20041012 -t livecd-stage2 -t tarball -e /root/gnap-1.5/specs
|
GNAPコアをカスタマイズする
GNAPコアのカーネルソースを変更したくなるかもしれません(設定済みのソースがPortageにない場合は変更は必須になるでしょう)。
specs/common.confファイルを編集して正しいソース名を指定し、specs/kernel.configのカーネル設定ファイルを変更して使用してください。
specs/common.confファイルを編集することで、GNAPコアを構築するために使われているsubarchとprofileを変更することも可能です。
デフォルトでは、x86 subarchとuclibc/x86/hardened profileが使われています。
新しいソフトウェアパッケージを追加するときは、specs/packages.confファイルに追加してください。
defaultで新しいデーモンを開始するには、specs/livecd.confファイルのlivecd/rcaddに追加してください。
このドキュメントの内容は、他のものが明示されない限りは、
CC-BY-SA-2.5ライセンスです。
Gentoo Name and Logo Usage Guidelines (日本語訳)が適用されます。
|