2011-11-15 22 views
8

Estoy tratando de crear un módulo kernel que pueda enviar paquetes modificados de los que recibe mediante el enganche netfilter. Estoy usando un esqueleto de código proporcionado here. Estoy creando un conector directo dentro del núcleo simple uso de este código:Enviando un paquete a través de un módulo kernel

La función sendpacket es llamado por esto:

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

socketptr ser el conector directo creé, dev siendo el net_device en pasado a mí por la función de enganche, y duplicar ser una copia modificada del paquete original.

El retorno de la llamada a dev_queue_xmit indica que el paquete se transmitió correctamente pero no puedo ver el paquete en el cable. Tengo dos preguntas: primero, me gustaría poder depurar mejor lo que está sucediendo, así que cualquier consejo sobre eso es muy apreciado. Además, me pregunto si estoy manejando la creación del socket correctamente o si me falta algún tipo de configuración. Todo esto es muy nuevo para mí, así que muy bien podría ser que me estoy perdiendo algo tonto.

+0

¿Puede explicar lo que hizo al decir "No puedo ver el paquete en el cable". Sugiero que instale wireshark u otro programa sniffer. – Michel

+0

Lo siento, debería haber aclarado. La interfaz que se utiliza es "venet0", que es la interfaz utilizada por los contenedores de openvz. Estaba observando el tráfico en esa interfaz usando Wireshark y no vi los paquetes. – bschulte3

+0

¿Está seguro de que iptables se ha configurado correctamente para pasar tales paquetes? – Dan

Respuesta

Cuestiones relacionadas