web-dev-qa-db-ja.com

UDPポート上のサーバーへの接続を確認する

HP-UXマシンがUDPを使用して特定のポートでリモートマシン(私が制御できない)と通信できるかどうかを知りたいです。

Telnetを試しましたが、UDPをサポートしていないようです。 netcatを使用しましたが、バンドルが見つかりませんでした。このマシンは本番稼働中であるので、物事をコンパイルしたりインストールしたりしすぎないようにしたくありません...(nmap、ソースからのnetcat ...)

これを行う簡単な方法はありますか?

15
skinp

connections自体が存在しないため、UDPポートへのpingは少しトリッキーです。リモートホストを制御できない場合、UDPデータグラムが実際に受信されているかどうかを実際に知ることはできません。 pingtraceroutemtrなどを介して、リモートホストが到達可能かどうかはすでに知っていると思います(そうでない場合は、最初に確認してください)。

次に、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データに依存するアプリケーションを実行し、ネットワークトラフィックを監視することです。

16
Steven Monday

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