在腾讯云服务器上部署服务时,经常需要开放特定端口供外部访问。本文将详细介绍如何在腾讯云安全组和系统防火墙两个层面正确配置端口开放,确保你的服务能够被正常访问。


一、为什么需要两层配置?

腾讯云服务器开放端口需要在两个层面同时配置:

层面 作用 类比
腾讯云安全组 控制云服务器实例的网络层访问 小区大门门禁
系统防火墙 控制操作系统层面的端口访问 你家房门锁

⚠️ 常见误区:很多人只配置了安全组,却忽略了系统防火墙,导致端口仍然无法访问。


二、配置腾讯云安全组

安全组是腾讯云的虚拟防火墙,是端口开放的第一道关卡。

2.1 操作步骤

  1. 登录 腾讯云控制台

  2. 进入 云服务器 CVM → 选择目标实例

  3. 点击 安全组 标签页

  4. 点击关联的安全组名称,进入详情页

  5. 选择 入站规则添加规则

2.2 规则配置示例

类型 来源 协议端口 策略 备注
自定义 0.0.0.0/0 TCP:80 允许 HTTP 服务
自定义 0.0.0.0/0 TCP:443 允许 HTTPS 服务
自定义 0.0.0.0/0 TCP:8080 允许 自定义 Web 服务
自定义 0.0.0.0/0 TCP:3306 允许 MySQL 数据库
自定义 0.0.0.0/0 TCP:22 允许 SSH 远程连接

💡 安全建议:生产环境建议将来源 0.0.0.0/0(允许所有IP)替换为具体的 IP 或 IP 段,例如 192.168.1.0/24

2.3 快捷模板

腾讯云提供了常用模板,可以直接选择:

  • 放通全部端口:适用于测试环境(生产环境不推荐

  • 放通常用端口:自动开放 22、80、443、3389 等端口

  • 自定义模板:按需配置


三、配置系统防火墙

根据你的操作系统选择对应的防火墙配置方式。

3.1 CentOS 7+/RHEL 7+/Fedora(firewalld)

# 1. 查看防火墙状态
sudo systemctl status firewalld

# 2. 开放单个端口(以 8080 为例)
sudo firewall-cmd --permanent --add-port=8080/tcp

# 3. 开放端口范围
sudo firewall-cmd --permanent --add-port=10000-20000/tcp

# 4. 重新加载配置(必须执行)
sudo firewall-cmd --reload

# 5. 验证端口是否已开放
sudo firewall-cmd --list-ports

# 6. 查看所有配置
sudo firewall-cmd --list-all

3.2 Ubuntu/Debian(ufw)

# 1. 查看防火墙状态
sudo ufw status

# 2. 开放单个端口
sudo ufw allow 8080/tcp

# 3. 开放端口范围
sudo ufw allow 10000:20000/tcp

# 4. 启用防火墙(如果未启用)
sudo ufw enable

# 5. 查看已开放的端口
sudo ufw status verbose

3.3 通用 iptables(适用于所有 Linux 发行版)

# 开放 8080 端口
sudo iptables -I INPUT -p tcp --dport 8080 -j ACCEPT

# 保存规则(不同发行版保存方式不同)
# CentOS/RHEL:
sudo service iptables save

# Ubuntu/Debian(需安装 iptables-persistent):
sudo apt-get install iptables-persistent
sudo netfilter-persistent save

四、验证端口是否开放

4.1 检查本地服务监听

# 使用 netstat(需安装 net-tools)
sudo netstat -tlnp | grep 8080

# 使用 ss(推荐,现代系统自带)
sudo ss -tlnp | grep 8080

# 使用 lsof
sudo lsof -i :8080

如果看到类似以下输出,说明服务正在监听:

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

4.2 本地端口连通性测试

# 在服务器本地测试
telnet localhost 8080
# 或
curl http://localhost:8080

4.3 外部端口连通性测试

在另一台机器或本地电脑上测试:

# 替换为你的服务器公网IP
telnet 你的公网IP 8080

# 或使用 nc(netcat)
nc -vz 你的公网IP 8080

4.4 在线端口检测工具


五、常见问题排查

问题1:安全组已放行,但外网仍无法访问

排查步骤:

  1. 检查系统防火墙是否开放该端口

  2. 检查服务是否已启动并监听正确地址(0.0.0.0 而非 127.0.0.1

  3. 检查云服务器是否有公网IP

问题2:端口被占用

# 查看占用端口的进程
sudo lsof -i :8080
# 或
sudo netstat -tlnp | grep 8080

# 终止占用进程(谨慎操作)
sudo kill -9 <PID>

问题3:服务监听的是 127.0.0.1

如果服务配置绑定的是 127.0.0.1:8080,外网无法访问。需要修改为 0.0.0.0:8080 或服务器的内网IP。

常见服务配置修改:

  • Nginxlisten 8080;(默认监听所有地址)

  • ApacheListen 0.0.0.0:8080

  • MySQLbind-address = 0.0.0.0(在 my.cnf 中)

  • Redisbind 0.0.0.0(在 redis.conf 中)

  • Node.jsapp.listen(8080, '0.0.0.0')

问题4:安全组规则未生效

  • 确认安全组已关联到正确的云服务器实例

  • 确认添加的是入站规则(而非出站规则)

  • 修改后一般立即生效,如未生效可尝试重启实例


六、安全最佳实践

建议 说明
最小权限原则 只开放必要的端口,关闭不需要的端口
限制来源IP 数据库等敏感服务限制为特定IP访问
使用非标准端口 SSH 可改为非 22 端口,减少扫描攻击
定期审计 定期检查安全组规则和防火墙配置
结合密钥认证 SSH 使用密钥而非密码,并关闭密码登录

七、快速检查清单

在排查端口访问问题时,按以下清单逐一检查:

□ 腾讯云安全组入站规则已添加目标端口
□ 安全组已正确关联到云服务器实例
□ 系统防火墙(firewalld/ufw/iptables)已放行端口
□ 服务程序已启动并在监听 0.0.0.0:端口
□ 云服务器具有公网IP且带宽正常
□ 本地网络环境未限制出站访问

八、总结

腾讯云服务器开放端口的核心逻辑:

外部请求 → 腾讯云安全组(入站规则)→ 系统防火墙 → 服务程序

任何一环未正确配置,都会导致端口无法访问。建议按照本文的步骤逐一排查,绝大多数端口访问问题都能迎刃而解。

如果你在实际操作中遇到问题,欢迎在评论区留言交流!

Logo

openEuler 是由开放原子开源基金会孵化的全场景开源操作系统项目,面向数字基础设施四大核心场景(服务器、云计算、边缘计算、嵌入式),全面支持 ARM、x86、RISC-V、loongArch、PowerPC、SW-64 等多样性计算架构

更多推荐