ipfw の設定をするときに、/etc/rc.conf に
firewall_enable="YES" firewall_type="/etc/ipfw.rules" firewall_flags="-p /usr/bin/m4"
こんな風に書いて置くと、ルールを /etc/ipfw.rules に
# IP addresses define(HOST_IPv4, `192.168.1.254') define(SUBNETv4, `192.168.1.0/24') # out -> in add 110 pass tcp from any to HOST_IPv4 80 setup # in -> out add 210 pass udp from SUBNETv4 to not SUBNETv4 53 keep-state add 220 pass tcp from SUBNETv4 to not SUBNETv4 setup
みたいに m4 を使って書くことができます。
マクロがつかえて非常に便利&見やすいので重宝するんですが、
/etc/rc.firewall の 1.49 ( 2006/10/28 20:08:12 ) の修正以降、先頭に
add 100 pass all from any to any via lo0 add 200 deny all from any to 127.0.0.0/8 add 300 deny ip from 127.0.0.0/8 to any
というゴミが混ざるようになりました。
ローカル用の設定なんですが、jail を組み合わせた構成の場合はちょっとよろしくないです。
そこで、m4 スクリプトの先頭に
define(SUBNETv4, `192.168.1.0/24') + # Flush default loop-back rules + -f flush # out -> in
と、フラッシュ命令で一度ルールをクリアします。