カーネルモジュールを作成しようとしました。カーネルモジュールは、変更されたパケットをnetfilterフックで受け取ったものから送信することができます。私はhereを提供するコードスケルトンを使用しています。 、私が作成したRAWソケットであることsocketptrカーネルモジュールを介してパケットを送信する
len = sendpacket(sockptr, dev, IPPROTO_TCP, duplicate, ntohs(dupiph->tot_len));
devが渡さでnet_deviceさ:sendpacket関数はこれで呼び出された
:私は単にこのコードを使用してカーネル内部のrawソケットを作成していますフック機能によって私に伝えられ、複製は元のパケットの修正されたコピーである。
dev_queue_xmitへの呼び出しからの戻り値は、パケットが正常に送信されたことを示していますが、ワイヤでパケットが表示されません。私は2つの質問があります:まず、何が起こっているかをよりよくデバッグできるようにしたいので、それに関するアドバイスは非常に高く評価されます。また、私はソケットの作成を正しく処理しているのか、いくつかのタイプの構成があるかどうか不思議です。これは私にとってとても新しいものなので、何かばかげたものを紛失している可能性があります。
「私はそのパケットを見ることができません」と言いました。私はwiresharkまたは別のスニッファプログラムをインストールすることをお勧めします。 – Michel
申し訳ありませんが、私は明確にすべきでした。使用されているインタフェースは "venet0"で、これはopenvzコンテナによって使用されるインタフェースです。私はWiresharkを使ってそのインターフェース上のトラフィックを観察していて、パケットを見ませんでした。 – bschulte3
iptablesがこのようなパケットを渡すように正しく設定されていますか? – Dan