容器网络不通先从哪里查起,容器网络不通怎么排查?

容器网络不通,核心排查顺序是:先查容器内网络,再查宿主机转发,最后查跨主机链路,一层一层往外找,多数问题都卡在宿主机这一环。

无论是 Docker、Kubernetes 还是裸机运行 containerd,这套排查思路通用,先别急着重启,先搞清楚“谁访问谁不通”,这个前提决定了后续要查看的目标,容器之间不通、容器访问外网不通、外部访问容器不通,链路完全不同,查的方向也不一样。

使用 nsenter 排查容器网络问题
加载中
使用 nsenter 排查容器网络问题

容器网络不通排查步骤:先分清楚问题边界

先说非常现实的一点:容器网络故障,表象一样,根因五花八门。

比如一个常见的场景,前端服务调用后端API超时,你以为是容器网络漂了,实际上一层安全组悄悄改了策略,再比如,Pod 里 curl 百度没反应,但 ping 百度又通,这是 DNS 或代理配置的老问题。

排查的第一步不是敲命令,而是先回答三个问题:

  • 不通的双方分别是谁,源 IP、目标 IP、目标端口是否明确
  • 是间歇性不通,还是彻底不通
  • 在这之前有没有动过 iptables、路由、CNI 插件或云平台安全组

把这些问题确认完,基本能排除一半的无效操作,下面再按三层逐层检查。

先看容器这一层

进入容器执行 ip 和 route,观察它自己眼中的网络世界,容器内命令缺失很正常,尤其是精简镜像里连 ping 都不存在,这时候用 nsenter 切进容器的网络命名空间,复用宿主机工具链。

nsenter -t <容器PID> -n ip addr
nsenter -t <容器PID> -n route -n
nsenter -t <容器PID> -n ping <网关IP>

Docker 下拿 PID 的方式:

docker inspect -f '{{.State.Pid}}' <容器名>

Kubernetes 下用:

kubectl exec -it <pod> -n <namespace> -- ip addr

需要重点确认的内容:

  • 容器内 eth0 上有没有拿到 IP 地址
  • 默认路由是否指向了正确的网关(Docker 通常是 172.17.0.1,K8s 通常是所在节点的 cni0 网关)
  • 容器内能否 ping 通自己的网关

能通网关但出不了外网,问题多半不在容器内,而是宿主机上少了一条 SNAT 规则或 ip_forward 没打开,容器内 IP 是 169.254.x.x 这类地址,说明 DHCP 分配出了问题,属于 CNI 插件或网桥的分配故障,跟路由规则无关。

再强调一次,容器里的 DNS 配置经常被忽略,很多数据库连接报错、接口超时,并不是网络不可达,而是容器内 /etc/resolv.conf 指向的 DNS 服务器不可用,k8s 集群里 CoreDNS 挂了,整个集群的服务发现都会跟着遭殃。

宿主机的转发链路最值得怀疑

相当一部分容器网络不通的故障,根源在宿主机,而不是容器本身。 容器的虚拟网卡经过 veth 对连到宿主机网桥,靠 iptables 或 ipvs 做转发,过程中任何一条规则异常,数据包就断了。

看三步。

第一步,确认 IP 转发是否开启。

sysctl net.ipv4.ip_forward

返回 0 就是没开,Docker 安装时会默认打开,但某些定制化内核或手动修改 sysctl.conf 后,这一项可能被重置,临时开启:

sysctl -w net.ipv4.ip_forward=1

容器网络不通先从哪里查起,容器网络不通怎么排查?

永久开启写在 /etc/sysctl.conf 里。

第二步,检查网桥状态。

ip addr show docker0

Docker 正常时 docker0 有 172.17.0.1/16 的地址且状态 UP,docker0 上没有 IP 或处于 DOWN,网桥本身就是坏的,后面所有容器都无法互访,Kubernetes 环境要查 cni0、flannel.1、tunl0 这类虚拟网卡,哪个不在运行状态,就说明哪个组件挂了。

第三步,看 iptables 规则,特别是 FORWARD 链。

容器间通信会经过 FORWARD 链,一旦其他程序把 FORWARD 策略改成 DROP,所有容器互访全部中断,查看当前命中计数:

iptables -L FORWARD -n -v

很多人在这一步能直接发现规则计数在上涨,说明数据包确实走到了 iptables,但策略允许后才被放行,计数不涨,说明数据包根本没到达这一层,问题在更前面。

还有一类容易踩坑的是 conntrack 表满了,内网大流量业务或短连接很多的场景,连接跟踪表容易被占满,新连接直接丢包。

dmesg | grep conntrack

看到 nf_conntrack: table full 就是表溢出了,需要调整 conntrack_max,或者优化业务侧的连接复用策略,重启容器只能暂时缓解,过一段时间该出现还是会出现。

跨主机通信查overlay链路

同一个宿主机的容器互访没问题,跨宿主机就断,基本可以确定问题出在 overlay 或路由层面,如果用的是 Kubernetes(k8s pod之间的网络),这类场景会非常常见。

先搞清楚节点之间是否在同一二层网络,同一子网内,走的是 underlay 路由;跨网段或跨机房,走的是 VXLAN、IPIP 或 BGP 隧道,查哪段链路,取决于使用的 CNI 插件:

  • Flannel VXLAN 模式,重点看 flannel.1 接口和 VXLAN 端口 8472 的连通性
  • Calico IPIP 模式,重点看 tunl0 接口和 BGP peer 状态
  • Calico BGP 模式(跨网段),重点看 calico-node 组件的 BGP 会话是否 Established
  • Cilium 的 VXLAN 或 Geneve 封装,重点看隧道端点状态

MTU 不匹配也是跨主机网络的常见问题,overlay 网络一般把 MTU 压到 1450 或 1400,如果容器内网卡和隧道接口的 MTU 不一致,表现为小包能通、大包(比如带大 payload 的请求)不通,验证方法:

ping -M do -s 1400 <目标容器IP>

能通,再逐步增大 payload 找到阈值,这属于行业共识认为最容易在跨云环境翻车的配置点,云厂商底层链路 MTU 为 1500,叠加隧道封装后就需要调整。

真正的跨主机链路排查,建议从源容器发起 ping,然后在沿途每个接口上抓包,看数据包停在哪一跳。

tcpdump -i cni0 icmp -nn
tcpdump -i flannel.1 icmp -nn
tcpdump -i eth0 icmp -nn

在哪一层看不到包,问题就锁定在哪一层,这种方式比盲目检查配置要高效得多。

docker容器无法访问外部网络,先看这三个地方

如果遇到容器 ping 不通 8.8.8.8 或外网服务,优先查宿主机自身的网络状态,然后看 NAT 和 DNS。

宿主机先确认能否正常访问外网。 宿主机如果出不去,容器必然出不去,别笑,这个场景生产环境经常出现,比如云主机的安全组或路由表被改动,叠加出方向封禁。

容器网络不通先从哪里查起,容器网络不通怎么排查?

第二步,确认 NAT 规则存在,Docker 靠 iptables 的 MASQUERADE 规则把容器网段转为宿主机的出口 IP。

iptables -t nat -L POSTROUTING -n -v

找到类似这条:

MASQUERADE  all  --  172.17.0.0/16  anywhere

规则不存在,容器访问外网就必然失败,手动补上可以临时解决:

iptables -t nat -A POSTROUTING -s 172.17.0.0/16 -j MASQUERADE

但治本需要确认 Docker 服务启动时是否正确初始化了 iptables,以及有没有安骑士、fail2ban 之类的工具在启动时清洗过规则链。

第三步,看 DNS 配置,容器内默认使用 /etc/resolv.conf 里的配置,Docker 默认继承宿主机的 DNS,如果宿主机 DNS 是内网地址或 127.0.0.1,容器内解析就会超时,使用公共 DNS 或云厂商的内网 DNS 都可以,验证方式:

docker exec <容器名> nslookup baidu.com

返回 No answer 或 read timeout,DNS 的问题跑不掉,这里给出两个国内可用的公共 DNS 做参考,114.114.114.114 和 223.5.5.5。

k8s pod之间网络不通怎么排查

Kubernetes 环境下,Pod 跨节点通信绕不开 CNI,所以排查逻辑和 Docker 不同。

先把服务连通性问题转换成一个简单模型:pod A 访问 pod B 的 IP,这个链路是怎样的,当使用 Flannel VXLAN 模式时,完整链路包含这些节点:

podA → veth → cni0 → flannel.1 → 宿主机eth0 → VXLAN隧道 → 宿主机eth0 → flannel.1 → cni0 → veth → podB

任何一个环节断了,Pod 之间就不通。

建议按下面的顺序定位:

  • 确认目的 Pod 的 IP 存在,且状态为 Running,而不是 Pending 或 Error
  • 在源 Pod 所在节点上执行 kubectl get pods -o wide 获取节点 IP
  • 在源节点 ping 目标节点 IP,看基础网络通不通
  • 再 ping 目标 Pod IP,看 overlay 层是否正常
  • 最后检查 NetworkPolicy 是否定义了拒绝规则,这是 k8s 里独有的坑

Kubernetes 的 NetworkPolicy 是很多人排查半天最后才发现的问题,如果两个 Pod 在同一个 Namespace 下通了,跨 Namespace 之后不同,先查有没有默认拒绝类型的策略。

另一个容易忽略的是 Calico 的 BGP 模式,节点上的 BGP 对端状态如果变成 Down,Cross Subnet 流量就出不去了,查看方式:

calicoctl node status

输出中的 BGP 状态应该显示 Established(或 Up),不是这个状态就需要检查节点之间的 TCP 179 端口是否被安全组拦截,以及 AS 号是否配置一致。

容器网络模式选错,也会造成不通

Docker 有几种模式,选错了,网络不通的排查方向和原因完全不同,先看下面这张表:

模式 网络位置 访问外网 容器间互访 常见问题
bridge 虚拟网桥 + NAT 依赖 iptables SNAT 默认可通 iptables被清、ip_forward关闭
host 复用宿主机网络栈 不存在NAT问题 需要靠端口区分 端口冲突、防火墙规则受限
none

容器网络不通先从哪里查起,容器网络不通怎么排查?

只有loopback

不通不通需要手动挂网卡
container复用其他容器网络取决于被复用容器共享网络栈被复用容器退出后网络即失效

Kubernetes 的 Pod 通常以 bridge 模式为基础,但多网卡场景下用到 multus 插件,情况会更复杂,如果业务侧莫名其妙网络不通,先确认网络模式是否与实际规划一致,这个检查成本很低但经常被忽略。

网络还是不通,兜底方案用在刀刃上

排查到最后仍然找不到原因,考虑重启网络组件,但要有节奏。

单机 Docker 环境:

systemctl restart docker

这里要留意,重启 Docker 不会清空 iptables,但会重建 docker0 网桥生效的规则,Kubernetes 环境重启 CNI 组件:

kubectl rollout restart daemonset -n kube-system calico-node

重启 CNI 之前,先抓一份现场信息,备份这些内容,避免重启之后状态丢失,反而更难定位:

  • iptables 规则快照(iptables-save > iptables_backup.txt)
  • 路由表快照(ip route > route_backup.txt)
  • CNI 接口状态(ip addr > ipaddr_backup.txt)

生产环境执行任何重启操作都得评估影响面,尤其是正在跑核心业务的节点,如果节点已经彻底无法服务,优先先把 Pod 迁移到其他节点,再慢慢排查原因。

容器网络比较好的排查习惯是把检查过程沉淀成固定的 linux 容器网络排查命令集,用的时候直接按顺序执行,能节省大量重复操作。

容器网络不通排查步骤中,最容易忽略的细节

Q:容器 ping 不通,但业务接口正常访问,这是网络问题吗?

大概率不是网络问题,而是节点禁用了 ICMP 协议,很多云主机默认安全组会丢弃 ICMP 包,ping 不通是预期行为,正确的验证方式是用业务端口做 TCP 连通性测试,nc -vz <目标IP> <端口>,或者直接发起真实的业务请求,如果业务链路正常,无需为 ping 不通浪费更多时间。

Q:容器网络重启后恢复,但过一阵又断了,怎么回事?

一种情况是 conntrack 表被占满,新连接被丢弃;另一种情况是某些定时任务清空了 iptables 规则,导致 NAT 失效,先看 dmesg | grep conntrack 的输出,再看系统 crontab 里有没有 iptables 相关的清理脚本,多数情况下这个问题指向不稳定的外部依赖,比如网络插件版本与内核不兼容,导致 VXLAN 隧道偶发重建。

Q:iptables 规则看着没问题,为什么容器还是出不了外网?

先确认查看规则的时机和流量発生時刻是否一致,iptables 规则是具备状态性的,一些程序自动插入的临时规则会在连接结束后被回收,其次看 FORWARD 链默认策略,iptables -L FORWARD 显示 Policy ACCEPT 或 DROP,如果策略是 DROP,即使有放行规则也可能因规则顺序问题导致丢包,最后直接抓包确认,在宿主机 eth0 上用 tcpdump 抓取容器网段 IP 的数据包,看有没有包从物理网卡出去,这一步能直接区分是 NAT 没做还是路由选择错误。

首发原创文章,作者:王坚‌,如若转载,请注明出处:https://idctop.com/article/638888.html

赞 (0)
怎么免费使用Vpsnet自动扩展功能?,有哪些注意事项?
上一篇 2026年9月10日 12:26
到底是哪些玩家炸了服务器,游戏服务器崩溃的原因是什么?
下一篇 2026年9月10日 12:28

相关推荐

  • 非常抱歉请求华为cdn

    针对2026年企业级高并发场景,华为CDN凭借自研芯片与边缘计算深度融合架构,在延迟稳定性、安全防护及国产化合规性上全面领先,是金融、政务及大型互联网平台的首选加速方案,华为CDN核心优势深度解析在2026年的数字基础设施竞争中,内容分发网络(CDN)已不再仅仅是简单的静态资源缓存,而是演变为集计算、存储、安全……

    2026年5月27日
    4900
  • UML三大模型图好用吗?用了半年说说感受

    UML三大模型图好用吗?用了半年说说感受结论先行:UML三大模型图(用例图、类图、时序图)在中大型项目中极具实用价值,但需结合团队能力与项目阶段灵活使用;半年实践表明,其核心价值在于降低沟通成本、提升设计严谨性,而非“画图本身”,三大模型图的本质价值:不是工具,是思维框架UML(统一建模语言)并非“画图工具集……

    云计算 2026年4月17日
    6300
  • BERT大语言模型原理是什么?BERT技术演进详解

    BERT大语言模型的核心在于其创新的预训练机制与双向编码器架构,它彻底改变了自然语言处理领域传统的单向特征提取模式,通过掩码语言模型(MLM)实现了上下文信息的深度融合,为后续大模型的发展奠定了坚实的基石,技术演进并非一蹴而就,从最初的BERT-Base到如今的参数量爆炸式增长,其本质是对语义理解深度的不断追求……

    2026年3月3日
    16100
  • 服务器br0网桥地址怎么修改,网桥管理命令是什么?

    参考文献Red Hat, Inc. “Red Hat Enterprise Linux 9 Networking Guide”, 2026.Linux Foundation, “ip-address(8) man page”, v6.8, 2026.中国电子技术标准化研究院, “GB/T 36326-2018……

    云计算 2026年8月10日
    500
  • CDN云加速是什么?,国内CDN云加速哪家服务商性价比高?

    CDN云加速通过全球分布式节点缓存和智能调度,能将网站内容加载速度提升60%以上,是2026年企业提升用户体验和SEO排名的核心基础设施,CDN云加速的核心价值与行业定位进入2026年,互联网流量持续爆发,用户对页面加载速度的忍耐阈值已降至2秒以内,CDN云加速不再仅是“缓存加速”,而是融合边缘计算、智能安全与……

    2026年7月22日
    2300
  • 大模型创业案例有哪些?大模型创业成功经验分享

    深入研究大模型创业赛道,核心结论非常明确:单纯依赖模型层的创业机会已基本关闭,应用层的“场景深耕”与“垂直整合”才是当前创业者的唯一破局之路, 大模型技术本身已逐渐基础设施化,技术壁垒迅速降低,真正的竞争壁垒在于谁能将大模型能力与具体行业痛点深度耦合,形成闭环的商业价值,创业者必须摒弃“拿着锤子找钉子”的思维……

    2026年3月24日
    12100
  • AI大模型测试流程是什么?如何科学高效地进行AI大模型测试

    关于AI大模型测试流程,说点大实话:测试不是上线前的“走过场”,而是决定模型能否落地、能否稳定服务的关键环节,现实中,大量企业因跳过系统化测试或依赖经验主义测试,导致模型上线后出现幻觉泛滥、偏见放大、性能骤降等问题,最终造成项目返工、品牌受损甚至法律风险,本文基于真实项目经验,拆解一套可落地、可复用的AI大模型……

    云计算 2026年4月17日
    6000
  • 免备案域名cdn怎么配置?免备案域名cdn服务商推荐

    免备案域名配合CDN加速是一种技术上的“障眼法”,它利用境外服务器节点分发内容,从而绕过国内严格的ICP备案制度,但这种方式存在极高的法律合规风险、访问不稳定以及数据安全隐患,强烈建议企业和个人用户放弃此捷径,选择正规备案域名以保障业务长期稳定运行,在数字化时代,网站加载速度直接影响用户体验和搜索引擎排名,许多……

    2026年6月26日
    2200
  • 如何确保数据安全可追溯?国内安全计算技术解析

    筑牢数字时代的信任基石国内安全计算数据溯源是在保障数据安全与隐私的前提下,利用先进技术手段,对数据的产生、流转、处理、存储直至消亡的全生命周期进行可信记录、追踪与验证的过程,其核心价值在于构建数据流转的”透明账本”,在数据合规共享与利用的同时,精准定位问题源头、明晰权责归属、提升数据质量与可信度,是落实国家数据……

    2026年2月11日
    17200
  • lz4压缩cdn是什么,lz4压缩cdn

    LZ4压缩CDN通过其极低的CPU开销和毫秒级解压速度,已成为2026年高并发场景下平衡带宽成本与加载性能的最优解,尤其适合对首屏时间(FCP)敏感且服务器资源有限的业务,在2026年的Web性能优化领域,传统的Gzip压缩已逐渐显露出算力瓶颈,而Zstandard等新型算法虽压缩率高却伴随较高的解压延迟,LZ……

    2026年5月16日
    6100

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注