基础概念
首先来回顾一下网络的基础概念, 网桥和网关
网桥
网桥(Bridge)是一个局域网与另一个局域网之间建立连接的桥梁. 是一种二层网络设备,
网关
网关实质上是一个网络通向其他网络的IP地址。
比如有网络A和网络B,网络A的IP地址范围为“192.168.1.1~192. 168.1.254”,子网掩码为255.255.255.0;网络B的IP地址范围为“192.168.2.1~192.168.2.254”,子网掩码为255.255.255.0。
在没有路由器的情况下,两个网络之间是不能进行TCP/IP通信的,即使是两个网络连接在同一台交换机(或集线器)上,TCP/IP协议也会根据子网掩码(255.255.255.0)判定两个网络中的主机处在不同的网络里。
而要实现这两个网络之间的通信,则必须通过网关。如果网络A中的主机发现数据包的目的主机不在本地网络中,就把数据包转发给它自己的网关,再由网关转发给网络B的网关,网络B的网关再转发给网络B的某个主机
macvlan
macvlan 是linux内核在3.9版本以上提供较新的一种特性,
允许在同一个物理网卡上配置多个 MAC 地址,即多个 interface,每个 interface 可以配置自己的 IP。
macvlan 本质上是一种网卡虚拟化技术,Docker 用 macvlan 实现容器网络就不奇怪了。
macvlan 的最大优点是性能极好,相比其他实现,macvlan 不需要创建 Linux bridge,而是直接通过以太 interface 连接到物理网络
简单macvlan环境配置
环境是两台VM, 172.16.104.145/172.16.104.146
需要在两台VM上都打开网卡混杂模式和创建docker的macvlan网络
这种模式下的容器, 和宿主机不能互通, 和其他主机以及上面的容器都可以通信