云服务商的安全组(或防火墙规则) 和云主机操作系统内部的防火墙,两者缺一不可,否则端口可能无法从外网访问。
以下是通用的配置步骤:
这是云服务器的“第一道门禁”,即使操作系统允许,安全组不放行,端口依然无法访问。
1、登录云服务商控制台(阿里云/腾讯云/华为云/AWS等)。
2、找到“安全组” 或“网络与安全” -> “安全组”。
3、选择或创建安全组:
- 找到你的云主机绑定的安全组(通常是ECS/UHost/EC2实例详情页可以看到)。
4、添加“入方向”规则(Inbound Rules):
规则方向:入方向(指外部访问你的服务器)。
授权策略:允许(Allow)。
协议类型:常用协议(TCP/UDP等),例如Web服务用TCP,DNS用UDP。
端口范围:填写你需要开放的端口号,例如80(HTTP)、443(HTTPS)、3306(MySQL),如果需要开放多个端口,可以写成8000-9000 或80,443,3306。
授权对象:非常重要! 不要轻易设为0.0.0.0/0(全世界都可访问),建议设为:
固定IP访问:你的IP/32(如202.38.64.1/32)
所有IP访问(仅用于测试):0.0.0.0/0(IPv4)或::/0(IPv6)
优先级:如果有冲突规则,优先级高的生效(一般保持默认即可)。
第二步:配置云主机操作系统防火墙(Linux / Windows)
如果是 Linux 系统(CentOS / Ubuntu / Debian)
方法一:使用firewalld(CentOS 7+ / RHEL 8+)
开放某个端口(以 8080 为例) sudo firewall-cmd --zone=public --add-port=8080/tcp --permanent 开放一个端口范围 sudo firewall-cmd --zone=public --add-port=8000-9000/tcp --permanent 重新加载配置使规则生效 sudo firewall-cmd --reload 查看已开放的端口列表 sudo firewall-cmd --list-ports 关闭某个端口 sudo firewall-cmd --zone=public --remove-port=8080/tcp --permanent sudo firewall-cmd --reload
方法二:使用iptables(经典 Linux 防火墙,自行管理)
开放 80 端口 sudo iptables -A INPUT -p tcp --dport 80 -j ACCEPT 保存规则(不同发行版保存方式不同,以 CentOS 为例) sudo service iptables save 或者使用 iptables-persistent(Ubuntu/Debian) sudo netfilter-persistent save sudo netfilter-persistent reload
1、 搜索打开“Windows Defender 防火墙”。
2、 点击左侧“高级设置”。
3、 右键“入站规则” ->“新建规则”。
4、规则类型:选择“端口”。
5、协议和端口:选择“TCP”或“UDP”,勾选“特定本地端口”,输入端口号(如3389 或8080)。
6、操作:选择“允许连接”。
7、配置文件:勾选“域”、“专用”、“公用”(一般默认全选即可)。
8、名称:输入一个你能记住的名字,如“允许Web端口8080”。
9、 点击完成。
即使防火墙放行了,你的应用程序也必须在服务器上运行并监听该端口。
检查方法:在服务器内部使用命令查看端口监听状态:
Linux:sudo netstat -tulnp 或ss -tulnp
Windows:netstat -ano 或Get-Process -Id (Get-NetTCPConnection -LocalPort 8080).OwningProcess
常见问题:如果端口是被动开放(例如你的应用是客户端,需要连接其他服务器的端口,如 MySQL的 3306),则不需要在本机上监听,但需要在安全组出方向开放。
1、安全组和防火墙都设置了,还是无法访问?
检查服务是否正在运行:如systemctl status nginx 或查看应用日志。
检查监听地址:确保服务监听的是0.0.0.0(所有IP)而不是127.0.0.1(仅本地),MySQL 默认可能只绑定127.0.0.1,需要修改配置为0.0.0.0 或::。
2、为什么安全组“添加”规则后,要等几分钟才生效?
- 一般瞬间生效,但如果云平台有缓存或延迟,可尝试重启一次云主机或等待1-2分钟。
3、如何快速测试端口是否开放?
- 在你的本地电脑上使用telnet 你的云主机公网IP 端口号(Windows需安装telnet客户端或使用Test-NetConnection PowerShell命令)。
- 在线端口扫描工具(如tool.chinaz.com/port)。
4、端口被占用怎么办?
- 使用lsof -i :端口号(Linux)或netstat -ano(Windows)找到占用进程,修改你的应用端口,或停止占用进程。
1、云服务商安全组 →放行入方向端口。
2、操作系统防火墙 →放行入方向端口。
3、应用程序 →正在监听0.0.0.0:端口。
任何一层被阻挡,外网都无法访问,建议先完成步骤1,因为大多数云平台默认安全组是“全拒绝”状态,这是最容易出问题的地方。
文章摘自:https://idc.huochengrm.cn/zj/25788.html
评论