TCP sobre TUN: SYN / ACK é recebido, mas nenhum ACK é gerado e o soquete permanece no estado SYN_SENT

1

Estou tunelando uma conexão TCP de saída através de uma interface TUN configurada por um programa que eu escrevi. A interface TUN basicamente retransmite os pacotes de / para um servidor proxy, com modificações mínimas (IP / porta de origem / destino, soma de verificação TCP).

Executando o wget em um IP roteado através desta interface TUN, os pacotes parecem ser enviados e recebidos corretamente (veja o rastreio), mas de alguma forma o SYN / ACK que retorna do servidor não se registra na pilha TCP, e o soquete permanece em um estado SYN_SENT em "netstat -t". Retransmissões espúrias são geradas infinitamente (até o tempo limite) em ambas as direções.

Aqui estão os comandos que uso para configurá-lo:

ip link set dev tun0 up
ip addr add 10.0.0.1/24 dev tun0 
ip route add 216.58.197.100/32 dev tun0

seguido por

wget http://216.58.197.100

Aqui está o traço wireshark pcap aqui :

    
por spurserh 26.05.2016 / 08:19

1 resposta

0

Parece que encontrei o problema: eu precisava calcular a soma de verificação do cabeçalho IPv4 para os pacotes de entrada antes de gravá-los na interface TUN, já que os modifico.

    
por 26.05.2016 / 11:54