Verifique a conectividade com um servidor em uma porta UDP

14

Quero saber se uma máquina HP-UX pode se comunicar com uma máquina remota (sobre a qual não tenho controle) em uma porta específica usando 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, por isso não quero mexer muito na instalação ou instalação de coisas demais ... (nmap, netcat da fonte ...)

Alguma maneira simples de fazer isso?

skinp
fonte

Respostas:

16

O ping de uma porta UDP é meio complicado, pois não há conexões , por si só. 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á sabe se o host remoto está acessível, via ping, traceroute, mtr, etc. (Se não, verifique se em primeiro lugar!)

Em seguida, como você não possui netcat, precisará de uma maneira de gerar pacotes UDP.

O bashshell 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ê conseguir gerar seu pacote "ping" UDP, você desejará saber se o destino 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. Felizmente, você notará algum comportamento ou indicação do sistema remoto.

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

Infelizmente, se o destino estiver protegido por firewall, você poderá não receber uma resposta quando a porta de destino estiver fechada. A única maneira certa de saber se o host remoto é responsivo é executar o aplicativo dependente de dados UDP e observar o tráfego da rede.

Steven segunda-feira
fonte
10

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
f01
fonte
Perfeito, o nc funciona para tudo!
precisa