Verifique a conectividade com um servidor em uma porta UDP

13

Eu quero saber se uma máquina HP-UX pode se comunicar com uma máquina remota (que eu não tenho controle) em uma porta específica usando o UDP.

Eu tentei o telnet, mas não parece que ele suporta UDP. Eu usaria o netcat, mas não consegui encontrar nenhum pacote. Esta máquina está em produção, então eu não quero mexer em reclamar ou instalar coisas demais ... (nmap, netcat da fonte ...)

Alguma maneira simples de fazer isso?

    
por skinp 21.10.2010 / 16:46

2 respostas

14

O ping de uma porta UDP é complicado, pois não há conexões em si. Se você não tiver controle sobre o host remoto, talvez nunca saiba realmente se seus datagramas UDP estão realmente sendo recebidos. Eu suponho que você já saiba se o host remoto está acessível, via ping , traceroute , mtr , etc. (Se não, verifique primeiro!)

Em seguida, como você não tem netcat , precisará de alguma forma de gerar pacotes UDP.

O shell bash envia pacotes UDP quando você redireciona dados para o dispositivo especial /dev/udp/host/port . Por exemplo:

#!/bin/bash
host="10.10.10.10"
port=12345
echo "PING" >/dev/udp/$host/$port

O Python, claro, também é totalmente capaz de UDP, por exemplo

#!/bin/python
import socket
host="10.10.10.10"
port=12345
udp_sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
udp_sock.sendto('PING', (host, port))

Independentemente de como você deseja gerar seu pacote "ping" UDP, você vai querer saber se o alvo o recebeu. Se a porta de destino estiver aberta (ou seja, um serviço estiver escutando na porta especificada), o que acontecer será definido pelo aplicativo. Com sorte, você notará algum comportamento ou indicação do sistema remoto.

Se a porta de destino estiver fechada (ou seja, nenhum serviço estiver escutando nessa porta), você deverá obter um pacote de erro ICMP em resposta. Use o seu sniffer de rede de nível de fio favorito para assistir a ele. Ou, talvez, seu sistema HP-UX registre erros de ICMP em algum lugar (desculpe, eu não tenho nenhuma experiência com o HP-UX).

Infelizmente, se o destino for protegido por firewall, talvez você não receba uma resposta quando a porta de destino for fechada. A única maneira infalível de saber se o host remoto é responsivo é executar seu aplicativo dependente de dados UDP e observar o tráfego de rede.

    
por 22.10.2010 / 00:13
9

Você pode usar netcat . No OSX, este é o meu comando:

$ nc -vnzu <IP> <PORT>
found 0 associations
found 1 connections:
1: flags=82<CONNECTED,PREFERRED>
outif (null)
src <SOURCE IP> port <SOURCE PORT>
dst <DEST IP> port <DEST PORT>
rank info not available
    
por 24.09.2015 / 05:25