Docker之Flanned容器网络不通-yellowcong

安装完了Flanned,按道理来讲,网络应该是通的但是我的服务器就是不通,当时就据花疼了,后来发现,是自己容器的宿主机之间,防火墙搞的鬼,做法是将防火墙关闭

1、Flanned网络原理

数据从源容器中发出后,经由所在主机的docker0虚拟网卡转发到flannel0虚拟网卡,这是个P2P的虚拟网卡,flanneld服务监听在网卡的另外一端。

源主机的flanneld服务将原本的数据内容UDP封装后根据自己的路由表投递给目的节点的flanneld服务,数据到达以后被解包,然后直接进入目的节点的flannel0虚拟网卡,然后被转发到目的主机的docker0虚拟网卡,最后就像本机容器通信一下的有docker0路由到达目标容器。

这里写图片描述

Flanned做的就是将数据的包进行封装,然后解包操作,原始数据是在起始节点的Flannel服务上进行UDP封装的,投递到目的节点后就被另一端的Flannel服务还原成了原始的数据包,两边的Docker服务都感觉不到这个过程的存在。

这里写图片描述

2、查看路由规则

目标容器地址(172.17.8.2)
这里写图片描述

本机容器地址(172.17.45.2)
这里写图片描述

route -n

可以看到,网络先进过我自己本机的网络,发现不匹配,后走了172.17.0.0/16网段(flannel0)

例如现在有一个数据包要从IP为172.17.45.2(本机)的容器发到IP为172.17.8.2(目标)的容器。根据数据发送节点的路由表,它只与172.17.0.0/16匹配这条记录匹配,因此数据从docker0出来以后就被投递到了flannel0。同理在目标节点,由于投递的地址是一个容器,因此目的地址一定会落在docker0对于的172.17.8.0/24(目标)这个记录上,自然的被投递到了docker0网卡。

这里写图片描述

3、网络访问

本机是172.17.45.0/24网段,访问 172.17.8.0/24网段 成功(我把目标主机的防火墙关闭了)

service iptables stop

这里写图片描述

打开了目标宿主机的防火墙,就完犊子了

service iptables restart 

这里写图片描述

4、修改防火墙

//TODO 这个地方,我也不知道咋该规则,改了也没用,非常蛋疼啊,解决方案只能是关闭防火墙了,以后有方法了,在写出来吧。。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

狂飙的yellowcong

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值