首页/系统与基础设施/自动化运维速查/端口与防火墙导致的连接异常
排障与安全50 条

端口与防火墙导致的连接异常

端口不通要按监听地址、主机过滤、云侧策略、来源与端口占用逐层确认:服务只监听回环、主机与云两层过滤不一致、以及无状态规则漏放回程是最常见的三类根因。

​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌​​‌​‌‌‌‌​‌‌​​​​‌​‌‌‌​‌​‌​‌‌‌​‌​​​‌‌​‌‌‌‌​‌‌​‌‌​‌​‌‌​​​​‌​‌‌‌​‌​​​‌‌​‌​​‌​‌‌​‌‌‌‌​‌‌​‌‌‌​​​‌​‌‌‌‌​‌‌‌​​​​​‌‌​‌‌‌‌​‌‌‌​​‌​​‌‌‌​‌​​​​‌​‌‌​‌​‌‌​​‌‌​​‌‌​‌​​‌​‌‌‌​​‌​​‌‌​​‌​‌​‌‌‌​‌‌‌​‌‌​​​​‌​‌‌​‌‌​​​‌‌​‌‌​​​​‌​‌‌​‌​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌‌​​‌‌​‌‌‌​​‌‌​​‌​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌​​‌​‌‌​‌‌‌‌​‌‌​‌‌‌​​​‌​‌‌​‌​‌‌​​​‌​​‌‌​‌‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌​‌​‌‌​‌‌​​​​‌​‌‌​​‌‌‌​‌‌​​‌​‌​​‌​‌‌‌​​‌‌​‌​​​​‌‌‌​‌​​​‌‌​‌‌​‌​‌‌​‌‌​​

端口与防火墙是一对组合问题

「服务在跑但连不上」绝大多数发生在端口与过滤这两处:要么服务只监听了本机回环地址,外部自然连不上;要么路径上有过滤规则把包丢掉了。云环境里还要多算一层——安全策略、主机防火墙、以及服务自身的绑定地址,三处任意一处不匹配都表现成同一种超时。成熟的排查方式是先确认监听,再确认逐层放行,最后确认服务本身是否健康。

基本信息

适用对象Linux 主机上的 TCP/UDP 服务与网络过滤
监听查看套接字统计工具可列出监听地址、端口与进程
主机侧过滤firewalld、nftables、iptables、ufw 等不同代际工具
云侧过滤安全组或网络访问控制列表,独立于主机
权限要求查看进程与规则通常需要 root

逐层确认顺序

  • 看监听:确认服务监听的是全网地址而不是回环地址,这是最常见的自伤
  • 看主机过滤:确认主机防火墙放行的端口、协议与来源都匹配
  • 看云侧策略:安全组按方向与来源分别配置,入方向与出方向都要成立
  • 看来源地址:经地址转换后源地址会变化,规则若按源地址限制需要匹配转换后的地址
  • 看无状态规则:无状态过滤下回程端口需单独放行,否则握手无法完成
  • 看端口用途冲突:新服务与已有服务争抢同一端口时,绑定会失败或被第一个进程占住

分类型查证据

分类型查证据
ss -lntp                             # 监听地址、端口与所属进程
ss -lntp | grep -v '127.0.0.1\|\[::1\]'  # 只看对外可达的监听
firewall-cmd --list-all              # firewalld 的放行概览
nft list ruleset                     # nftables 规则全集
iptables -S                          # 传统 iptables 规则
ufw status verbose                   # Debian 系常用前端
nft list ruleset | grep -c drop      # 快速看是否存在丢弃类规则

服务端侧排错

服务端侧排错
ss -lntp | grep ':8080'            # 确认端口确实有人在监听
journalctl -u myapp -n 30 --no-pager # 服务自身日志里常有绑定失败记录
ss -s                                # 查看套接字总量,连接数异常时参考
cat /proc/net/sockstat               # 观察端口与连接资源是否接近上限

现象与对应层

现象检查位置常见根因
本机可连、外部超时监听地址与主机过滤只监听回环或未放行来源
客户端超时、无任何日志云侧策略与主机过滤静默丢弃而非拒绝
监听不存在服务配置与端口占用绑定失败或端口被占用
突然出现绑定失败端口与进程服务未正常退出或权限不足
仅部分客户端失败来源与地址转换源地址匹配规则不成立
主机上装有强制访问控制模块时,服务绑定非常用端口可能被拒绝启动。遇到配置文件正确但进程起不来、日志里提示权限问题的情况,可以查对应端口的策略许可,具体命令随发行版与版本不同,以官方文档为准。
用一次性全放行来验证连通性是有效的排错手段,但验证完必须立刻收回并改成精确放行;把临时规则留在生产环境上,等于把攻击面从一台主机扩到整个网络。

易错点

  • 只看主机防火墙:云侧策略独立生效,两边都放行才真正连通,漏看任一层都会误判
  • 只放行入方向不管出方向:部分环境下出方向默认收紧,回包出不去表现为握手卡住
  • 改规则不重载也不持久化:临时规则重启后消失,故障在重启后复现且现场已丢
  • 用通配来源应急放行后忘记收回:攻击面被长期放大,事后审计也很难追查是谁留下的
  • 忽略端口被占:服务起不来时只看配置文件,不去看实际监听与进程状态

数据来源与参考

  • firewalld 官方文档:区域与服务放行
  • nftables 官方文档:规则集与钩子
  • Linux 手册页:ss(8)、ip(8)

整理校对:其其网ICT文档中心 · 本页地址:docs.qiqicto.com/automation/port-firewall-connection-blockage.html

​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌​​‌​‌‌‌‌​‌‌​​​​‌​‌‌‌​‌​‌​‌‌‌​‌​​​‌‌​‌‌‌‌​‌‌​‌‌​‌​‌‌​​​​‌​‌‌‌​‌​​​‌‌​‌​​‌​‌‌​‌‌‌‌​‌‌​‌‌‌​​​‌​‌‌‌‌​‌‌‌​​​​​‌‌​‌‌‌‌​‌‌‌​​‌​​‌‌‌​‌​​​​‌​‌‌​‌​‌‌​​‌‌​​‌‌​‌​​‌​‌‌‌​​‌​​‌‌​​‌​‌​‌‌‌​‌‌‌​‌‌​​​​‌​‌‌​‌‌​​​‌‌​‌‌​​​​‌​‌‌​‌​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌‌​​‌‌​‌‌‌​​‌‌​​‌​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌​​‌​‌‌​‌‌‌‌​‌‌​‌‌‌​​​‌​‌‌​‌​‌‌​​​‌​​‌‌​‌‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌​‌​‌‌​‌‌​​​​‌​‌‌​​‌‌‌​‌‌​​‌​‌​​‌​‌‌‌​​‌‌​‌​​​​‌‌‌​‌​​​‌‌​‌‌​‌​‌‌​‌‌​​