FreeBSD 5.3 で VLAN と FW と NAT
研究室の FireWall、ついに完全に死にました。
っていうか、金曜日の午前中には再起動で何とか生き返ったけど、夕方には完全に起動もしなくなったとかいう話。
んで、土曜日の夜11時半までかけて、同じラックに入っている FreeBSD 5.3 が動いているマシンを、FW の代わりに臨時で設定しました。
ということで、今後のために作業メモを残しておく。
その1 VLAN の設定
FireWall は、インターネット、DMZ、LAN の 3 つのポートが付いているんですが、FreeBSD マシンの NIC は 2 つ。仕方が無いので、1つをインターネット側の口にして、DMZ と LAN は tagged VLAN を使って 1 ポートで済ませることにする。
ということで、まずはネットワークスイッチの設定をしてから、FreeBSD のネットワークを設定。とはいっても、rc.conf に書くだけなんですけどね。
ifconfig_bge1="up" cloned_interface="vlan0 vlan1" ifconfig_vlan0="192.168.0.1 netmask 255.255.255.0 vlan 10 vlandev bge1" ifconfig_vlan1="192.168.1.1 netmask 255.255.255.0 vlan 20 vlandev bge1"
その2 NAT 用の alias を作る
研究室の FireWall は、LAN 内に smtp や pop、imap、web サーバが複数台ずついる関係で、4つほどアドレスを持ってました。ということで、インターネット側の LAN の口に、alias を使ってアドレスを複数割り当ててゆきます。
ifconfig_bge0="172.16.0.1 netmask 255.255.0.0" ifconfig_bge0_alias0="172.16.0.2 netmask 255.255.255.255" ifconfig_bge0_alias1="172.16.0.3 netmask 255.255.255.255" :
その3 ipfw と natd の設定
まずは、以下のオプションを付けてカーネルの作り直し。
options IPFIREWALL options IPDIVERT
それから rc.conf に、ipfw と natd の設定を書く。
gateway_enable="YES" firewall_enable="YES" firewall_type="open" natd_enable="YES" natd_interface="bge0" natd_flags="-f /etc/natd.conf"
firewall_type
は NAT を使うだけなら open にしておけばいい。自分で設定を書くなら、設定ファイルのファイル名を書く。
natd_interface
は、bge0 のようにインタフェース名を書けば natd の -interface
オプションに、IP アドレスを書けば -aliase_address
オプションに渡される。
natd_flags
で、/etc/natd.conf を読むように指定。ちなみに、natd.conf で interface や alias_address を書いてあっても、rc.conf に natd_interface
を書いておかないと、ipfw の設定がされないので NAT が利きません。ちょっとこれではまったよ〜 ;_;
natd.conf の書き方は man natd を見れば分かる。