Como reconstruir o fluxo TCP de vários pacotes IP?
Eu estou trabalhando em um servidor VPN baseado em TUN cujo objetivo é analisar os pacotes que recebe antes de encaminhá-los para o seu destino. Atualmente estou recebendo os pacotes IP de uma interface TUN, e simplesmente enviá-los para o seu destino sem modificações.
Entendo que analisar o conteúdo dos pacotes UDP seria tão simples quanto remover os cabeçalhos IP e UDP. No entanto, para analisar o conteúdo do tráfego TCP, eu precisaria reconstruir a mensagem de vários pacotes IP. Existe uma maneira fácil de fazer isso sem reimplementar o TCP? Existe alguma biblioteca C / C ++ facilmente acessível para esta tarefa? Eu preferiria bibliotecas do sistema Linux e / ou bibliotecas de código aberto, não-viral / não-copyleft.
Uma coisa que já considerei é fazer uma cópia de cada pacote IP e alterar o IP de destino da cópia para localhost, para que uma parte diferente do meu servidor possa receber essas solicitações e respostas TCP totalmente reconstruídas e sem cabeçalhos. No entanto, eu não seria capaz de associar IPs de destino a conteúdo de tráfego, o que é algo que desejo.