要查看CentOS到目的服务器端口是否可达,最直接的办法是用telnet命令:telnet 目标IP 端口,看到Connected to字样就说明端口是通的。 这篇文章会把常用检测命令、使用场景和常见问题一次性讲清楚,让你在排查网络故障时少走弯路。
centos查看端口是否连通命令有哪些
检查端口连通性这件事,说起来简单,但不同场景下选对工具能省不少时间,先从最常用的命令说起。
telnet最基础的连通性验证工具
telnet是历史最悠久的端口测试方案,用法非常直接:
telnet 目标IP 目标端口
比如要测试本机能不能访问192.168.1.10的3306端口:
telnet 192.168.1.10 3306
如果端口可达,你会看到类似这样的输出:
Trying 192.168.1.10...
Connected to 192.168.1.10.
Escape character is '^]'.
看到Connected就代表TCP连接建立成功,如果端口不通,终端会一直卡在Trying状态,直到超时后返回Connection refused或timed out。
很多CentOS最小化安装默认不带telnet客户端,安装命令如下:
yum install -y telnet
或者用dnf:
dnf install -y telnet
nc(netcat)功能更强的替代工具
nc命令比telnet更灵活,常被运维老手称为”网络瑞士军刀”,它的端口测试方式:
nc -zv 目标IP 目标端口
-z表示只扫描不发送数据,-v是显示详细信息,执行后:
Connection to 192.168.1.10 3306 port [tcp/mysql] succeeded!
看到succeeded就说明端口通了,nc还支持端口范围扫描:
nc -zv 192.168.1.10 1-100
这条命令会扫描目标IP的1到100号端口,输出所有开放的端口列表,做基础安全审计时非常实用。
CentOS安装nc:
yum install -y nc
curl和wget针对HTTP服务的测试法
如果目的端口是HTTP(80)或HTTPS(443),直接用curl更顺手:
curl -I http://目标IP:端口
用

-I参数只拿响应头,能快速判断Web服务是否正常响应,wget同样可用:
wget --spider 目标IP:端口
--spider模式只做请求不下载内容,适合探活场景。
centos telnet测端口时常见问题
telnet测端口虽然简单,实际操作中会遇到一些坑。
telnet卡住不返回
最常见的情况是端口被防火墙丢弃,而不是拒绝,当端口未监听时,系统会返回Connection refused;但当防火墙用DROP策略拦截时,请求会一直悬置,直到超时,这时候别急着判断端口不通,先试试从目标服务器本机回环地址(127.0.0.1)测一次,如果本机能通而外部不通,问题基本锁定在防火墙规则上。
telnet命令不存在
很多云服务器镜像为了精简体积,不会预装telnet,报错-bash: telnet: command not found时,按前面提到的yum或dnf方式安装即可,需要注意,非root用户执行安装命令时要加sudo。
用ss和netstat查看本地端口监听状态
有时你连不上目标端口,排查到最后发现问题出在自己这边服务压根没启动,这时需要查看CentOS本机的端口监听状态。
ss命令推荐首选
ss是iproute2工具包的一部分,CentOS 7及以上版本默认自带,查看所有监听端口:
ss -tlnp
各参数含义:
-t:只看TCP协议-l:只显示监听中的socket-n:以数字形式显示端口,不做DNS反向解析-p:显示占用端口的进程名和PID
输出示例:
State Recv-Q Send-Q Local Address:Port Peer Address:Port Process
LISTEN 0 128 0.0.0.0:22 0.0.0.0: users:(("sshd",pid=1234,fd=3))
看到22端口被sshd进程监听,说明SSH服务正常,如果某个应该开着的端口在列表里找不到,那就是服务没起来,先用systemctl status 服务名查状态。
netstat另一个可用选项
虽然ss性能更好、信息更全,但很多老运维仍然习惯netstat,CentOS下安装net-tools后可用:
yum install -y net-tools
查看端口的命令:
netstat -tlnp
输出格式和ss类似,netstat的-a参数可以查看所有连接,包括ESTABLISHED、TIME_WAIT等状态,但在排查监听问题时-tlnp组合就够用了。
centos测试端口连通性工具对比
不同工具适合不同场景,整理成一张对比表:
| 工具 | 默认安装 | 核心用途 | 端口范围扫描 | 适用场景 |
|---|---|---|---|---|
| telnet | 部分镜像自带 | 测试单端口连通性 | 不支持 | 日常快速检测 |
| nc | 需安装 | 端口扫描、端口探测 | 支持 | 批量检测、脚本调用 |
| curl | 多数自带 | Web端口探测 | 不支持 | HTTP/HTTPS服务探活 |
| ss | 默认安装 | 查看本机端口监听 | 不支持 | 自查服务状态 |
| netstat | 需安装 | 查看本机端口监听 | 不支持 | 老系统兼容场景 |
整体来看,临时测一个端口用telnet足够,批量端口扫描选nc更合适。
centos无法连接服务器端口怎么办
这是个高频问题,多数情况下,连不上目标端口的原因集中在下面几个层面,从外到内的顺序排查效率最高。
第一步:确认网络层可达
先用ping确认目标服务器IP层是否通:
ping -c 4 目标IP
ping不通说明网络链路本身有问题,可能是路由不通、云安全组拦ICMP,或者双方不在同一网络段,能通再往下查。
第二步:检查安全组和防火墙
云上服务器最容易踩的坑是安全组规则没放行,登录云控制台,找到目标服务器对应的安全组,确认入方向规则里允许了你访问的协议和端口,安全组挡流量时,即使系统内防火墙关了照样连不上。
操作系统层面的防火墙也要确认,CentOS 7以上默认用firewalld:
firewall-cmd --list-all
如果需要放行某个端口:
firewall-cmd --permanent --add-port=8080/tcp firewall-cmd --reload
第三步:确认目标端口在监听
从目标服务器本机执行:
ss -tln | grep 端口号
看不到对应端口,说明应用没绑上端口或者根本没启动,检查服务状态并启动它:
systemctl status 服务名
systemctl start 服务名
第四步:用traceroute定位中断点
如果网络、防火墙都查过了还是不通,用traceroute看数据包走到哪里断了:
traceroute -T -p 端口号 目标IP
-T用TCP SYN包探测,-p指定端口,每个跃点的延时变化和号能帮你判断是国内骨干网问题还是运营商调度问题。
常见问题解答
问:centos如何一次测试多个端口是否连通?
使用nc的端口范围功能:nc -zv 目标IP 端口1-端口N,比如测试1到100号端口,命令为nc -zv 192.168.1.10 1-100,需要更细化的端口列表时,可以写个简单的for循环脚本实现自定义检测。
问:telnet测试端口不通,但应用访问正常,为什么?
部分服务对来源IP有限制,只允许特定网段访问,telnet的源IP是你的客户端IP,而从应用侧访问时经过了代理或负载均衡,源IP变成了转发节点地址,可以先在代理节点上用telnet测一次,对比结果即可定位问题,某些服务会主动探测客户端协议特征,telnet握手不完整也会被拒绝,但不影响正常业务请求。
问:centos测试端口连通性时,nc和telnet的结果可以互相替代吗?
多数场景下可以,但nc的退出码更适合写脚本,telnet需要人肉看输出,在自动化巡检脚本里,用nc -zv配合判断端口状态是最常见的做法,telnet的交互式特性决定了它更适合人工操作。
从telnet到nc再到ss,每一层工具对应不同阶段的排查需求,把这几条命令吃透,CentOS下端口连通性问题就能解决一大半,选工具时先想清楚自己在哪个环节:测外部连通性用telnet和nc,查本地监听用ss,验证Web服务用curl,按这个思路走基本不会错。
图片来源于AI模型,如侵权请联系管理员。作者:酷小编,如若转载,请注明出处:https://www.kufanyun.com/ask/796422.html


评论列表(4条)
这篇文章写得非常好,内容丰富,观点清晰,让我受益匪浅。特别是关于目标的部分,分析得很到位,给了我很多新的启发和思考。感谢作者的精心创作和分享,期待看到更多这样高质量的内容!
@草草7787:这篇文章写得非常好,内容丰富,观点清晰,让我受益匪浅。特别是关于目标的部分,分析得很到位,给了我很多新的启发和思考。感谢作者的精心创作和分享,期待看到更多这样高质量的内容!
这篇文章写得非常好,内容丰富,观点清晰,让我受益匪浅。特别是关于目标的部分,分析得很到位,给了我很多新的启发和思考。感谢作者的精心创作和分享,期待看到更多这样高质量的内容!
这篇文章的内容非常有价值,我从中学习到了很多新的知识和观点。作者的写作风格简洁明了,却又不失深度,让人读起来很舒服。特别是目标部分,给了我很多新的思路。感谢分享这么好的内容!