柳澤です。 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の共存は出来たと思うので、両方使ってみて しっくり来たものを残すというのも手ですね。