Estoy intentando escribir una aplicación de espacio de usuario que se puede enganchar en la pila de red de un sistema operativo, huelen los paquetes que volaban y editar las que el interesado.Reescritura de paquetes de red sobre la marcha usando libnetfilter_queue
Después de mucho buscar en Google, parece Para mí, el método más simple (aunque razonablemente robusto) de hacerlo (en cualquier plataforma) es el proyecto libnetfilter_queue
de Linux. Sin embargo, tengo problemas para encontrar cualquier documentación razonable para el proyecto, aparte de la limitada documentación de official. Sus principales características (como se indica por el primer enlace son)
- recibir paquetes de la cola desde el subsistema de kernel nfnetlink_queue
- emisión de veredictos y/o reinyección de los paquetes alterados al subsistema de kernel nfnetlink_queue
El énfasis es mío. ¿Cómo exactamente me refiero a esto? Intenté modificar el código sample proporcionado, pero tal vez estoy malinterpretando algo. El código está operando en el modo NFQNL_COPY_PACKET
, entonces I am recibiendo el paquete completo, pero mis modificaciones parecen estar restringidas a mi propia aplicación, como era de esperar, dada la semántica de "copia".
Mi sensación es que estoy destinado a hacer uso de NF_QUEUE
de alguna manera, pero no lo he asimilado del todo. ¿Alguna sugerencia?
(Si hay un mecanismo más sencillo para hacer esto, que también es multiplataforma, me encantaría oír hablar de eso)
Sedate, ¿experimentas al usar esto a través de Java (JNI)? Tengo curiosidad si disminuye el rendimiento. –
@TinaJasmin Desafortunadamente no tengo experiencia con JNI, así que no estoy seguro de cuánto de un golpe de rendimiento estaría involucrado. Lo siento, no puedo ser más útil. –