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

14

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

Ich habe versucht, Telnet, aber es sieht nicht so aus, als ob es UDP unterstützt. Ich würde Netcat verwenden, konnte jedoch kein Bundle finden. Diese Maschine ist in Produktion, damit ich nicht zu viel herumspielen oder Dinge installieren will ... (nmap, netcat from source ...)

Irgendeine einfache Möglichkeit, dies zu tun?

skinp
quelle

Antworten:

16

Das Pingen eines UDP-Ports ist etwas schwierig, da per se keine Verbindungen bestehen . Wenn Sie keine Kontrolle über den Remote-Host haben, wissen Sie möglicherweise nie wirklich, ob Ihre UDP-Datagramme tatsächlich empfangen werden. Ich nehme an, Sie wissen bereits, ob die Remote - Host erreichbar ist , über ping, traceroute, mtrusw. (Wenn nicht, prüfen Sie, ob zuerst!)

Da dies nicht der netcatFall ist, müssen Sie zunächst UDP-Pakete generieren.

Die bashShell sendet UDP-Pakete, wenn Sie Daten an das spezielle Gerät umleiten /dev/udp/host/port. Beispielsweise:

#!/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 offen ist (dh ein Dienst überwacht den angegebenen Port), wird das, was passiert, anwendungsspezifisch festgelegt. Hoffentlich werden Sie ein Verhalten oder einen Hinweis vom Remote-System bemerken.

Wenn der Zielport geschlossen ist (dh, dass kein Dienst an diesem Port empfangsbereit ist), sollten Sie als Antwort ein ICMP-Fehlerpaket zurückerhalten. Verwenden Sie Ihren bevorzugten drahtgebundenen Netzwerk-Sniffer, um danach zu suchen. Oder vielleicht protokolliert Ihr HP-UX-System ICMP-Fehler irgendwo (ich habe leider keine Erfahrung mit HP-UX).

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

Steven Montag
quelle
10

Sie können verwenden netcat. 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
f01
quelle
Perfekt, funktioniert nc für alles!
Shoaib Khan