上一篇介绍docker的组网,其中用到了SNAT和DNAT,收集了网上比较多的资料,温故并把整个流程理了一遍。
1、主机收到报文后,检测该报文的目的MAC地址
1.1 目标MAC地址为组播和广播地址,继续执行;
1.2 目标MAC地址等于主机的MAC地址,继续执行;
1.3 目标MAC地址不等于主机的MAC地址
1.3.1 如果开启ip_forward,继续执行;
1.3.2 如果未开启ip_forward,丢弃该报文;
2、经过eb-brouting(处理广播或组播报文)
3、经过eb-prerouting(可以修改报文的目标MAC)
4、根据目标MAC地址,决定报文往哪走
4.1 目标MAC地址等于主机的MAC地址,进入eb-input,进一步进入到网络层处理;
4.2 目标MAC地址不等于主机的MAC地址,进入eb-forward;
总结而言:
prerouting有修改目标地址的能力(目标MAC和目标IP); //docker中把访问主机的IP转化为访问容器的请求;
output有修

本文深入探讨了Docker网络中iptables和ebtables的使用,特别是在SNAT和DNAT转换中的作用。文章首先介绍了主机如何处理报文,强调了ip_forward的重要性。接着详细阐述了eb-prerouting、eb-input、eb-forward等阶段的功能,特别是它们如何影响报文的目标MAC和IP地址。总结指出,iptables的prerouting和output链以及ebtables的eb-forward链在Docker网络中起到关键作用,确保容器间的通信和对外连接的建立。
最低0.47元/天 解锁文章
2180

被折叠的 条评论
为什么被折叠?



