Administrator
Published on 2025-11-30 / 0 Visits
0
0

Linux 的 UDP 端口如何验证?——UDP 没有“三次握手”,不能像 TCP 那样直接 telnet,必须用这 4 种方法测试

TCP和UDP可以使用同一个端口号吗? - 萤火架构- 博客园

UDP 特点:

  • 无连接(不建立连接)

  • 不确认、不重传

  • telnet 无法测试

  • nmap、nc 的用法与 TCP 不一样

所以验证 UDP 端口是否在“正常监听”“能否通信”,必须用专业方法。

下面给你 最实用的 4 种验证方式


一、方法 1:看 UDP 服务是否在监听

这是确认服务有没有启动、端口有没有绑定。

sudo netstat -anu | grep 123

或(推荐现代命令):

sudo ss -uanp | grep 123

输出类似:

udp   UNCONN  0  0  0.0.0.0:123    0.0.0.0:*    users:(("chronyd",pid=852,fd=5))

表示:

  • 123 UDP 正在监听

  • 服务为 chronyd

👉 这是验证“服务是否监听”的第一步,但不代表通信可达。


二、方法 2:客户端从远程测试 UDP 端口

使用 nc(netcat)进行发送 + 监听测试。


1)服务端(Linux)监听 UDP 端口

假设你要测试 UDP 123:

nc -lu 123

(l = listen, u = UDP)


2)另一台机器发送数据过来

echo "test123" | nc -u 192.168.1.10 123

如果服务端终端能收到:

test123

UDP 端口 真正可达

如果收不到 → 端口未通/被防火墙拦/未监听。


三、方法 3:用 hping3 发 UDP 探测

适用于排查防火墙、ACL、三层问题。

sudo hping3 -2 123 -c 3 192.168.1.10

解释:

  • -2 = UDP 模式

  • -c 3 = 发 3 个包

  • 123 = 目标 UDP 端口

输出如果有 ICMP port unreachable

ICMP Port Unreachable

说明目标端口 未监听

如果只显示发包但无拒绝:
端口可达 or 被静默丢包
(配合 ss/nc 判断)


四、方法 4:使用 nmap 的 UDP 扫描

sudo nmap -sU -p 123 192.168.1.10

常见输出:

情况 1:open|filtered(最常见)

123/udp open|filtered ntp

表示:

  • 端口可能开启

  • 也可能被防火墙放行但不响应
    UDP 本身没有 ACK,因此 nmap 判为 open|filtered。

情况 2:closed

123/udp closed

端口未监听,且目标明确拒绝。


五、方法 5:验证 NTP/自定义 UDP 服务是否有响应

如果你验证的是 UDP 123(NTP),可以直接用 ntpdate 测试:

ntpdate -q 192.168.1.10

输出类似:

server 192.168.1.10, stratum 3, offset 0.001234

表示 UDP 端口 123 工作正常

如出现:

no server suitable

或 timeout,则端口不可用/被阻断。


六、总结:决定 UDP 端口是否正常的关键验证逻辑

UDP 的特点决定了验证必须分两部分:


1. 本地服务是否正常监听?

ss -uanp

2. 远端机器发送 UDP 包能否到达监听端?

nc -u
hping3
nmap -sU
ntpdate -q

只有“监听正常 + 可以收发 UDP 包” 才表示端口真正通。



Comment