FreeBSD上で広く用いられている natd のインストール例を紹介します.
ソースアーカイブ名 導入環境 FreeBSD 3.0-RELEASE
natd のインストール
natdは標準でついてきていますが、最新のものを入手してmake するのもそんなに難しくないと思いますので、がんばってください。 詳しい内容はここでは割愛しますカーネルの再構築
natd を使うにはnatd 対応のカーネルが必要です。 再構築は以下の手順で行います。将来のバージョンでは、 標準カーネルで対応するかもしれないので必要なくなるかも しれませんが、一応手順を書きます。
- カーネルコンフィギュレーションを記述したファイルを作ります
- # cd /sys/i386/conf
- # cp GENERIC KTC
KTCとしている部分は、適当な名前をつけることができます。 その場合は以下の部分のKTCの部分を読み替えてください- ファイルKTCに以下の内容を追加します
options IPFIREWALL options IPDIVERT- カーネルコンフィギュレーションを行います
- # config KTC
- カーネルを作成します。
- # cd /sys/compile/KTC
- # make depend
- # make
- 新しいカーネルをインストールし、リブートします
ブート時のメッセージで次の内容が表示されることを確認してください。
- # cp /kernel /kernel.bak
- # make install
- # reboot
IP packet filtering initialized, divert enabled, logging disabled
設定ファイル
- /etc/natd.cf
- このファイルには、ポート番号などを指定できますが、 インストールされたものをそのまま用いることができると思います。 利用するネットワークカードのインターフェース名などを指定します。 インターフェースの指定は
interface ep0のようにします。このように設定すると、natdを経由して接続する場合、 外部からはep0に設定されているIPアドレスとの通信のように見えます
- /etc/services
- ここにはnatd のポート番号(8668,6668が標準のようです)などに指定します
- /usr/local/etc/rc.d/natd.sh
- ブート時に実行されるファイルです。以下のように設定すればよいでしょう。
#!/bin/sh # start up network address translation daemon (natd) /sbin/ipfw -f flush /sbin/ipfw add divert 6668 ip from any to any via ep0 /sbin/ipfw add pass all from any to any /usr/local/sbin/natd -f /etc/natd.cf; echo 'Network Address Translation Daemon (natd)';ここでep0となっているインターフェースは、マシンに合うように 変更する必要があります。さらに、このファイルは 実行可能のファイルモードにしてください。
運用に用いるコマンド ipfw
natd はデーモンとして動作し、アドレスの書き換えの仕事を行います。 この natd の動作を決定するルールを指定するのに使うのが ipfw コマンドです。
- すべてのルールを削除するには以下のコマンドを実行します
- # ipfw flush
- ルールにマッチしたすべての ip パケットを 6668ポートを使って ep0 経由で送り出します。 ipのところを tcpやudpとすることもできます。allとして場合は ipとした場合と同じです。
- # ipfw add divert 6668 ip from any to any via ep0
- すべてのマシンに対してサービスを行うには以下のようにします
allowのところをpass permit acceptと書いても同じです。 anyのところに192.168.1.0/24のように書いて、サービスする ホストを制限することもできます。
- % ipfw add allow all from any to any
「サーバの構築」のページへ戻る ホームへ戻る