前に述べたDHCPでは、DHCPサーバはDHCPクライアントにプライベートなIPアド レス(192.168.1.11〜192.168.1.17)を割り当てるように設定しました。 この場合、DHCPクライアントはLAN内ではネットワークを使用することはでき ますが、プライベートアドレスを割り当てられるためインターネットに接 続することばできません。DHCPクライアントがインターネットに接続でき るようにするためには、DHCPクライアントが割り当てられるプライベート アドレスと、DHCPサーバに既に割り当てられているグローバルアドレスと を、相互に変換する必要があります。このような機能のことを NAT(Network Address Translator)と呼びます。
サーバマシンの用意
ここでは、DHCPサーバにNATの機能を持たせる設定を行います。従って、 先程DHCPサーバの設定を行った pfuna03(FreeBSD-2.2.8R)を使用します。 FreeBSDではLinuxのようにIP masaueradeといった機能が無いため、ここで はIP Filterを使用します。サーバマシンにはネットワークカードが2枚搭 載されている必要があります。DHCPサーバの設定のときにネットワークカー ドを増設したため、以下のようなネットワークカードが搭載されています。ドライバ IP アドレス ネットマスク ed0 133.28.116.169 255.255.255.0 (グローバルアドレス) ed1 192.168.1.1 255.255.255.0 (プライベートアドレス)IP Filterのインストール
IP Filter の最新版を以下のところから持ってきます。
http://cheops.anu.edu.au/~avalon/ip-filter.html
現時点で最新版の ip-fil3.2.10.tar.gz をダウンロードしました。ダウンロードしたip-fil3.2.10.tar.gzを展開します。
% tar xvfz ip-fil3.2.10.tar.gz展開すると ip_fil3.2.10 というディレクトリにファイルが展開されます。カーネルの再構築を行う準備をします。/sys/i386/conf に移動し、 PFUNA(現在動いているカーネルのコンフィグレーションファイル)を IPFILTER という名前でコピーします。
% cd /sys/i386/conf % su Password: # cp PFUNA IPFILTER次に、このカーネルコンフィグレーションファイルを編集します。# vi IPFILTER 変更前 21> ident PFUNA 変更後 21> ident IPFILTER先程、展開されたディレクトリ ip-fil3.2.10 に移動し、 INST.FreeBSD-2.2 に従ってインストールを行います。
% cd $DIR/ip_fil3.2.10 % su Password: # make freebsd22 IPFILKERN=IPFILTER IPFILTER とは先程、コピーして作成したカーネルコンフィグレーションファイルの名前です。 # make install-bsd # FreeBSD-2.2/minstall次にカーネルの再構築を行います。# cd /sys/i386/conf # config IPFILTER # cd ../../compile/IPFILTER # make depend # make # make install # reboot環境設定
以上で設定は終了です。再起動して、DHCPクライアントがインターネット に接続できれば成功です。
作成されたロードモジュールが起動することを確認します。
% su Password: # modload /lkm/if_ipl.oいくつかのメッセージが表示されますが、エラーの表示がされていなけれ ばOKです。NATとして機能させるための設定ファイルを記述します。ここで、 DHCPサーバから割り当てられるプライベートアドレスは、 192.168.1.11 〜 192.168.1.17 ですが、簡単のため、以下のように表記 します。
192.168.1.0/24 (192.168.1.1 〜 192.168.1.254)また、NATを機能させるサーバでは、前にも述べたように、ドライバ IP アドレス ネットマスク ed0 133.28.116.169 255.255.255.0 (グローバルアドレス) ed1 192.168.1.1 255.255.255.0 (プライベートアドレス)のように IP アドレスが割り当てられています。
即ち、プライベートアドレスである 192.168.1.0/24 のクライアントが、 外部(インターネット)にでる場合、サーバによりクライアントのIP アドレスが、グローバルアドレスである 133.28.116.169 に変換されて外 部に発信されます。
以上のような設定を行うため、/etc/natrules に以下の内容を記述します。# vi /etc/natrules 1行で記述します map ed0 192.168.1.0/24 -> 133.28.116.169/32 portmap tcp/udp 10000:65000これは ed0 のネットワークカードを使って、192.168.1.0/24 に属するク ライアントからのパケットをすべて、133.28.116.169 に変換して発信す るという意味です。FreeBSD の起動ファイルを編集します。まず、/etc/rc.local ファ イルに以下の内容を追加します。
# # Starting IPFILTER # modload /lkm/if_ipl.o ipnat -f /etc/natrules sysctl -w net.inet.ip.forwarding=1また、/etc/rc.conf ファイルにNAT用の静的経路を記述します。static_routes="nat" # Set to static route list (or leave empty). route_nat="192.168.1.0 -netmask 0xffffff00 -interface 192.168.1.1"念のため、/etc/rc.conf ファイルのネットワークカードの記述が以下の ようになっているか確認します。network_interfaces="ed0 ed1 lo0" # List of network interfaces (lo0 is loopback). ifconfig_ed0="inet 133.28.116.169 netmask 255.255.255.0" ifconfig_ed1="inet 192.168.1.1 netmask 255.255.255.0"