Sprawdź łączność z serwerem na porcie UDP

14

Chcę wiedzieć, czy maszyna HP-UX może komunikować się z maszyną zdalną (nad którą nie mam kontroli) na określonym porcie za pomocą UDP.

Próbowałem telnet, ale nie wygląda na to, że obsługuje UDP. Używałbym netcata, ale nie mogłem znaleźć żadnego pakietu. Ta maszyna jest w produkcji, więc nie chcę robić zamieszania przy kompilowaniu lub instalowaniu zbyt wielu rzeczy ... (nmap, netcat ze źródła ...)

Jakiś prosty sposób to zrobić?

skinp
źródło

Odpowiedzi:

16

Pingowanie portu UDP jest dość trudne, ponieważ per se nie ma połączeń . Jeśli nie masz kontroli nad zdalnym hostem, możesz naprawdę nigdy nie wiedzieć, czy twoje datagramy UDP są faktycznie odbierane. Zakładam, że wiesz już, czy zdalny host jest nieosiągalny, przez ping, traceroute, mtr, itd. (Jeśli nie, sprawdź, czy pierwszy!)

Następnie, ponieważ nie masz netcat, będziesz potrzebować jakiegoś sposobu generowania pakietów UDP.

bashShell wysyła pakiety UDP kiedy przekierować dane do specjalnego urządzenia /dev/udp/host/port. Na przykład:

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

Python oczywiście jest również w pełni zdolny do UDP, np

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

Niezależnie od tego, w jaki sposób zamierzasz wygenerować pakiet „ping” UDP, będziesz chciał wiedzieć, czy cel go otrzymał. Jeśli port docelowy jest otwarty (tzn. Usługa nasłuchuje na danym porcie), to co się stanie, będzie zdefiniowane przez aplikację. Mamy nadzieję, że zauważysz pewne zachowanie lub wskazania ze zdalnego systemu.

Jeśli port docelowy jest zamknięty (tzn. Żadna usługa nie nasłuchuje na tym porcie), powinieneś otrzymać w odpowiedzi pakiet błędów ICMP. Skorzystaj ze swojego ulubionego sieciowego sniffera przewodowego, aby go obejrzeć. A może twój system HP-UX rejestruje gdzieś błędy ICMP (przepraszam, nie mam doświadczenia z HP-UX).

Niestety, jeśli cel jest zaporą ogniową, możesz nie otrzymać odpowiedzi, gdy port docelowy jest zamknięty. Jedynym pewnym sposobem na sprawdzenie, czy zdalny host reaguje, jest uruchomienie aplikacji zależnej od danych UDP i obserwowanie ruchu sieciowego.

Steven Monday
źródło
10

Możesz użyć netcat. W OSX jest to moje polecenie:

$ 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
źródło
Idealnie, nc działa na wszystko!
Shoaib Khan,