【CATV線でNAT BOXを作る】

前提環境:
 ケーブルモデムにはEthernetで接続し、IPが通る
 CATV局(ISP)側でMAC縛りを導入しておりNICを登録する必要がある
 登録しているMACとは違うNICでISPに接続する
 IPアドレスはDHCPで取得する
 NAT BOXのOSはFreeBSD 4.x系
 便宜上、WAN側NICはdc0、LAN側NICはdc1とする
 流すプロトコルはIPv4とする

LAN側NICの設定:
 以降の設定は外からtelnetした方が楽なので先にdc1を設定すると吉。
 インストール時にセットアップするか、/stand/sysinstall。

kernel再構築:
 FreeBSDでNATを利用するにはkernel再構築が必要。
 インストール時又は/stand/sysinstallからsrc/sysを展開しとく。
 /sys/i386/confに移動し、GENERICを適当な名前(便宜上NATBOX)でコピー。
 NATBOXし、以下の2行(*1)を適当な場所に挿入。
options IPFIREWALL #firewall
options IPDIVERT #divert sockets
 そうしたらば、config NATBOXする。
 でもって、指事通り../../compile/NATBOXに移動し、make depend、make。
 エラー無くmakeし終わったら、make installし再起動する。

/etc/rc.confの手動設定:
 以下は、/stand/sysinstallで生成できない部分なので手で編集する。
ifconfig_dc0="" #dc0はstart_if.dc0スクリプトで設定させる
firewall_enable="YES" #ipfwを使う
firewall_type="open" #ipfwのルールはrc.firewallのopenルールを使う
natd_enable="YES" #natdを使う
natd_interface="dc0" #WAN側NICにdc0を指定
natd_flags="-dynamic" #WAN側IP設定は動的である
gateway_enable="YES" #NIC間でIP転送を行う

/etc/start_if.dc0を作る:
 このファイルが、実は今回の肝。とりあえず以下参照。
ifconfig dc0 lladdr 00:00:f4:5a:8c:67
dhclient dc0
 MACアドレスは、当然ながらISPに登録してる番号を記述。
 登録してるNICをそのまま使う場合やMACが変更できるNICの場合はrc.confでdc0="DHCP"を宣言しても構わない。

←もどる


*1:LINTにサンプルがあるのでそこからコピーすると吉。