DragonFly BSDでipfwとdivert socketを使えるようにする
1. カーネルを /usr 以下に展開する.ブートCDイメージの,/usr 以下にある,src-sys.tgzをコピーして展開するのが一番楽.
# cd /usr # tar xzfv src-sys.tgz # cd src
2. カーネルオプションに IPFIREWALL と IPDIVERT をつけ加えて.コンパイル.コンフィグはGENERICをコピーして,適当な名前にしておく(今回は GENERIC_IPFW とした).
# cd /usr/src/sys/config # cp GENERIC GENERIC_IPFW # vi GENERIC_IPFW
GENERIC_IPFWに
options IPFIREWALL options IPDIVERT
を追加.
お好みで,
options IPFIREWALL_VERBOSE # ファイアウォールのログを有効にする options IPFIREWALL_VERBOSE_LIMIT=100 # ログに上限を設ける options IPFIREWALL_DEFAULT_TO_ACCEPT # デフォルトをallow ip from any to anyにする
も追加.デフォルトでは deny ip from any to any となり,全てのパケットがフィルタされるので,IPFIREWALL_DEFAULT_TO_ACCEPT を付けておいた方がいいかも.
3. コンパイル
# cd /usr/src # make nativekernel KERNCONF=GENERIC_IPFW
4. インストール
# make installkernel KERNCONF=GENERIC_IPFW
5. 再起動
# reboot
6. 先に述べたようにデフォルトでは,deny ip from any to any なので,全てのパケットを通すように変更する.
# vi /etc/rc.conf
として,以下の行を追加
firewall_enable="YES" firewall_type="open"
7. 再起動して,ipfwの状態を見てみる.
# reboot ... # ipfw show 00100 12 1008 allow ip from any to any via lo0 00200 0 0 deny ip from any to 127.0.0.0/8 00300 0 0 deny ip from 127.0.0.0/8 to any 65000 14919 834003 allow ip from any to any 65535 6 641 deny ip from any to any