2011-06-18 10 views
1

1つのネットワークインターフェイスでパケットを受信するプログラムを作成して、何らかの処理を行い、それを別のインターフェイスに転送したいとします。 Linuxでこれを行う最も効率的な方法は何でしょうか?最小遅延でパケットを転送したいパケット転送

+0

「フォワード」とはどういう意味ですか?パケットスニッフィングに言及していますか?つまり、他のコンピュータに向かうパケットを受信して​​いますか? –

+0

着信インターフェイスに着信するトラフィックを暗号化する必要があります。上記のアプリケーションはトラフィックを解読し、それを他のインタフェースに転送します。 – MARK

+0

あなたは車輪を再発明しているようですね?なぜ、すでに存在し、十分に検証されているIPsecを使用しないのですか? – mpontillo

答えて

2

libnetfilter_queueを使用してください。

iptables <....> -j NFQUEUE --queue-num <queue number> 

あなた自身のプログラムとリンクをlibnetfilter_queueと書いてください。本当に単純な操作の後では、パケットを受信するのにrecvを使用し、パケットをどのように処理するかを決定するのにnfq_set_verdictを使用することができます。

+0

この方法がどれくらい速くなるかを私に教えてくれるスピードの比較はありますか? – MARK

+2

@Razaええ、私は比較している:あなたが提案している存在しない方法よりも速いです。 – nc3b