¿Cómo reconstruir el flujo de TCP de múltiples paquetes de IP?

Estoy trabajando en un servidor VPN basado en TUN cuyo objetivo es analizar los paquetes que recibe antes de reenviarlos a su destino. Actualmente estoy recibiendo los paquetes IP de una interfaz TUN, y simplemente los estoy enviando a su destino sin modificar.

Entiendo que analizar el contenido de los paquetes UDP sería tan simple como eliminar los encabezados IP y UDP. Sin embargo, para analizar el contenido del tráfico TCP, necesitaría reconstruir el mensaje de varios paquetes IP. ¿Hay una manera fácil de hacer esto sin volver a implementar TCP? ¿Hay bibliotecas C / C ++ fácilmente accesibles para esta tarea? Preferiría bibliotecas de sistemas Linux y / o bibliotecas de código abierto, no virales / no copyleft.

Una cosa que ya he considerado es hacer una copia de cada paquete de IP y cambiar la IP de destino de la copia a localhost, de modo que una parte diferente de mi servidor pueda recibir estas solicitudes de TCP y las respuestas totalmente reconstruidas y sin encabezados. Sin embargo, no podría asociar las IP de destino con el contenido del tráfico, que es algo que deseo.

Respuestas a la pregunta(2)

Su respuesta a la pregunta