容器 23:bridge、端口发布和 DNS 各在哪一跳
两条访问路径要分开画
对同一 bridge 子网中两个端点,发送方按照目标 IP/路由挑下一跳,经 veth 到宿主 bridge,再依据二层目的 MAC 转发。对宿主公开端口,请求的原始目标是宿主 IP:端口;具体实现可通过 NAT/代理把流量送入容器 IP:端口,需要核对当时的规则和 conntrack 元组,不能把容器 IP:端口的直连记录冒充端口发布记录。DNS 把名字变成地址,解析成功后仍可能因服务只在 loopback 监听、规则丢包或目标端口未打开而失败。
专用 VM 正例应给同一个 probe-app 分别测试“容器 IP 直连”“宿主发布端口”“名字解析后访问”,记录请求前后源/目的元组、路由、conntrack 与 DNS 结果。三个反例依次让探针只监听 127.0.0.1、让测试域名解析失败、在仅作用于自建实验 namespace 的过滤规则中拒绝请求;分别检查监听、DNS 服务器返回和抓包。不要改共享宿主防火墙、默认路由或全局解析配置。
| 现象 | 首先查 | 排除什么误判 |
|---|---|---|
| 直连可通,发布端口不通 | 宿主监听/NAT/转发 | 不先责怪 bridge |
| DNS 返回地址但请求失败 | 地址、路由、端口及监听 | 不把解析成功当成服务成功 |
| 容器能访问自身 loopback | netns 内监听范围 | 外侧不一定可达 |
练习
- 先预测从宿主发布端口访问时目标 IP:端口在每个环节如何变化,在专用 VM 抓包与 conntrack 对照,不凭口头拓扑画最终元组。
- 分别预测“域名无法解析”“域名可解析但 TCP 拒绝”的观察差异,用同一实验服务单独注入这两种故障,并恢复自建资源。
上一篇:22:netns 和 veth;下一篇:24:CNI。
系列总目录:从进程隔离到运行时与编排。
参考资料
All articles on this blog are licensed under CC BY-NC-SA 4.0 unless otherwise stated.



