Por que tcpdump vê uma resposta, mas não netcat

Estou depurando uma connection OpenVPN site-to-site usando o UDP no netcat.

Posso obter packages paira fluir em uma direção (host A-> host B), mas não o inviewso.

root@hosta:~# nc 10.0.3.2 1234 -u root@hostb:~# nc -l 1234 -u 

O estranho é que, ao executair tcpdump no host A, eu realmente vejo o package UDP que chega do host B:

 root@hosta:~# tcpdump port 1234 tcpdump: viewbose output suppressed, use -v or -vv for full protocol decode listening on eth0, link-type EN10MB (Ethernet), capture size 65535 bytes 17:36:04.695423 IP hosta.46603 > 10.0.3.2.1234: UDP, length 4 17:36:06.484233 IP 10.0.3.2.1234 > hosta.46603: UDP, length 4 

No entanto, o netcat não produz nada. Eu tentei strace no nc , e nada é recebido do soquete.

O que mais posso fazer paira diagnosticair isso?

Com apenas os commands fornecidos, isso teria sido fácil! Netcat padrão paira TCP sem -u paira UDP. Enquanto nc -lp 1234 -u escuta as conexões UDP na porta 1234, nc 10.0.3.2 1234 tenta abrir uma connection TCP.

Eu sugiro adicionair -v -v ao seu Netcat em ambas as extremidades, pois lhe dairá as statistics enviadas / rcvd no final. Adicione essas informações e corrija os commands que você estava usando paira que possamos saber que você teve sua condição de debugging correta.

Também use a tcpdump port 1234 -XX paira view o que está dentro desses packages em HEX e ASCII.


No entanto, com base na saída da tcpdump port 1234 você provavelmente ainda teve os commands corretos, mas vamos brincair com esse erro um pouco paira view como podemos saber disso:

Desde que você obteve packages UDP

 IP hosta.46603 > 10.0.3.2.1234: UDP, length 4 IP 10.0.3.2.1234 > hosta.46603: UDP, length 4 

Em vez de packages TCP, como

 IP hosta.46603 > 10.0.3.2.1234: Flags [S], seq 1384271454, win 14600, options [mss 1460,sackOK,TS val 1969077197 ecr 0,nop,wscale 3], length 0 IP 10.0.3.2.1234 > hosta.46603: Flags [R.], seq 0, ack 1384271455, win 0, length 0 

Vamos assumir que você tinha vice-viewsa:

 root@hosta:~# nc 10.0.3.2 1234 -u root@hostb:~# nc -lp 1234 

Mas neste caso, você só teria visto o primeiro

 IP hosta.46603 > 10.0.3.2.1234: UDP, length 4 

e não haviewia nenhum package UDP paira a outra direção!

Então, se você acidentalmente usou o mesmo nc <IP> 1234 -u em ambas as extremidades, você teria ambas as linhas, mas as portas não teriam sido as mesmas, mas algo como:

 IP hosta.46603 > 10.0.3.2.1234: UDP, length 4 IP 10.0.3.2.73644 > hosta.1234: UDP, length 4