A captura do pacote UDP de entrada falha

0

Meu ambiente:

Mac OS X 10.8.5 (IP: 192.168.10.5)
CentOS 6.5 (IP: 192.168.10.8)

Estou tentando capturar o pacote de entrada UDP no OS X.

Eu tentei no terminal do OS X

# tcpdump -In udp portrange 6000
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on en0, link-type IEEE802_11_RADIO (802.11 plus radiotap header), capture size 65535 bytes

Então, no CentOS 6.5

$ echo "test" | nc -w 1 -u 192.168.10.5 6000
nc: Write error: Connection refused

A conexão foi recusada.

No entanto, quando executo um programa (UDP echo server) feito pelo Unity (5.1.3f) para receber o pacote UDP no OS X, a conexão não foi recusada.

$ echo "test" | nc -w 1 -u 192.168.10.5 6000
test

Qual parte da configuração do OS X devo verificar?

    
por sevenOfNine 17.11.2015 / 23:06

2 respostas

1

O seu driver sem fio pode não estar descriptografando pacotes enquanto estiver no modo 802.11 Monitor, então o tcpdump pode não ser capaz de dizer que eles são pacotes UDP.

Refaça seu teste sem passar -I para tcpdump . Isso permitirá que o tcpdump visualize a interface como uma Ethernet em vez de colocá-la no modo de monitor 802.11.

Observe que, mesmo que o tcpdump capture os pacotes, ele não impedirá que a pilha IP envie de volta uma mensagem ICMP "destination unreachable: port unreachable" se receber um datagrama UDP para uma porta sem soquete de listener aberto. Portanto, nc na máquina de envio ainda vai dizer "conexão recusada" se você não estiver executando algo como Unity para receber esses pacotes.

    
por 20.11.2015 / 00:35
0

Eu não escrevi parte do Meu Ambiente, o que pode ser importante para esse problema.

Estou usando o VMware.

Meu ambiente:

Mac OS X 10.8.5
CentOS 6.5 on VMWare Fusion 6.0.4 on Mac OS X 10.8.5

No firewall setting on MacOS X 10.8.5

Mac OS X(Host OS) network
- en0 : 192.168.10.4
- vmnet1 : 172.16.99.1
- vmnet8 : 172.16.173.1

CentOS(Guest OS) network (connected with "Bridge" setting)
- eth0 : 192.168.10.8
- lo : 127.0.0.1

1) Do CentOS ao Mac OS X a en0 no Mac OS X.

  • O tcpdump no Mac OS X não mostra o pacote UDP de entrada ("conexão recusada" é mostrada no CentOS 6.5)
  • O aplicativo Unity (receptor UDP) mostra o pacote UDP de entrada (nenhuma mensagem de erro no CentOS 6.5)

No CentOS

# echo "test" | nc -w 1 -u 192.168.10.4 6000
nc: Write error: Connection refused

No Mac OS X

# tcpdump -n udp portrange 6000
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on en0, link-type EN10MB (Ethernet), capture size 65535 bytes

2) Do CentOS para o Mac OS X através da vmnet8 no Mac OS X.

    O
  • tcpdump no Mac OS X mostra o pacote UDP de entrada, conforme mostrado abaixo.

No CentOS

$ echo "test" | nc -w 1 -u 172.16.173.1 6000

No Mac OS X

# tcpdump -n udp portrange 6000
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on en0, link-type EN10MB (Ethernet), capture size 65535 bytes
07:28:39.958576 IP 192.168.10.8.59866 > 172.16.173.1.6000: UDP, length 5

Então, pelo menos se eu usar o vmnet8, eu posso enviar o pacote UDP do CentOS para o Mac OS X. Eu não tenho nenhum problema usando vmnet1, também.

    
por 20.11.2015 / 23:36