Проверьте подключение к серверу через порт UDP.

14

Я хочу знать, может ли машина HP-UX связываться с удаленным компьютером (который я не контролирую) через определенный порт с использованием UDP.

Я пробовал telnet, но это не похоже на поддержку UDP. Я бы использовал netcat, но я не смог найти ни одного пакета. Эта машина находится в производстве, поэтому я не хочу слишком много возиться с компиляцией или установкой ... (nmap, netcat from source ...)

Есть ли простой способ сделать это?

skinp
источник

Ответы:

16

Проверка связи с портом UDP довольно сложна, так как соединений как таковых нет. Если у вас нет контроля над удаленным хостом, вы никогда не узнаете, действительно ли принимаются ваши дейтаграммы UDP. Я предполагаю , что вы уже знаете , доступен ли удаленный хост, через ping, traceroute, mtrи т.д. (Если нет, проверьте , что первым!)

Далее, поскольку у вас его нет netcat, вам понадобится способ генерации пакетов UDP.

bashОболочка посылает пакеты UDP при перенаправлении данных на специальное устройство /dev/udp/host/port. Например:

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

Python, конечно, также полностью поддерживает UDP, например

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

Независимо от того, как вы пытаетесь сгенерировать UDP-пакет «ping», вам нужно знать, получил ли его целевой объект. Если целевой порт открыт (то есть служба прослушивает данный порт), то, что произойдет, будет определяться приложением. Надеюсь, вы заметите какое-то поведение или индикацию из удаленной системы.

Если целевой порт закрыт (т. Е. Ни один сервис не прослушивает этот порт), вы должны получить в ответ пакет ошибок ICMP. Используйте ваш любимый анализатор проводной сети, чтобы следить за ним. Или, возможно, ваша система HP-UX где-то регистрирует ошибки ICMP (извините, у меня нет опыта работы с HP-UX).

К сожалению, если цель защищена огнем, вы можете не получить ответ, когда целевой порт закрыт. Единственный надежный способ узнать, реагирует ли удаленный хост, - запустить приложение, зависящее от данных UDP, и наблюдать за сетевым трафиком.

Стивен Понедельник
источник
10

Вы можете использовать netcat. В OSX это моя команда:

$ 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
источник
Отлично, nc работает на все!
Шоаиб Хан