云安全组和本地防火墙不属于同一层级,不存在跨层级的优先级数字对比,而是“串联”关系:流量先经过云安全组,再到达本地防火墙,任意一层拒绝都会导致连接失败。
先说结论:两者是纵深防御的两道关卡,没有统一的优先级数值,排查时应遵循“先外后内”原则,优先确认云平台安全组策略,再检查操作系统内部防火墙。
- 先确认:登录云控制台查看安全组入站规则,确认是否放行对应端口和源 IP。
- 先处理:若安全组无误,登录服务器检查本地防火墙(如 iptables/firewalld/Windows Defender)是否拦截。
- 再验证:使用 nc、curl 或 PowerShell 从外部发起连接测试,并结合云平台流日志定位拦截点。
核心结论与架构原理
云安全组是虚拟化层面的分布式防火墙,位于云主机网络接口的外侧,是流量进入实例的第一道防线;而本地防火墙运行在操作系统内核中,是第二道防线。数据包从外部进入应用的路径是:互联网 → 云平台安全组 → 云主机网卡 → 操作系统本地防火墙 → 应用进程。
因此,即使本地防火墙允许,若安全组拒绝,流量在到达服务器前就被丢弃;反之,若安全组允许但本地防火墙拒绝,流量到达服务器后被内核拦截。架构上安全组位于网络边缘,通常对实例内部性能无直接影响,主要差异在于策略管理层面。
主流云平台优先级规则差异
不同云厂商对安全组规则优先级的定义存在差异,配置冲突规则时需仔细查看当前云厂商文档,避免误判。以下是主流平台的规则对照:
| 云厂商 | 优先级标识 | 规则说明 | 冲突生效逻辑 |
|---|---|---|---|
| 阿里云 | 优先级 1-100 | 数字越小优先级越高 | 优先级高的规则优先生效 |
| 腾讯云 | 优先级 1-100 | 数字越小优先级越高 | 优先级高的规则优先生效 |
| AWS | Rule Number | 数字越小优先级越高 | 按规则号从小到大评估 |
| 华为云 | 优先级 1-100 | 数字越小优先级越高 | 优先级高的规则优先生效 |
实操排查命令(Linux & Windows)
若怀疑本地防火墙拦截,可在服务器内部执行以下命令快速查看状态。注意:现代 Linux 最小化安装通常未预装 telnet,建议使用 nc 或 curl。
Linux 系统
# 查看 iptables 规则(含计数) sudo iptables -L -n -v # 查看 firewalld 状态及规则 sudo firewall-cmd `--list-all` sudo systemctl status firewalld # 外部连通性测试(推荐替代 telnet) nc -zv <目标 IP> <端口> # 或 curl -v telnet://<目标 IP>:<端口>
Windows 系统
# 查看防火墙状态及规则(PowerShell 管理员权限) Get-NetFirewallRule -DisplayGroup "Remote Desktop" | Select-Object Name, Enabled, Direction, Action # 查看所有配置文件状态 netsh advfirewall show allprofiles # 外部连通性测试(PowerShell) Test-NetConnection -ComputerName <目标 IP> -Port <端口>
风险提示:生产环境严禁直接使用 systemctl stop firewalld 或关闭 Windows 防火墙服务,这将导致服务器暂时裸露在公网。若需验证,建议通过 VNC 登录添加一条临时允许规则,测试完成后立即删除。
分步排查流程
1. 检查云平台安全组规则
登录云控制台,路径通常为“专有网络 VPC