study the docker network of macvlan

Introduce:

在 Macvlan 出现之前,我们只能为一块以太网卡添加多个 IP 地址,却不能添加多个 MAC 地址,因为 MAC 地址正是通过其全球唯一性来标识一块以太网卡的,即便你使用了创建 ethx:y 这样的方式,你会发现所有这些“网卡”的 MAC 地址和 ethx 都是一样的,本质上,它们还是一块网卡,这将限制你做很多二层的操作
。有了 Macvlan 技术,你可以这么做了。

Macvlan 和 Bridge 比较相似,但因为它省去了 Bridge 的存在,所以配置和调试起来比较简单,而且效率也相对高。除此之外,Macvlan 自身也完美支持 VLAN。

本机 Macvlan 网卡上面的 IP 无法和物理网卡上面的 IP 通信! -- Tested.

Usage:

docker network create -d macvlan --subnet=192.168.130.0/24 --gateway=192.168.130.1 -o parent=em4 dockerNet                                                                                                                                                                                
                                                                                                                                                                                                                                                                                          
#!/bin/bash                                                                                                                                                                                                                                                                               
                                                                                                                                                                                                                                                                                          
cmd=(                                                                                                                                                                                                                                                                                     
        docker run                                                                                                                                                                                                                                                                        
        --restart=always                                                                                                                                                                                                                                                                  
        --name gwn-chfshan-us-gateway                                                                                                                                                                                                                                                     
        --network dockerNet                                                                                                                                                                                                                                                               
        --ip 192.168.130.28                                                                                                                                                                                                                                                               
        --ulimit nofile=655350:655350                                                                                                                                                                                                                                                     
        -v /etc/nginx/gwn-chfshan-us-gateway:/etc/nginx/                                                                                                                                                                                                                                  
        -d                                                                                                                                                                                                                                                                                
        --privileged=true                                                                                                                                                                                                                                                                 
        gwn-chfshan-us-gateway                                                                                                                                                                                                                                                            
)                                                                                                                                                                                                                                                                                         
                                                                                                                                                                                                                                                                                          
"${cmd[@]}"                                                                                                                                                                                                                                                                               

Note:

the macvlan network will monopolize the physical network card. 独占物理网卡!
and whether the interface on or off promisc mode, 本机 Macvlan 网卡上面的 IP 无法和物理网卡上面的 IP 通信! -- Tested.

判断是否开启了混杂模式:

# ifconfig em4 promisc                                                                                                                                                                                                                                                                    
# cat /sys/class/net/em4/flags                                                                                                                                                                                                                                                            
0x1103                                                                                                                                                                                                                                                                                    
                                                                                                                                                                                                                                                                                          
# ifconfig em4 -promisc                                                                                                                                                                                                                                                                   
# cat /sys/class/net/em4/flags                                                                                                                                                                                                                                                            
0x1003                                                                                                                                                                                                                                                                                    
posted @ 2022-09-28 10:16  武平宁  阅读(23)  评论(0)    收藏  举报