验证 UDP 端口上的服务器的连接性

验证 UDP 端口上的服务器的连接性

我想知道 HP-UX 机器是否可以使用 UDP 通过特定端口与远程机器(我无法控制)通信。

我尝试了 telnet,但它似乎不支持 UDP。我想使用 netcat,但我找不到任何捆绑包。这台机器正在生产中,所以我不想花太多时间编译或安装东西……(nmap、源代码中的 netcat……)

有什么简单的方法可以做到这一点吗?

答案1

对 UDP 端口进行 Ping 操作比较棘手,因为没有連接,就其本身而言。如果您无法控制远程主机,那么您可能永远无法真正知道您的 UDP 数据报是否真的被接收。我假设您已经知道远程主机是否可以通过ping、、等访问traceroutemtr(如果不知道,请先检查!)

接下来,由于您没有netcat,您将需要某种方法来生成 UDP 数据包。

bash当你将数据重定向到特殊设备时,shell 会发送 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 数据的应用程序并观察网络流量。

答案2

您可以使用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

相关内容