OpenSUSE Leap 15.3下FirewallD阻止Docker容器入站连接问题求解
问题解决方案
防火墙与Docker端口访问排查命令
- 检查docker域的核心配置是否正常:
firewall-cmd --zone=docker --list-all,重点确认masquerade参数为yes,forward规则默认放行 - 检查public域的端口开放及转发配置:
firewall-cmd --zone=public --list-all,确认80、443端口已加入放行列表,同时开启了masquerade参数 - 查看nat表DNAT规则是否正确生成:
iptables -t nat -L -n -v,查找目标端口为80、443,跳转指向172.18.0.0/16网段容器IP的规则是否存在 - 核对firewalld运行时配置与永久配置是否一致:对比
firewall-cmd --list-all与firewall-cmd --list-all --permanent输出,避免临时配置未持久化导致的规则失效 - 验证内核端口转发参数是否开启:
sysctl net.ipv4.ip_forward,返回值需为1,若为0执行sysctl -w net.ipv4.ip_forward=1并将配置写入/etc/sysctl.conf永久生效 - 查看FORWARD链是否拦截网桥流量:
iptables -L FORWARD -n -v,确认目标为br-7918f1f94df9的流量未被DROP规则拦截 - 临时放行容器网段验证问题:执行
firewall-cmd --permanent --zone=trusted --add-source=172.18.0.0/16 && firewall-cmd --reload后测试远程访问,确认是否为网段放行规则问题
需补充的排查信息:docker-compose.yml的端口映射配置、firewalld版本号、firewall-cmd --list-all-zones的完整输出。
服务器发行版推荐
- RHEL系习惯用户:推荐Rocky Linux 9,完全兼容RHEL生态,社区维护稳定,Docker与firewalld适配经过大量生产环境验证,无SUSE的操作逻辑割裂问题
- 追求易用性与文档丰富度:推荐Ubuntu Server 22.04 LTS,长期支持版本,绝大多数容器相关问题都有现成解决方案,内置ufw防火墙配置比firewalld更简单直观
- 专用容器宿主机场景:推荐Fedora CoreOS,专为容器运行优化的极简发行版,自动更新,预装容器运行时,无需手动处理防火墙与Docker的适配问题
内容的提问来源于stack exchange,提问作者tymur999
相关产品推荐
相关产品推荐

