netfilter prerouting フックで高度なソース nat を実行する独自のカーネル モジュールを開発しています。Linux カーネル 2.6.32 (Ubuntu 10.04) から 2.6.35 (Ubuntu 10.04 lucid-back-ports) にアップグレードした後、SNATted パケットが Linux カーネル内でドロップされるだけのようです。
一般的な用途 ( Netfilter メーリング リスト)の Prerouting フックで SNAT を実行するように勧められていないことは知っていますが、実際のルーティングの決定が行われる前にソース natting を実行することを好む理由がまだいくつかあります。
2.6.35+ Linux カーネルの netfilter prerouting フックで SNAT を実行するカーネル モジュールを開発した経験のある人はいますか? SNATted パケットがドロップされないようにするには、linux-kernel/netfilter-kernel-module コードで正確に何を変更する必要がありますか? おそらく、プレルーティングでの SNAT は 2.6.35 以降の Linux カーネルでは単純に悪い考えであり、ルーティングの決定には nf_marks を使用し、ポストルーティングで SNAT を行うべきではないでしょうか?
X86_64でバックポートされたLinuxカーネル(2.6.35)でUbunut 10.04を使用しています。