子网冲突的表现
容器默认网段与办公网或虚拟专用网络的路由重叠时,特定目标不可达:用路由表对照容器网络子网,必要时划分独立的地址池。症状常是部分网段不通,而不是整体断网。
基本信息
| 检查 | 对比宿主路由表与容器网络配置 |
|---|---|
| 症状 | 部分网段不通、抓包方向错乱 |
| 长期方案 | 在守护进程配置里规划默认地址池 |
| 生效特点 | 改地址池对已存在的网络不生效 |
| 应对方式 | 重建网络与容器 |
典型使用场景
- 接入办公网或虚拟专用网络后部分服务不可达
- 部署新集群前做地址段规划,避免与内网重叠
- 排查抓包看到的流量走向与预期不符
- 多环境统一地址池规划
- 新增宿主机时快速核对网段是否冲突
对照与规划
对照与规划
ip route | head -20 # 宿主路由表
docker network inspect bridge -f '{{json .IPAM.Config}}' # 容器网络地址段
docker network create --subnet 10.88.0.0/24 appnet2 # 用不冲突的段新建网络关注点与检查方法
| 关注点 | 检查方法 | 异常表现 |
|---|---|---|
| 宿主路由 | 查看路由表 | 目标网段被容器网段覆盖 |
| 容器网段 | 查看网络配置 | 与内网段重叠 |
| 可达性 | 从容器访问目标 | 部分网段通、部分不通 |
| 规划 | 统一地址池 | 各机器各写一套 |
地址池规划要留出与现有内网不重叠的段,并写进环境基线文档,避免各机器各写一套。
改默认地址池对已存在的网络不生效,需要重建网络与容器。
冲突症状常是部分服务正常而不是全断,容易被误判为应用问题,排查时先把网段列表摊开对照。
虚拟专用网络的客户端也会向宿主推送路由,排查时要把这类来源一并纳入。
新建网络时显式指定网段,比依赖默认值更容易与内网规划对齐。
多台宿主共享同一份规划文档,能显著降低这类问题的复发概率。