柳澤です。

masaya nakamura さんは書きました:
> どちらの方法を使用したらいいのか、あるいは大した違いは無いのか。
> カーネルの再構築は必要なのかどうなのか。

FreeBSDでパケットフィルタリングをする選択肢としては、
ipfw、IPFilter (ipf)、pfの3種類があります。
いずれもカーネルモジュールとして追加できますので、
再コンパイルは不要です。歴史はipfwが一番古く、
一番枯れた技術といえるでしょう。ipfilterはその次に古く、
pfは最近のパケットフィルタリングソフトです。

自分のお勧めはpfです。自分が使ったことがあるのは
IPv6対応する前のipfwと最近のpfですが、両者を比較すると
pfはフィルタリングされるパターンもわかりやすく、
直感的な略記ルールやマクロを使うことができます。
また、記述しやすさの他に、NATやMSSの変更もカーネル内部で
やってくれます。さらに、AltQやCARPなど機能も豊富です。

pfは速度とわかりやすさを実現するために、
ipfwに比べて不便なことがいくつかあります。
ipfwと比べた難点は、ログがバイナリ形式であるため、
テキスト処理する場合にtcpdumpで変換する必要があることです。
また、divert機能が無いので、ルーターを通るネットワークパケットを
操作するプログラムをユーザーが簡単に書くことが出来ません。
(pfil_hook使って書けばいいじゃない?という気はしますが)
あと、NAT前とNAT後の両方で何かのルールを適用したい場合も、
pfでは行えません。NAT後しかルールを書けませんので。

ipfwとpfの共存は出来たと思うので、両方使ってみて
しっくり来たものを残すというのも手ですね。

メールによる返信