ほっしーの技術ネタ備忘録

技術ネタの備忘録です。基本的に私が忘れないためのものです。他の人の役にも立つといいなぁ。

ipfw の設定を外部に書く時の注意点

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

と、フラッシュ命令で一度ルールをクリアします。