FreeBSDpf(4)で使用可能な指定した国のCIDR表現なテーブルを作成するためのスクリプトを作成したので,無保証公開しておく.

スプリクトが正常に動作しない場合1,全てのアクセスが拒絶されてしまう可能性があることや,ダウンロード元に迷惑をかけないようにするため,cronで自動化せず,1[回/月]程度,手動で実行・適用を行っている.

やっていることは,

  1. 以下の国別アドレス割当リストをダウンロードする.これらのリストは無保証で公開されている.
  2. 上記でダウンロードした国別アドレス割り当てリストから,スプリクト内で指定した国コードに該当するアドレス・ブロックを抜き出して,ファイルにそれぞれ出力する.

だけ.

使い方は,pf.conf(5) に,

(snip)
table <blacklist> persist file "/usr/local/etc/pf/blacklist_ipv4.cidr" file "/usr/local/etc/pf/blacklist_ipv6.cidr"
(snip)
block in quick on $ext_if from <blacklist> to any
(snip)

といった記述を追加する2


  1. エラー処理を全くしていないので… ↩︎

  2. ファイルの置き場所,$ext_ifなどは適宜現状に合わせる.もちろん,テーブルの再読み込みも必要. ↩︎