natdのインストール(FreeBSD-2.2.8)
natdがあるとこんな事ができます。
早速インストールです。
natdを持ってきます。
ftp://ftp.suutari.iki.fi/pub/natd/OLD 以下に有ります。
一番新しい物は natd_2.0b1.tar.gz でしたが、今回はnatd_1.9.tar.gzを使います。まずは持ってきたソースを展開します。
tar zxvf natd_1.9.tar.gz で
natd_1.9というディレクトリができるので
そのディレクトリ以下に移動しmake
make installおきまりの手順でインストールします。
インストールが終わったらカーネルのリコンパイル(再構築)
/usr/src/sys/i386/conf に移動し
cp GENELIC natproxy と元のカーネルをnat用にコピーしコピーしたカーネルをエディタ等で開き、最後の行に
options IPFIREWALL
options IPDIVERTを加えます。
保存しカーネルのリコンパイルをします。 カーネル再構築方法はこちらです。
# config natproxy
したあと
# cd /usr/src/sys/compile/natproxy に移動し
# make depend
# make
# make installで、カーネルのリコンパイルが終了します。
設定
その後 /etc/services の最後に
natd 6668/divert
を書き加えます。次に、/etc/rc.confの以下の部分を
firewall_enable="YES"
firewall_type="open"
gateway_enable="YES"のように修正し、/etc以下にnatd.cfを作ります。
先ほど展開した natd_1.9 以下にサンプルがあるのでそれを使います。
元のファイルは以下の部分が間違っていますので書き換えます。
same_port yes
を
same_ports yes
に。
さらに、
port 6668
に書き換え、
interface ed0
も書き換えます。(ed0は外向けのネットワークインタフェースになります。)
起動ファイル natd.shを作ります。
サンプルnatd.sh
#! /bin/sh
/sbin/ipfw -f flush
/sbin/ipfw add divert 6668 ip from any to any via ed0
/sbin/ipfw add pass all from any to any
/usr/local/sbin/natd -f /etc/natd.cf;
echo 'Network Address Translation Daemon (natd)';を/usr/local/etc/rc.d 以下におくことで起動時自動的にnatdが走ります。
natd.shのパーミッションを755にしてやり、再起動してみてください。
起動ログにエラーが出なければ立ち上がっているでしょう。サーバが立ち上がったら、ローカルのクライアントのdefault gatewayをnatdが走っている計算機に指定してやり、グローバルアドレスのサーバにpingをとばしてみると接続できるのが確認できます。 このままの設定ですべてのポートを通すような設定になっています。
多数のクライアントがWebを見に行ったりftpしてきたりするような状況がある場合はキャッシュのできるproxyサーバ(DeleGateとかSquid等)をたてて並行して使うのがよいと思います。