【Linux】iptables&ebtables

上一篇介绍docker的组网,其中用到了SNAT和DNAT,收集了网上比较多的资料,温故并把整个流程理了一遍。

【Linux】iptables&ebtables_第1张图片

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有修改目标地址的能力(目标MAC和目标IP); //docker中可以把方位容器的请求,转化为访问主机的请求,容器之间网络不通;

postrouting有修改源地址的能力(源MAC和源IP); //docker中容器响应客户的请求;

网桥工作在二层网络,即在eb-forward阶段,完成报文转发;



你可能感兴趣的:(Linux)