Linux 下测试端口联通性的多种方法(含无需命令的bash测试方法)

在日常运维或开发工作中,我们经常需要判断一台服务器的某个端口是否可访问。
例如:

  • Web 服务是否启动;
  • 数据库端口是否对外开放;
  • 防火墙是否拦截了通信。

本文将系统介绍 Linux 下测试端口连通性的几种常用方法,从传统工具到纯 Bash 实现,让你在任何环境下都能快速判断端口状态。

一、为什么要测试端口联通性

网络连通性问题常常导致服务无法访问,例如:

  • 程序监听错误端口;
  • 数据库仅监听 127.0.0.1;
  • 防火墙规则阻止外部连接;
  • 云主机安全组未放行端口。

通过测试端口联通性,我们能迅速定位问题是出在服务端配置、网络防火墙还是客户端路由。这是排查网络问题的第一步。

二、使用 telnet 测试(经典方法)

telnet 10.71.80.234 3306

结果解释:

  • 如果出现 Connected to 10.71.80.234 表示端口可达;
  • 如果提示 Connection refusedUnable to connect 表示端口不可达。

优点:

  • 简单直观;
  • 大多数系统默认支持。

缺点:

  • 需要安装 telnet
  • 无法自动化测试;
  • 连接成功后需手动退出(Ctrl + ] → quit)。

三、使用 nc(netcat)命令测试

nc -vz 10.71.80.234 3306

输出示例:

Connection to 10.71.80.234 3306 port [tcp/mysql] succeeded!

优点:

  • 轻量、快速;
  • 支持批量端口扫描;
  • 可自动退出。

缺点:

  • 某些精简版系统未预装;
  • 防火墙丢包时无明确提示。

四、使用 curl(仅限 HTTP/HTTPS)

如果端口是 HTTP 或 HTTPS(如 80、443、8080、8001),可以使用:

curl -I http://10.71.80.234:8001

结果示例:

HTTP/1.1 404 Not Found

表示端口可访问但资源不存在。
若提示 “Connection refused” 或 “Connection timed out” 则说明端口无法访问。

优点:

  • 可检测 HTTP 服务健康度;
  • 可获取状态码。

缺点:

  • 仅适用于 HTTP/HTTPS 端口;
  • 不适用于数据库等非 HTTP 服务。

五、使用 Bash 自带的 /dev/tcp(无工具环境下)

此处内容需要回复后并刷新才能查看

九、结语

端口连通性检测是网络与系统排错中最基本也是最关键的一步。
无论是数据库调试、服务部署还是网络验证,掌握多种检测方式能帮助我们更快定位问题。

如果系统工具齐全,nccurl 是首选;
如果受限于环境或权限,Bash 的 /dev/tcp 是最轻量、最通用的替代方案。

掌握这些方法后,无论身处何种环境,你都能快速判断出“端口到底通不通”。

THE END