Если в nfq_set_verdict вы установите вердикт как NF_REPEAT, пакет (измененный или нет) снова войдет в цепочку OUTPUT mangle iptables, nat OUTPUT chane, цепочку OUTPUT фильтра и т. Д. (Другими словами, он будет действовать так, как будто какое-то приложение отправленоit)
Чтобы извлечь данные, используйте этот шаблон в обратном вызове обработчика NFQUEUE:
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 в сетевом порядке байтов.