2011-04-14 5 views
0

私たちは、netfilter preroutingフックで高度なソースnatを実行する独自のカーネルモジュールを開発しています。 Linuxカーネル2.6.32(Ubuntu 10.04)から2.6.35(Ubuntu 10.04 lucid-back-ports)にアップグレードした後は、SNATtedパケットがLinuxカーネル内にドロップされたようです。netfilter preroutingフックのソースnat

私はSNATが一般的な使用のためにプレルーティングフックで行われることは決して知らされていないことを知っていますが、実際の配線決定が行われる前にソースナットを行うことを好む理由はまだいくつかあります。

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を使用しています。

答えて

0

パケットをドロップする正確な行を見つけることから始めます。

+0

事前ルーティングでSNATの経験がありますか?おそらく、ソースコードを調べて自分自身を「修正」するよりも簡単な解決策があるかもしれません(たとえば、おそらくすでにどこかでパッチローミングが行われている、あるいは/ sysファイルシステムでこれを行うことができます)。 Linuxのコードベースは非常に大きく、私自身はこれを「修正」してわずか1週間ですべての可能な回帰を分析することはできないことを知っています。これは以前にも同様の問題をすでに解決している可能性がある専門家の助けを頼んだ理由です。とにかくアドバイスありがとう:) –

+0

それは大きいですが、任意の行がパケットを消滅させることはできません。あなたは少なくとも 'kfree_skb()'呼び出しを探しています。あなたが何が起こっているのかわからないと、モジュールのアウト・オブ・テンシティは役に立たない。 – adobriyan

0

ソースIPを更新した後ですべてのチェックサムを再計算しましたか? src/dst IPアドレスに基づいているので、TCP/UDPチェックサムも更新する必要があることに注意してください。

関連する問題