使用 netcat 测试 UDP 端口的连通性
因为公司网络防火墙一般对端口会有一些限制,通过公司网络访问外部服务器特定端口时,需要检测与目标服务器特定端口的连通性;对于服务器可达性通常采用 ping 方法,tcp 可以使用 telnet, tcping 工具进行测试。对于 udp 连通性我们通常采用 netcat 工具进行测试。
netcat 安装
对于最小化安装的 Linux 服务器,默认通常不会安装 netcat 工具,需要自行安装。对于不同发行版本的 Linux 服务器安装方法略有差异。
对于 Debian / Ubuntu / Kali 等等发行版,可以使用 apt 命令进行安装
1 |
|
💡 推荐安装 netcat-openbsd,比传统版更兼容。
对于 CentOS / AlmaLinux / Rocky / RHEL / Fedora 等等发行版,可以使用 apt 命令进行安装
1 |
|
⚠️ RHEL 系列没有 netcat 包,改名为 nmap-ncat。
对于 Arch / Manjaro 等等发行版,可以使用 apt 命令进行安装
1 |
|
安装好后测试 UDP 连通性
服务端机器执行:
1 |
|
客户端机器执行:
1 |
|
若服务端屏幕输出 “hello udp” → UDP 连通正常。
如果想测试端口开放性(无输出也能判断)
1 |
|
1 |
|
表示 UDP 端口 53 可达。
问题排查
如果需要定位连接在何处中断或被阻止,可以结合 tcpdump 工具进行排查。
在目标上抓包确认有没有收到客户端包
1 |
|
若 tcpdump 能看到来自你客户端的 UDP 包,但监听服务没有回复 -> 可能服务没有正确处理包或回复被防火墙拦截。
若 tcpdump 看不到包 -> 包在到达服务器前被丢弃(本地防火墙 / 云安全组 / 路由器 / ISP)。
参考文档
使用 netcat 测试 UDP 端口的连通性