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:

Back to top