Eu tenho dois segmentos de rede conectados usando um túnel IPSEC-VPN:
- NET#1: ab0.0/16 com gateway LAN ab0.1
- NET#2: xy0.0/16 com gateway LAN xy130.1
Eu inicio um ping de ab0.1 para xy130.100 e iniciei um tcpdump. Mais tarde, isso mostra os pacotes de respostas de eco, mas não mostra os pacotes de solicitação de eco.
Isso é normal? Como posso obter os pacotes de solicitação de eco também?
Aqui está um exemplo de sessão de testes:
O PING:
# ping x.y.130.100
PING x.y.130.100 56(84) bytes of data.
64 bytes from x.y.130.100: icmp_seq=1 ttl=63 time=1.87 ms
64 bytes from x.y.130.100: icmp_seq=2 ttl=63 time=1.38 ms
64 bytes from x.y.130.100: icmp_seq=3 ttl=63 time=1.27 ms
64 bytes from x.y.130.100: icmp_seq=4 ttl=63 time=3.93 ms
64 bytes from x.y.130.100: icmp_seq=5 ttl=63 time=1.15 ms
64 bytes from x.y.130.100: icmp_seq=6 ttl=63 time=1.16 ms
O TCPDUMP:
# tcpdump -nn 'icmp and (src a.b.0.1 or dst a.b.0.1)'
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on eth0, link-type EN10MB (Ethernet), capture size 262144 bytes
13:54:27.607103 IP x.y.130.100 > a.b.0.1: ICMP echo reply, id 22607, seq 1, length 64
13:54:28.608433 IP x.y.130.100 > a.b.0.1: ICMP echo reply, id 22607, seq 2, length 64
13:54:29.610167 IP x.y.130.100 > a.b.0.1: ICMP echo reply, id 22607, seq 3, length 64
13:54:30.614716 IP x.y.130.100 > a.b.0.1: ICMP echo reply, id 22607, seq 4, length 64
13:54:31.613417 IP x.y.130.100 > a.b.0.1: ICMP echo reply, id 22607, seq 5, length 64
13:54:32.615054 IP x.y.130.100 > a.b.0.1: ICMP echo reply, id 22607, seq 6, length 64
Esta resposta assume o Linux como sistema operacional.
A saída não pode ser capturada como texto simples pelo tcpdump : ela já está criptografada antes que o tcpdump tenha a chance de vê-la e seu filtro icmp não corresponderá. A entrada, que chega criptografada, é repetida como carga útil de texto simples: o tcpdump captura ambos, mas seu filtro icmp corresponderá na segunda passagem.
O fluxo de pacotes no Netfilter e General Networking fornece pistas sobre isso (você terá que clicar para obter detalhes):
no lado direito (saída):
pacote de texto simples atinge a pesquisa xfrm e é repetido como carga útil criptografada por meio da codificação xfrm
O tcpdump captura posteriormente o resultado final em AF_PACKET. Isso não corresponde ao ICMP, nada será exibido pelo filtro
no lado esquerdo (entrada):
Na verdade, em alguns casos (quando a compactação IPSec está habilitada e o pacote é um pacote curto) pode haver ainda um outro loop com o pacote interno intermediário como protocolo ipip .
Se você deseja obter o tráfego de saída, aqui estão algumas sugestões:
or esp
, mas é claro que não será decodificado, a menos que uma-E
opção adequada com os segredos adequados seja definida (sobre a qual eu não saberia muito). Não sei se o tcpdump também pode decodificar NAT-T (udp port 4500
) dessa maneira.Existe uma chance de que as respostas estejam saindo em uma interface diferente (talvez uma para IPSec?) daquela (eth0) na qual você está executando o tcpdump?