柳澤です。 YAMANEKO/Mao さんは書きました: > たびたびお世話になります、もりもとです > > DNSサーバにおいて、 > ipfwで limit src-addr の設定をしているのですが、 > そのため動的ルールが限界いっぱいまで出来ておりまして、 (snip) > そこで、動的ルールの最大数を減らせばいいのでは、と思いつき、
動的ルールの使用率が高いのに最大数を減らすのは良くないと思いますよ。 しかし、検索の時間も馬鹿にならなくなってきているようなので、 この状況での解決策は必要最低限のものだけ動的ルールを使うように することかと思います。 > net.inet.ip.fw.dyn_max=8192 > > となっていたので、少し減らしてみたところ、 > > net.inet.ip.fw.dyn_max=100 (極端!?) > > DNSのUDP/53のパケットがほとんどまったく通らなくなってしまいました。 DNSのqueryとreplyはかなり多いパケットを投げることになるので、 keep-stateすると割とすぐにテーブルを使い果たします。 未確認ですが、UDPは状態を持たないため、keep-stateした場合はDNSのreplyが 来ても一定時間テーブルを保持すると思います。これがテーブルを使い果たす 原因になっていると思います。ちなみに、昔ipfwを使っていた頃は自分も 同じような経験をしたので、DNSだけはkeep-stateしなくても動くように ルールを書いていました。外部に通信するDNSソースポートを固定し、 そこに向かう外部からの通信を無条件で許可しました。 最近はwebalizerのようにDNSクエリーを外に投げまくる必要があるソフトを 使わないためか、pfにしたためか、これについて特に何も設定してないですね。 pfでは状態を検索するテーブルをAVL木で格納しており、検索性能が エントリ数nに対してO(log n)となることの効果かもしれません。 http://www.benzedrine.cx/pf-paper.html