2011-11-15 12 views
8

Sto provando a creare un modulo del kernel che sarà in grado di inviare pacchetti modificati da quelli ricevuti tramite l'hook di netfilter. Sto usando uno scheletro di codice fornito here. Sto creando un raw socket all'interno del kernel semplicemente usando questo codice:Invio di un pacchetto attraverso un modulo del kernel

La funzione sendPacket si chiami con questo:

len = sendpacket(sockptr, dev, IPPROTO_TCP, duplicate, ntohs(dupiph->tot_len)); 

socketptr essere il socket raw ho creato, dev essere il net_device in passato per me dalla funzione di aggancio, e duplicato essendo una copia modificata del pacchetto originale.

Il ritorno dalla chiamata a dev_queue_xmit indica che il pacchetto è stato trasmesso correttamente ma non riesco a vedere il pacchetto sul cavo. Ho due domande: in primo luogo, vorrei essere in grado di eseguire il debug in modo più approfondito su ciò che sta accadendo, quindi qualsiasi consiglio in merito è molto apprezzato. Inoltre, mi chiedo se sto gestendo correttamente la creazione del socket o se c'è qualche tipo di configurazione che mi manca. Questo è tutto molto nuovo per me, quindi potrebbe benissimo essere che mi manca qualcosa di stupido.

+0

Puoi spiegare cosa hai fatto dicendo "Non riesco a vedere il pacchetto sul filo". Suggerisco di installare wireshark o un altro programma sniffer. – Michel

+0

Mi dispiace, avrei dovuto chiarire. L'interfaccia utilizzata è "venet0", che è l'interfaccia utilizzata dai contenitori openvz. Stavo osservando il traffico su quell'interfaccia usando Wireshark e non ho visto i pacchetti. – bschulte3

+0

Sei sicuro che iptables sia stato configurato correttamente per passare tali pacchetti? – Dan

risposta

Problemi correlati