Como verificar se uma porta UDP está aberta? [fechadas]

13

Eu tenho aqui um dilema. Eu tenho um dispositivo que se comunica com outro dispositivo remoto, mas há um firewall entre eles. É uma conexão UDP, portanto, os utilitários TCP não funcionam para testar se a porta específica está aberta. Sei que poderíamos obter isso do firewall, mas não tenho acesso, portanto, tenho que provar que a porta não está aberta.

O sistema de origem é um sistema Windows 7 e o sistema de destino é um dispositivo executando o Linux.

JoeliNNaBit
fonte
1
Sem acesso ao firewall, você realmente não pode saber (a não ser, é claro, que seus sistemas estejam funcionando).
Ron Tronco de
Perguntas envolvendo redes sobre as quais você não tem controle estão explicitamente fora de tópico aqui.
Ron Maupin
2
Eu votaria para deixá-lo aberto. Acho que isso cai na área cinzenta e é uma questão útil de teoria / solução de problemas.
Ron Trunk
1
... você tem controle do firewall e das redes? Caso contrário, este tópico não está aqui.
Craig Constantine
Agora, neste ambiente de laboratório, estamos tentando simular uma situação futura de produção. Gostaria de encontrar uma maneira de solucionar problemas de sessões UDP sem precisar analisar logs no lado do servidor. Mas obrigado, acredito que isso não seja possível pela natureza do tipo de comunicação.
JoeliNNaBit 11/02

Respostas:

10

O UDP é obviamente um protocolo de envio e esquecimento. Por exemplo, durante uma varredura NMap UDP, a única maneira de provar definitivamente que uma porta UDP está aberta é se você receber uma resposta dessa porta. Lembre-se de que muitos serviços podem não responder a dados arbitrários e exigir solicitações específicas de protocolo ou aplicativo para garantir uma resposta. Certos códigos ICMP podem garantir que a porta esteja fechada, no entanto. O RFC 792 e o RFC 1122 nos fornecem boas informações sobre o que esperar quando uma porta é fechada.

Por exemplo, um código 3 do ICMP tipo 3 "Porta de Destino Inacessível" é, para todos os efeitos, quase garantido que seja uma porta fechada.

Uma lista completa de códigos pode ser encontrada aqui:

http://www.iana.org/assignments/icmp-parameters/icmp-parameters.xhtml

Guloseimas
fonte
1
Obrigado pela resposta. Investigarei mais sobre solicitações de ICMP tipo 3.
JoeliNNaBit 11/02
7

Esta é uma receita rápida:

1) Inicie um sniffer de pacote:

sudo tcpdump -n -i eth2 icmp &
[1] 1409
$ tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on eth2, link-type EN10MB (Ethernet), capture size 262144 bytes

2) Envie um pacote UDP:

$ echo reply-me | nc -u 1.0.0.2 1000

3) Se você receber 'Porta ICMP inacessível', essa porta UDP estará fechada:

20:54:15.475211 IP 1.0.0.2 > 1.0.0.1: ICMP 1.0.0.2 udp port 1000 unreachable, length 45

4) Caso contrário, geralmente a porta está aberta ou algo está bloqueando o ICMP.

Everton
fonte
1
Como o sistema de origem é o Windows 7, os comandos do Linux não funcionarão.
Ron Maupin
1
Sim, isso é verdade, mas vou tentar uma máquina virtual e verificar se funciona.
JoeliNNaBit
4

"nc -uvz ip port"não é de alguma forma precisa, você provavelmente deve usar "nmap -sU -p port ip", se o resultado mostrar "aberto", a porta udp provavelmente estará aberta, se mostrar "aberto | filtrado", provavelmente será fechado ou filtrado.

Jailman Tough
fonte