You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

容器内路由功能异常:可ping通公网但无法访问内网

容器内网路由失效排查方案

我来帮你梳理并排查这个容器路由异常的问题,先明确核心现象:容器能正常访问公网,但无法连通企业内网IP(10.97.179.110),具体表现如下:

现象确认

  • 公网连通性正常:
root@553c9e5ce5ea:/# ping -c 1 8.8.8.8
PING 8.8.8.8 (8.8.8.8) 56(84) bytes of data.
64 bytes from 8.8.8.8: icmp_seq=1 ttl=57 time=9.61 ms
--- 8.8.8.8 ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 9.619/9.619/9.619/0.000 ms
  • 内网连通性失败:
root@553c9e5ce5ea:/# ping -c 1 10.97.179.110
PING 10.97.179.110 (10.97.179.110) 56(84) bytes of data.
--- 10.97.179.110 ping statistics ---
1 packets transmitted, 0 received, 100% packet loss, time 0ms

分步排查建议

1. 检查容器内部路由表

先确认容器有没有指向内网网段的路由条目,这是最常见的原因:

ip route show

如果输出里没有针对10.97.0.0/16(或对应你的内网子网掩码)的路由,那就是路由缺失导致的访问失败。

2. 验证宿主机的内网连通性

容器的网络通常依赖宿主机转发,先在宿主机上测试能不能ping通这个内网IP:

ping -c 1 10.97.179.110
  • 如果宿主机也ping不通:问题出在宿主机本身的内网配置(比如不在对应VLAN、宿主机无内网路由),先解决宿主机的内网访问问题。
  • 如果宿主机能ping通:继续排查容器网络的转发规则。

3. 检查容器网络模式与转发规则

如果用的是默认bridge模式,容器网络是NAT转发,需要确认宿主机的iptables规则是否允许内网网段的流量转发:

# 宿主机上查看转发规则
iptables -L FORWARD -n

也可以临时切换容器为host模式(直接复用宿主机网络),测试是否能连通内网,以此判断是不是bridge模式的配置问题:

docker run --network host [你的容器镜像名]

4. 排查企业内网安全策略

很多企业内网设备会限制非信任网段的访问,需要确认:

  • 内网设备(10.97.179.110)是否允许容器所在网段/宿主机IP访问
  • 企业防火墙、安全组有没有拦截容器到内网的流量

5. 临时修复(路由缺失场景)

如果确认是容器缺少内网路由,可以手动添加临时路由:

# 替换为你的内网网段和宿主机内网网关(比如172.17.0.1,实际以宿主机IP为准)
ip route add 10.97.0.0/16 via 172.17.0.1 dev eth0

如果需要永久生效,可以在创建容器时通过自定义网络配置或--add-host参数预设路由。

内容的提问来源于stack exchange,提问作者blueFast

火山引擎 最新活动