2026-05-01
思い違いをしていて、/usr/local/etc/rc.shutdown は実行されない場合がある。なので /etc/rc.shutdown.local へ移動する。
2026-04-30
まだ書いてなかったなと思い出して作成
https://docs.freebsd.org/en/books/handbook/firewalls/index.html#firewalls-ipfw
日本語の記述はまだない模様です。
設定後はFreeBSDのIPFW2を使う 運用編を参照してください。
これは
際の設定例です。
/etc/rc.confに以下の2行を追加してIPFW2を有効にする。firewall_type=“open”はフルオープン状態の定義を指定している。
firewall_enable="YES" firewall_type="open"
追加したらOSを再起動する。IPFW2が有効な状態で起動される。
rootにスイッチして現在の定義を確認する。その後この内容をカスタムスクリプトになる /etc/ipfw.rules に書き出す。
root@bsdgate:~ # ipfw list 00100 allow ip from any to any via lo0 00200 deny ip from any to 127.0.0.0/8 00300 deny ip from 127.0.0.0/8 to any 00400 deny ip from any to ::1 00500 deny ip from ::1 to any 00600 allow ipv6-icmp from :: to ff02::/16 00700 allow ipv6-icmp from fe80::/10 to fe80::/10 00800 allow ipv6-icmp from fe80::/10 to ff02::/16 00900 allow ipv6-icmp from any to any icmp6types 1 01000 allow ipv6-icmp from any to any icmp6types 2,135,136 65000 allow ip from any to any 65535 count ip from any to any not // orphaned dynamic states counter 65535 deny ip from any to any root@bsdgate:~ # ipfw list > /etc/ipfw.rules
取得した /etc/ipfw.rules をテキストエディタで開いて、置換をかける。この例だと、行頭に“${fwcmd} add “を付与している。
${fwcmd} add 00100 allow ip from any to any via lo0
${fwcmd} add 00200 deny ip from any to 127.0.0.0/8
${fwcmd} add 00300 deny ip from 127.0.0.0/8 to any
${fwcmd} add 00400 deny ip from any to ::1
${fwcmd} add 00500 deny ip from ::1 to any
${fwcmd} add 00600 allow ipv6-icmp from :: to ff02::/16
${fwcmd} add 00700 allow ipv6-icmp from fe80::/10 to fe80::/10
${fwcmd} add 00800 allow ipv6-icmp from fe80::/10 to ff02::/16
${fwcmd} add 00900 allow ipv6-icmp from any to any icmp6types 1
${fwcmd} add 01000 allow ipv6-icmp from any to any icmp6types 2,135,136
${fwcmd} add 65000 allow ip from any to any
${fwcmd} add 65535 count ip from any to any not // orphaned dynamic states counter
${fwcmd} add 65535 deny ip from any to any
更に追加修正する。以下の例は、
する処理を実施したもの。
#!/bin/sh
fwcmd="/sbin/ipfw"
xargscmd="/usr/bin/xargs"
${fwcmd} -q flush
${fwcmd} -q table 80 create type addr
${fwcmd} table 80 flush
${xargscmd} ${fwcmd} table 80 add < /etc/ipfw.table80
${fwcmd} add 00100 allow ip from any to any via lo0
${fwcmd} add 00200 deny ip from any to 127.0.0.0/8
${fwcmd} add 00300 deny ip from 127.0.0.0/8 to any
${fwcmd} add 00400 deny ip from any to ::1
${fwcmd} add 00500 deny ip from ::1 to any
${fwcmd} add 00600 allow ipv6-icmp from :: to ff02::/16
${fwcmd} add 00700 allow ipv6-icmp from fe80::/10 to fe80::/10
${fwcmd} add 00800 allow ipv6-icmp from fe80::/10 to ff02::/16
${fwcmd} add 00900 allow ipv6-icmp from any to any icmp6types 1
${fwcmd} add 01000 allow ipv6-icmp from any to any icmp6types 2,135,136
${fwcmd} add 02000 deny ip from "table(80)" to any
${fwcmd} add 65000 allow ip from any to any
${fwcmd} add 65535 count ip from any to any not // orphaned dynamic states counter
${fwcmd} add 65535 deny ip from any to any
作ったカスタムスクリプト /etc/ipfw.rules に権限設定する。
root@bsdgate:~ # ls -l /etc/ipfw* -rwxr-xr-x 1 root wheel 998 Apr 30 09:46 /etc/ipfw.rules root@bsdgate:~ # chmod 744 /etc/ipfw.rules root@bsdgate:~ # ls -l /etc/ipfw* -rwxr--r-- 1 root wheel 998 Apr 30 09:46 /etc/ipfw.rules root@bsdgate:~ #
テーブル80に読み込む初期ファイル /etc/ipfw.table80 を作成する。
root@bsdgate:~ # ls -l /etc/ipfw* -rwxr--r-- 1 root wheel 998 Apr 30 09:46 /etc/ipfw.rules root@bsdgate:~ # touch /etc/ipfw.table80 root@bsdgate:~ # ls -l /etc/ipfw* -rwxr--r-- 1 root wheel 998 Apr 30 09:46 /etc/ipfw.rules -rw-r--r-- 1 root wheel 0 Apr 30 09:56 /etc/ipfw.table80 root@bsdgate:~ #
/etc/rc.confに以下の1行を追加する。カスタムスクリプト /etc/ipfw.rules が実行されるようになる。
firewall_script="/etc/ipfw.rules"
追加したらOSを再起動して定義が反映された事を確認する。
root@bsdgate:~ # ipfw list 00100 allow ip from any to any via lo0 00200 deny ip from any to 127.0.0.0/8 00300 deny ip from 127.0.0.0/8 to any 00400 deny ip from any to ::1 00500 deny ip from ::1 to any 00600 allow ipv6-icmp from :: to ff02::/16 00700 allow ipv6-icmp from fe80::/10 to fe80::/10 00800 allow ipv6-icmp from fe80::/10 to ff02::/16 00900 allow ipv6-icmp from any to any icmp6types 1 01000 allow ipv6-icmp from any to any icmp6types 2,135,136 02000 deny ip from table(80) to any 65000 allow ip from any to any 65535 count ip from any to any not // orphaned dynamic states counter 65535 deny ip from any to any root@bsdgate:~ #
OSを再起動/シャットダウンするとテーブル80に登録した内容が消えてしまうので、/etc/rc.shutdown.local に /etc/ipfw.table80 の保存処理を記述する。
#!/bin/sh
fwcmd="/sbin/ipfw"
TABLE_FILE="/etc/ipfw.table80"
${fwcmd} table 80 list > ${TABLE_FILE}
作った /etc/rc.shutdown.local に権限設定する。
root@bsdgate:~ # chmod 744 /etc/rc.shutdown.local root@bsdgate:~ # ls -l /etc/rc.shutdown.local -rwxr--r-- 1 root wheel 101 Apr 30 06:55 /etc/rc.shutdown.local root@bsdgate:~ #
確認のため、ダミーのIPアドレスをテーブル80に登録してからOSを再起動する。
root@bsdgate:~ # ipfw table 80 add 192.168.0.0 added: 192.168.0.0/32 0 root@bsdgate:~ # ipfw table 80 list 192.168.0.0/32 0 root@bsdgate:~ # reboot
再起動後、テーブル80が復元されていることを確認する。
root@bsdgate:~ # ipfw table 80 list 192.168.0.0/32 0 root@bsdgate:~ # reboot