http://d.hatena.ne.jp/Hossy/20090820/p1
この辺に書いたように動的ルールを適用するときは、
TCP/IP のタイムアウト関係の設定を少し調整する必要があります。
デフォルトのままだと、負荷が高くなった時に FIN が届く前に ipfw ルールが閉じてしまい、
LAST_ACK とか WAIT_FIN とかの状態のままタイムアウト待ちになるソケットが量産されて、
一種の DDoS に似た状態になります。
netstat -a とかで存在しているソケットを眺めてみると、WAIT_FIN のソケットが大量にあり、
しかもそれぞれ相手先の IP がばらばらだったので、「DDoSか??」と一瞬焦りました。
まぁ、理由が分かれば大したことはないんですが……
さて、対策は非常に簡単で、/etc/sysctl.conf に以下の文を書きくわえてタイムアウトを長くします。
net.inet.tcp.finwait2_timeout=15000 net.inet.tcp.fast_finwait2_recycle=1 net.inet.ip.fw.dyn_max=65535 net.inet.ip.fw.dyn_fin_lifetime=15
割と負荷の低いことが多いマシンなら、こんな感じにかなり緩くしても結構大丈夫みたい。
負荷が高いマシンならもっとちゃんとチューニングしましょう。