mIRC は、ファイヤーウォールが関知しなくても、ファイヤーウォール経由で接続して DCC コネクションを成り立たせる特殊な設定を、自前で備えている。このオプション設定が有効にしてあって、さらに ip_conntrack_irc と ip_nat_irc モジュールがわざわざロードされていた場合には、絶対にうまくいかない。問題なのは、mIRC 自体が自動的にパケットの中身を NAT しているので、それがファイヤーウォールに届いた時、どう処理したらいいのかファイヤーウォールに分からないという点だ。mIRC はファイヤーウォールがこれを処理できるほど賢いことは期待していない。その代わりに、IPアドレスは IRC サーバに直接問い合わせ、DCC リクエストはそこで知れたアドレスへ送信するのだ。
設定オプションの "私はファイヤーウォールの内側にいます (I am behind a firewall) " の項目がオンになっていて、ip_conntrack_irc と ip_nat_irc モジュールも使用していた場合、Netfilter は "偽造DCCパケットの送信 (Forged DCC send packet) " という旨のログを吐く。
最も単純明快な解決策は、 mIRC 側の設定オプションのチェックマークを外し、処理を iptables に任せること。つまり、ファイヤーウォールの内側にいるのではありません、と mIRC に指示すればいいわけだ。