Verifica la connettività a un server su una porta UDP


14

Voglio sapere se una macchina HP-UX può comunicare con una macchina remota (di cui non ho il controllo) su una determinata porta usando UDP.

Ho provato Telnet, ma non sembra che supporti UDP. Vorrei usare netcat, ma non sono riuscito a trovare alcun pacchetto. Questa macchina è in produzione, quindi non voglio scherzare con la compilazione o l'installazione di cose troppo ... (nmap, netcat dal sorgente ...)

Qualche modo semplice per farlo?

Risposte:


16

Il ping di una porta UDP è piuttosto complicato, poiché di per sé non ci sono connessioni . Se non hai il controllo sull'host remoto, potresti non sapere davvero se i tuoi datagrammi UDP vengono effettivamente ricevuti. Suppongo che si conosce già se l'host remoto è raggiungibile, via ping, traceroute, mtr, ecc (In caso contrario, controllare che prima!)

Successivamente, poiché non hai netcat, avrai bisogno di un modo per generare pacchetti UDP.

La bashshell invia pacchetti UDP quando si reindirizzano i dati al dispositivo speciale /dev/udp/host/port. Per esempio:

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

Python, ovviamente, è anche pienamente in grado di UDP, ad es

#!/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))

Indipendentemente da come riesci a generare il tuo pacchetto "ping" UDP, vorrai sapere se il target lo ha ricevuto. Se la porta di destinazione è aperta (ovvero un servizio è in ascolto sulla porta specificata), ciò che accadrà sarà definito dall'applicazione. Spero che noterai qualche comportamento o indicazione dal sistema remoto.

Se la porta di destinazione è chiusa (ovvero nessun servizio è in ascolto su quella porta), allora dovresti ottenere un pacchetto di errori ICMP in risposta. Usa il tuo sniffer di rete a livello di filo preferito per guardarlo. Oppure, forse il tuo sistema HP-UX registra errori ICMP da qualche parte (mi dispiace, non ho alcuna esperienza con HP-UX).

Sfortunatamente, se la destinazione è protetta da firewall, potresti non ricevere una risposta quando la porta di destinazione è chiusa. L'unico modo infallibile per sapere se l'host remoto è reattivo è eseguire l'applicazione dipendente da dati UDP e controllare il traffico di rete.


10

È possibile utilizzare netcat. In OSX, questo è il mio 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

Perfetto, nc funziona per tutto!
Shoaib Khan,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.