FreeBSDで pf(パケットフィルタ) を使えるようにする
pfとは
pf とは OpenBSD プロジェクトで作られたパケットフィルタリングシステムです。 pf を使う事で TCP/IP のトラフィックをフィルタリングしたりネットワークアドレス変換処理を行う事が出来るようになります。 FreeBSD で使えるようにするにはカーネルコンフィグに以下を追加してカーネルを作り直さなければなりません。
Kernel config add.
# Enabling Packet Filter(PF) device pf # Packet filter device pflog # Packet filter logging device pfsync # Packet filter state table logging # Enabling ALTQ (for Packet Filter(PF)) options ALTQ # Enable ALTQ. options ALTQ_CBQ # Build the ``Class Based Queuing'' discipline. options ALTQ_RED # Build the ``Random Early Detection'' extension. options ALTQ_RIO # Build ``Random Early Drop'' for input and output. options ALTQ_HFSC # Build the ``Hierarchical Packet Scheduler'' discipline. options ALTQ_CDNR # Build the traffic conditioner. options ALTQ_PRIQ # Build the ``Priority Queuing'' discipline. options ALTQ_NOPCC # Required if the TSC is unusable.
os 起動時に pf を起動する
/etc/rc.conf に以下を付け加える。
pf_enable="YES" pf_rules="/etc/pf.conf" pflog_enable="YES"
FreeBSD で pf を使用する場合は、/etc/pf.conf ファイルにフィルタリングルールを記述します。フィルタルールの書き方についてはこちらを参考にして下さい。
PF: Packet Filtering
http://www.openbsd.org/faq/pf/filter.html
日本語訳
http://gd.tuwien.ac.at/.vhost/www.openbsd.org/xxx/faq/pf/ja/index.html
pfctl コマンド一覧
pf 起動後の操作は pfctl プログラムで操作出来る
pfctl -f /etc/pf.conf # pf.conf ファイルを読み込みます pfctl -nf /etc/pf.conf # ファイルを解析しますが、読み込みません.記述構文に誤りがないかを確認する pfctl -Nf /etc/pf.conf # ファイルから NAT ルールだけを読み込みます pfctl -Rf /etc/pf.conf # ファイルからフィルタルールだけを読み込みます pfctl -sn # 現在の NAT ルールを表示します pfctl -sr # 現在のフィルタルールを表示します pfctl -ss # 現在の状態テーブルを表示します pfctl -si # フィルタの状態と計数を表示します pfctl -sa # 現在表示できるすべてのものを表示します pfctl -e # PFの有効化 pfctl -d # PFの無効化 # リアルタイムにログを確認(バイナリデータのためtcpdumpを利用する) tcpdump -n -e -ttt -i pflog0 # ログファイルの確認(バイナリデータのためtcpdumpを利用する) tcpdump -n -e -ttt -r /var/log/pflog
created: