0

内部に含まれるプロトコルの大規模なマングリングを行うモジュールを構築しています。レイヤ 4 パケットをマングルしているだけです。私はそれらを反対側で本来あるべき姿に戻します。パケット サイズは 1:1 のままなので、skb を再割り当てする必要はありません...

そうは言っても、私は を変更し、フックからskb->data戻ります。sk_buff が に渡されることを示す別のフックがありますが、パケットが実際にホストを離れることはありません (Wireshark では表示されないため)。何が起こっているのかわかりません。パケットがどこかでドロップされていませんか? 私は netfilter フック以外のカーネル フックを使用しておらず、送信先を操作していないので、間違いなくマシンから離れるはずです。NF_ACCEPTNF_IP_LOCAL_OUTNF_IP_POST_ROUTING

それを引き起こしている可能性のあるアイデアはありますか?カスタム IPPROTO をカーネルに登録する必要がありますか? 私はそれを持ってい/etc/protocolsます。それで十分だと思いました。それとも、完全に間違った道を進んでいるだけですか? IPsec のカーネルにある ESP および AH コードを使用してみました。これもパケットを破壊するためですが、すべての変換コードは必要以上に複雑です。

4

1 に答える 1

0

解像度

1 つの例外を除いて、すべてを正しく行っていたように見えます。IP ヘッダーのチェックサムを再計算していませんでした (プロトコル ID 自体を変更していたため、これは必須です)。

コード

iph->check = 0;
iph->check = ip_fast_csum(iph, iph->ihl);

そしてすぐにそれはうまくいきました。

于 2013-08-14T20:51:37.563 に答える