防火墙放行验证是什么
提交放行工单前后都要用数据说话:端口不通究竟是「包被静默丢弃」还是「被明确拒绝」,两者的处理路径完全不同。判断方法很直接:用端口探测工具测连通性,同时在链路一端抓包看回包特征。只见 SYN 重传、既没有 SYN-ACK 也没有 RST,说明中间设备把包丢了(DROP,安全组与云 ACL 常见);立刻收到 RST 则是 REJECT,通常意味着服务没监听或被本机防火墙拒绝。
基本信息
| 适用平台 | Linux、macOS 及云主机环境 |
|---|---|
| 场景 | 验证防火墙、安全组与 ACL 的放行是否生效 |
| 常用组合 | 端口探测配合抓包看回包特征 |
| DROP 特征 | 只见 SYN 重传,无 SYN-ACK 也无 RST |
| REJECT 特征 | 立即返回 RST,或收到 ICMP 端口不可达 |
| 云环境提醒 | 安全组、子网 ACL、主机防火墙可能三层叠加 |
典型使用场景
- 提交放行工单后验证端口是否真的通了,避免反复扯皮。
- 排查「服务正常但外部访问超时」,区分是丢包还是明确拒绝。
- 云主机安全组与子网 ACL 调整后做回归验证。
- 排查应用连数据库超时,确认中间是否被策略丢包。
- 给工单附上探测与抓包证据,缩短审批与复核周期。
验证流程
验证流程
nc -z -w 2 10.0.0.5 9200 && echo OK || echo FAIL # 快速探测端口
nc -z -v -w 3 10.0.0.5 9200 # 输出更详细的结果
timeout 5 tcpdump -i any -nn 'tcp port 9200 and host 10.0.0.5' -c 20
# 只见 SYN 重传、没有 SYN-ACK 也没有 RST → 中间设备静默丢弃
# 立刻收到 RST → 明确拒绝,服务未监听或本机防火墙拒绝
timeout 8 tcpdump -i any -nn 'icmp' -c 10 # 确认是否有 ICMP 不可达
curl -sS -m 3 -o /dev/null -w '%{http_code}\n' http://10.0.0.5:9200/ # 应用层复核抓包现象逐项读法
| 现象 | 含义 | 下一步动作 |
|---|---|---|
| 只发 SYN 无任何回应 | 被静默丢弃 | 检查安全组、云 ACL 与中间防火墙策略 |
| 立即返回 RST | 明确拒绝 | 确认服务是否监听、本机防火墙是否拒绝 |
| 收到 ICMP 端口不可达 | ICMP 拒绝 | 关注策略是否限制 ICMP 返回 |
| 连接建立后无数据 | 放行已生效 | 问题在应用层,转向服务日志 |
| 时通时不通 | 策略或链路抖动 | 排查多策略叠加或会话老化 |
云环境通常有三层防火墙叠加:安全组、子网 ACL、主机自身防火墙。验证时要逐层确认,工单里带上探测与抓包证据,沟通成本最低。
不要用 ping 替代端口探测:ICMP 与 TCP 的放行策略相互独立,ping 通不代表端口开,ping 不通也不代表端口关,两者只能互相参考。
探测超时不要设得太短:跨地域链路往返可能上百毫秒,超时给 1 秒容易把慢链路误判为不通,跨地域建议放宽到 3 到 5 秒。