Docker 桥接网络无法访问同网段宿主机故障排查

一、故障现象

  1. 环境:CentOS 系统,服务基于 Docker + Docker Compose 部署,容器使用默认 docker0 桥接网络。
  2. 场景:容器需要访问宿主机同网段IP:8080服务。
  3. 表现:
    • 宿主机直接访问 curl -k https://宿主机同网段IP:8080,正常返回响应,网络连通正常。
    • 容器内执行相同命令,直接超时,报错 curl: (28) Failed to connect... Couldn't connect to server
  4. 前置排查:系统防火墙关闭,内核 IP 转发已开启,排除系统层面网络拦截。

二、根因定位

查看 /etc/docker/daemon.json 配置文件,两个核心网络参数被手动禁用,直接导致容器网络转发失效:

json 复制代码
// 错误配置(故障根源)
"iptables": false,
"ip-masq": false

三、故障原理

1. iptables: false(核心故障点)

Docker 依赖 iptables 实现容器网络转发、路由。 配置为 falseDocker 禁止创建任何网络规则 → 容器数据包无法穿出 docker0 网桥,直接被丢弃。

2. ip-masq: false(核心故障点)

该参数开启 IP 伪装(SNAT 源地址转换) 。 容器使用虚拟内网 IP,访问外部设备必须转换为宿主机物理 IP 才能正常回包。 配置为 false关闭地址转换 → 目标设备拒绝响应容器请求。

四、网络架构(完整路径+规则标注)

五、故障解决办法

步骤1:精简并修复 Docker 核心配置

编辑 /etc/docker/daemon.json删除无用配置 ,仅保留核心参数,修复关键网络配置

json 复制代码
{
  "ip-forward": true,
  "ip-masq": true,
  "iptables": true,
  "live-restore": true,
  "log-driver": "json-file",
  "log-opts": {
    "max-file": "10",
    "max-size": "100m"
  }
}

步骤2:重载配置并重启 Docker

环境已开启 live-restore重启 Docker 不中断运行中的容器

bash 复制代码
systemctl daemon-reload
systemctl restart docker

步骤3:重启业务容器

bash 复制代码
docker-compose down && docker-compose up -d

步骤4:连通性验证

bash 复制代码
docker exec -it office-preview curl -k https://192.168.1.200:8080
相关推荐
IT_陈寒21 小时前
Vue的双向绑定把我坑惨了,原来这个场景不能用
前端·人工智能·后端
31535669131 天前
DeepSeek Harness 发布后,我没急着跑 Demo,先把 `.agents/` 翻了一遍
前端·后端·github
Nturmoils1 天前
不在公司,也能连回办公电脑:用 Natapp 打通 Windows 远程桌面
后端
LEE1 天前
AI Agent 都在疯狂加功能,它说:我全砍了
前端·后端
桦说编程1 天前
记一次 Coding Agent 改动带来的bug与启示
后端·agent·vibecoding
302wanger1 天前
Mole-在终端里给Mac做减法
后端
一心只读圣贤书1 天前
本地后端环境与前端联调总结(前端小白视角)
后端
杨利杰YJlio1 天前
KB5121003更新详解:安全启动证书、AI组件、资源管理器与安装验证
前端·javascript·后端
忙碌碌粒粒橙1 天前
《用户付一次钱,你的系统为什么处理了两遍:Webhook 重复投递避坑指南》
后端
数字化探索者笔记1 天前
从零搭建:VMware 银河麒麟V10部署 OceanBase 4.2.5 企业版集中式数据库
后端