2011-07-19 18 views
2

私は現在、iptablesのNFQUEUEターゲットでキューに入れられたパケットを変更するために、userspaceのlibnetfilter_queueでコードを使用しようとしています。しかし、私はそれをやり遂げる方法についてはほとんど考えていません。netfilterキューによるパケットの変更?

NFQNL_COPY_PACKETを使用してパケットをコピーするように設定しました。コピーしたパケットを変更すると、関数nfq_set_verdict()によって自動的にカーネルに返送されますか?

さらに、以前はpcapファイルからパケットを抽出していましたが、nfq_get_payload()から取得したデータは非常に異なるようです。誰もデータを解読する方法を知っていますか?

答えて

1

nfq_set_verdictで判定をNF_REPEATに設定した場合、パケットは変更されたかどうかにかかわらず、iptables mangle OUTPUTチェーン、nat OUTPUT chane、OUTPUTチェーンフィルタなどを入力します(つまり、

int queueHandle_input (struct nfq_q_handle *qh, struct nfgenmsg *nfmsg, struct nfq_data *nfad, void *mdata){ 

struct iphdr *ip; 
int id; 
struct nfqnl_msg_packet_hdr *ph = nfq_get_msg_packet_hdr ((struct nfq_data *) nfad); 
if (ph) id = ntohl (ph->packet_id); 
nfq_get_payload ((struct nfq_data *) nfad, (char**)&ip); 

今、IPはネットワークバイト順でIPヘッダデータが含まれています

、データを抽出し、あなたのNFQUEUEハンドラコールバックでこの定型を使用するには)それを送りました。

関連する問題