属于大家的
VPS知识分享站

买了服务器端口不通?90%是安全组没开,3分钟搞定

经常有用户反馈:按教程一步步操作了,配置也确认没问题,但端口就是连不通。之前帮几个用户远程排查,发现问题几乎都出在同一类地方——不是服务器的问题,而是安全组或防火墙没开。

这篇文章把端口不通的排查流程整理出来,按顺序走,5分钟内基本能定位问题。

先判断问题在哪一环

端口不通不是一个”问题”,而是一个”结果”。问题可能出在好几个环节:

本地网络 → 云平台安全组 → 服务器防火墙 → 服务监听 → 应用配置

排查的黄金原则:从外到内,先排除外层问题,再查内层。不要一上来就登录服务器折腾。

第一步:本地端口检测

先从自己的电脑确认端口到底能不能通。

打开终端,执行:

nc -zv 你的服务器IP 端口号

没有nc的话可以用telnet:

telnet 你的服务器IP 端口号

三种结果:

  • 连接成功(Connection succeeded):端口是通的,问题在应用层(服务配置、Nginx代理等)
  • 连接拒绝(Connection refused):请求到达了服务器,但被拒绝了,大概率是防火墙或服务没监听
  • 连接超时(Connection timed out):请求根本没到服务器,大概率是安全组没开或网络问题

这一步的结果决定了你接下来查什么。

第二步:云平台安全组

如果第一步显示超时或拒绝,先去云平台看安全组。

安全组是云平台控制外部流量能不能访问你服务器的第一道门。很多端口默认是关闭的,需要手动放行。

操作步骤(各厂商逻辑一样,入口不同):

  1. 进入云服务器控制台
  2. 找到你的服务器实例
  3. 点击”安全组”或”防火墙”
  4. 查看”入方向”规则
  5. 检查目标端口是否在放行列表中
  6. 如果没有,添加一条规则:协议TCP,端口范围填你的端口号,来源填0.0.0.0/0

添加完之后等1-2分钟再测试,有些厂商的安全组规则不是即时生效的。

注意检查这几个点:

  • 协议类型要对(TCP还是UDP)
  • 端口范围要包含你的端口(比如你想用8080,端口范围写”8080/8080″或”8080-8080″)
  • 来源IP不要写错了,排查阶段建议先用0.0.0.0/0(允许所有IP)

第三步:服务器防火墙

安全组确认放行了,但端口还是不通,接下来查服务器内部的防火墙。

SSH登录服务器后,先看防火墙状态:

CentOS(firewalld):

systemctl status firewalld
firewall-cmd --list-ports

Ubuntu(ufw):

ufw status

如果端口不在放行列表里,添加它:

# CentOS
firewall-cmd --add-port=8080/tcp --permanent
firewall-cmd --reload

# Ubuntu
ufw allow 8080/tcp

快速验证方法:临时关掉防火墙测试(仅用于排查,确认后记得重新开启):

# CentOS
systemctl stop firewalld

# Ubuntu
ufw disable

关掉防火墙后端口能通了,说明就是防火墙规则的问题,把端口加到放行列表里再开回来。

第四步:确认服务在监听

防火墙也开了,接下来确认服务是否真的在监听这个端口:

ss -tlnp | grep 端口号

或者:

netstat -tlnp | grep 端口号

看到类似这样的输出说明服务在监听:

LISTEN  0  128  *:8080  *:*  users:(("nginx",pid=1234,fd=6))

重点看监听地址:

  • 0.0.0.0:端口 → 所有IP都能访问,没问题
  • 127.0.0.1:端口 → 只允许本地访问,外部连不上
  • :::端口 → IPv6监听,一般没问题

如果没有任何输出,说明服务没有在这个端口上运行。检查服务是否启动、配置文件里的端口是否正确。

第五步:检查服务绑定地址

如果服务监听在127.0.0.1上,外部肯定访问不了。这是一个很常见但不直观的问题。

修改方式取决于你用的技术栈:

Node.js:

app.listen(3000, '0.0.0.0')

Spring Boot(application.properties):

server.address=0.0.0.0

Python Flask:

app.run(host='0.0.0.0', port=5000)

Python Django:

python manage.py runserver 0.0.0.0:8000

改完之后重启服务,再从本地测试。

常见端口问题速查

现象 最可能的原因 解决方法
nc显示超时 安全组没开 云平台添加安全组规则
nc显示拒绝 防火墙拦截或服务没监听 检查firewalld/ufw,检查ss -tlnp
本地能通但别人不行 安全组来源IP限制 改安全组来源为0.0.0.0/0
服务启动了但端口不通 绑定了127.0.0.1 改为0.0.0.0
改了端口后不通 安全组和防火墙没更新 同步更新所有规则

你可能在想

安全组改了还是不通怎么办?

等1-2分钟再测。有些厂商安全组规则有延迟。如果等了还是不通,确认规则的方向(入方向)、协议(TCP)、端口范围、来源IP是否正确。

怎么快速判断是安全组还是防火墙的问题?

临时关掉服务器防火墙再测。如果关了防火墙就能通,是防火墙的问题;如果关了还是不通,是安全组的问题。测完记得把防火墙开回来。

运营商封端口怎么办?

这种情况比较少见,但确实存在。部分运营商会封445、3389等高危端口。解决方法:换一个端口。

容器里的端口怎么排查?

Docker容器需要做端口映射(-p参数),宿主机的防火墙和安全组需要放行映射后的端口。先确认容器的端口映射是否正确:docker ps查看PORTS列。

端口排查的关键就一个字:序。按顺序来,不跳步,不瞎猜,5分钟基本能定位。萤光云的安全组在控制台里直接操作,规则添加后1-2分钟生效,排查端口问题时可以先从这里确认是不是安全组的问题。

赞(0)
未经允许不得转载:VPS知识分享站 » 买了服务器端口不通?90%是安全组没开,3分钟搞定