如何验证UDP端口是否打开?[关闭]


13

我在这里有一个难题。我有一台可以与另一台远程设备通信的设备,但是它们之间有防火墙。这是UDP连接,因此TCP实用程序无法测试特定端口是否打开。我知道我们可以从防火墙获得该信息,但是我没有访问权限,因此我必须证明该端口未打开。

源系统是Windows 7系统,目标系统是运行Linux的设备。


1
如果没有访问防火墙的权限,您就无法分辨(当然,除非您的系统正在运行)。
Ron Trunk

涉及您无法控制的网络的问题在此处明确不在主题之列。
罗恩·莫平

2
我投票将其保持打开状态。我认为这属于灰色区域,这是一个有用的理论/故障排除问题。
Ron Trunk

1
...您可以控制防火墙和网络吗?如果不是,那么这不在这里。
克雷格·康斯坦丁

这是在现在的实验室环境中,我们正在尝试模拟未来的生产情况。我想找到一种方法来解决UDP会话故障,而不必解析服务器端的日志。但是,我要感谢的是,根据交流类型的性质,这是不可能的。
JoeliNNaBit

Answers:


10

UDP显然是一种“ 发送后遗忘”协议。例如,在NMap UDP扫描期间,唯一证明UDP端口打开的唯一方法是从该端口收到响应。请记住,许多服务可能不会回复任意数据,并且需要协议或特定于应用程序的请求才能保证响应。但是,某些ICMP代码可以保证端口是关闭的。RFC 792RFC 1122为我们提供了一些有关关闭端口时的预期信息。

例如,出于所有目的和目的,几乎可以保证ICMP 3类代码3“目标端口不可到达”。

完整的代码列表可以在这里找到:

http://www.iana.org/assignments/icmp-parameters/icmp-parameters.xhtml


1
感谢您的回答。我将调查有关ICMP 3类请求的更多信息。
JoeliNNaBit

7

这是一个快速食谱:

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。


1
由于源系统是Windows 7,因此Linux命令将不起作用。
罗恩·莫平

1
是的,的确如此,但是我将尝试使用虚拟机并检查其是否有效。
JoeliNNaBit

4

"nc -uvz ip port"不太准确,您可能应该使用"nmap -sU -p port ip",如果结果显示为“ open”,则udp端口可能为打开状态;如果显示为“ open | filtered”,则可能为关闭或过滤状态。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.