ここにジレンマがあります。別のリモートデバイスと通信するデバイスがありますが、それらの間にファイアウォールがあります。これはUDP接続なので、特定のポートが開いているかどうかをテストするためにTCPユーティリティが機能しません。ファイアウォールから取得できることはわかっていますが、アクセス権がないため、ポートが開いていないことを証明する必要があります。
ソースシステムはWindows 7システムで、デスティネーションシステムはLinuxを実行しているアプライアンスです。
ここにジレンマがあります。別のリモートデバイスと通信するデバイスがありますが、それらの間にファイアウォールがあります。これはUDP接続なので、特定のポートが開いているかどうかをテストするためにTCPユーティリティが機能しません。ファイアウォールから取得できることはわかっていますが、アクセス権がないため、ポートが開いていないことを証明する必要があります。
ソースシステムはWindows 7システムで、デスティネーションシステムはLinuxを実行しているアプライアンスです。
回答:
UDPは明らかに送信して忘れるプロトコルです。たとえば、NMap UDPスキャン中に、UDPポートが開いていることを明確に証明する唯一の方法は、そのポートから応答を受信することです。多くのサービスが任意のデータに応答せず、応答を保証するためにプロトコルまたはアプリケーション固有の要求を必要とする場合があることに留意してください。ただし、特定のICMPコードは、ポートが閉じられていることを保証できます。RFC 792とRFC 1122は、ポートが閉じられたときに何を期待するかについての良い情報を提供します。
たとえば、ICMPタイプ3コード3「宛先ポート到達不能」は、すべての意図および目的のために、閉じたポートであることがほぼ保証されます。
コードの完全なリストはここにあります:
http://www.iana.org/assignments/icmp-parameters/icmp-parameters.xhtml
これは簡単なレシピです:
1)パケットスニファーを開始します。
sudo tcpdump -n -i eth2 icmp &
[1] 1409
$ tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on eth2, link-type EN10MB (Ethernet), capture size 262144 bytes
2)UDPパケットを送信します。
$ echo reply-me | nc -u 1.0.0.2 1000
3)「ICMPポート到達不能」を受け取った場合、そのUDPポートは閉じられています:
20:54:15.475211 IP 1.0.0.2 > 1.0.0.1: ICMP 1.0.0.2 udp port 1000 unreachable, length 45
4)それ以外の場合、通常はポートが開いているか、何かがICMPをブロックしています。