安装Docker后导致的网络无法访问异常
在网络上免费学习到了很多有意义的知识,参加一下活动也算是为互联网共享精神出点微薄之力。让他人少踩点坑。
-----------------------------------------------------------------------------------------------------------------------------
1.问题描述:
有同事反馈,局域网服务器内无法访问某个摄像头IP: 172.20.154.17,导致摄像头无法推流。但他自己的办公电脑使用wifi是能正常连接摄像头的。
2.问题分析:
(1)使用ping 命令测试,发现服务器无法 ping 通 172.20.154.17。
(2) 使用 ip route查看路由配置:

发现 172.20 网段走的是:172.20.0.0/16 dev br-2e23336187cd proto kernel scope link src 172.20.0.1 这个路由配置;
对网络敏感的同学应该已经发现这是一个虚拟网卡,是由docker 创建的,由 docker 使用,而且不难发现 docker 已经把 172 开头的网段 172.17、172.18等都占用了,而且不难猜测它后续还会自动占用172开头的其他网段:

3.解决方案:
既然发现问题,那么解决问题就很简单了,就是添加一条指定网段的路由:
ip route add 172.20.154.0/24 via 192.168.0.1 dev ens3
# 如果不是 root 用户需要加 sudo 执行:
sudo ip route add 172.20.154.0/24 via 192.168.0.1 dev ens3
再次查看路由已经添加上了,网络也能正常访问了:


这里需要注意的将这条命令中的值替换成我们网络中的实际值:比如我这里 ens3 是我们的物理网卡,也就是说让 172.20.154 网段的请求都走这个物理网卡,192.168.0.1 是我当前局域网的网关。
其他说明:这条命令只是暂时的,因为重启后就没有了。所以要一劳永逸的话,需要做持久化配置,这里就不演示了。
4.总结:
这个问题本质上是 docker 后,它的默认行为导致的,如果初次接触 docker ,并且对网络不熟悉的话还是容易踩坑的。
更多推荐


所有评论(0)