
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如果服务端终端能收到:
test123UDP 端口 真正可达。
如果收不到 → 端口未通/被防火墙拦/未监听。
三、方法 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 -uanp2. 远端机器发送 UDP 包能否到达监听端?
nc -u
hping3
nmap -sU
ntpdate -q只有“监听正常 + 可以收发 UDP 包” 才表示端口真正通。