it-swarm.com.de

Überprüfen Sie die Konnektivität zu einem Server an einem UDP-Port

Ich möchte wissen, ob ein HP-UX-Computer über UDP mit einem Remote-Computer (über den ich keine Kontrolle habe) an einem bestimmten Port kommunizieren kann.

Ich habe Telnet ausprobiert, aber es sieht nicht so aus, als würde es UDP unterstützen. Ich würde netcat verwenden, aber ich konnte kein Bundle finden. Diese Maschine ist in Produktion, also möchte ich nicht zu viel herumspielen oder installieren ... (nmap, netcat from source ...)

Irgendeine einfache Möglichkeit, dies zu tun?

15
skinp

Das Pingen eines UDP-Ports ist etwas schwierig, da es per se keine Verbindungen gibt. Wenn Sie keine Kontrolle über den Remote-Host haben, wissen Sie möglicherweise nie wirklich, ob Ihre UDP-Datagramme tatsächlich empfangen werden. Ich gehe davon aus, dass Sie bereits wissen, ob der Remote-Host über ping, traceroute, mtr usw. erreichbar ist. (Wenn nicht, überprüfen Sie dies zuerst!)

Da Sie netcat nicht haben, benötigen Sie eine Möglichkeit, UDP-Pakete zu generieren.

Die bash Shell sendet UDP-Pakete, wenn Sie Daten an das spezielle Gerät umleiten /dev/udp/Host/port. Zum Beispiel:

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

Python ist natürlich auch voll UDP-fähig, z.

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

Unabhängig davon, wie Sie Ihr UDP-Ping-Paket generieren, möchten Sie wissen, ob das Ziel es empfangen hat. Wenn der Zielport geöffnet ist (d. H. Ein Dienst überwacht den angegebenen Port), wird das, was passiert, anwendungsdefiniert. Hoffentlich werden Sie ein Verhalten oder einen Hinweis vom Remote-System bemerken.

Wenn der Zielport geschlossen ist (d. H. Kein Dienst an diesem Port lauscht), erhalten Sie sollten ein ICMP-Fehlerpaket als Antwort zurück. Verwenden Sie Ihren bevorzugten Netzwerk-Sniffer auf Kabelebene, um darauf zu achten. Oder Ihr HP-UX-System protokolliert möglicherweise irgendwo ICMP-Fehler (Entschuldigung, ich habe keine Erfahrung mit HP-UX).

Wenn das Ziel durch eine Firewall geschützt ist, erhalten Sie möglicherweise keine Antwort, wenn der Zielport geschlossen ist. Der einzige todsichere Weg, um festzustellen, ob der Remote-Host reagiert, besteht darin, Ihre UDP-datenabhängige Anwendung auszuführen und den Netzwerkverkehr zu überwachen.

16
Steven Monday

Sie können netcat verwenden. In OSX ist dies mein Befehl:

$ 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
10
f01