本文主要是介绍Docker MacVlan(Linux)个人简单理解与介绍,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
Docker MacVlan(Linux)
一、介绍
macvlan是一种linux虚拟化网卡技术,可以将一块物理网卡虚拟化成为多块虚拟网卡,并且每个 虚拟网卡都可以将其虚拟mac并且指定相应的IP地址。但是需要linux内核支持macvlan技术。检测方法如下,如果出现报错或者不返回结果则当前系统不支持macvlan。
#!/bin/bash
lsmod | grep macvlan
1.1 工作模式
1.1.1 Private
private模式下于VEPA模式类似,都是各个子设备之间不可用进行通讯,而此模式不同的是,也不能使用外部交换机链接进行通讯,是完全隔离的!
1.1.2 Virtal Ethernet Port Aggregator
各个子设备无法直接进行通讯,需要外部交换机支持(需支持802.1Qbg/VPEA功能——数据可从接口接受并且可以回传),外部通信正常。
1.1.3 Bridge
桥接模式,各个虚拟的子网卡都被链接到一个虚拟网桥上面可以进行相互通讯,不需要外部交换机支持(内部虚拟)。
1.1.4 Passthrough
这种模式下会完全接管父接口的所有流量信息,并且每个父接口只允许一个macvlan设备进行连接。并且主接口必须改为混杂模式!
#!/bin/bash
#修改混杂模式命令:
ifconfig 查看网卡,记录网卡编号(XXXX)
ip link set XXXX promisc on
ifconfig 查看是否开启混杂模式,网卡属性中含有PROMISC字样即开启
二、配合namespace基本使用
#!/bin/bash
ip link add [link DEV] [ name ] NAME[ txqueuelen PACKETS ][ address LLADDR ][ broadcast LLADDR ][ mtu MTU ][ numtxqueues QUEUE_COUNT ][ numrxqueues QUEUE_COUNT ]type TYPE [ ARGS ]
option:
link DEVICE:指定要操作的物理设备
name NAME:指定新虚拟设备的名称
type TYPE:指定新设备的类型
bridge - Ethernet Bridge device
bond - Bonding device
dummy - Dummy network interface
ifb - Intermediate Functional Block device
ipoib - IP over Infiniband device
macvlan - Virtual interface base on link layer address (MAC)
macvtap - Virtual interface based on link layer address (MAC) and TAP.
vcan - Virtual Controller Area Network interface
veth - Virtual ethernet interface
vlan - 802.1q tagged virtual LAN interface
vxlan - Virtual eXtended LAN
ip6tnl - Virtual tunnel interface IPv4|IPv6 over IPv6
ipip - Virtual tunnel interface IPv4 over IPv4
sit - Virtual tunnel interface IPv6 over IPv4
gre - Virtual tunnel interface GRE over IPv4
gretap - Virtual L2 tunnel interface GRE over IPv4
ip6gre - Virtual tunnel interface GRE over IPv6
ip6gretap - Virtual L2 tunnel interface GRE over IPv6
vti - Virtual tunnel interface
nlmon - Netlink monitoring device
geneve - GEneric NEtwork Virtualization Encapsulation
macsec - Interface for IEEE 802.1AE MAC Security (MACsec)
numtxqueues QUEUE_COUNT:指定新设备的传输队列数
numrxqueues QUEUE_COUNT:指定新设备的接收队列数macvvlan创建
ip link add link DEVICE name NAME type { macvlan | macvtap } mode { private | vepa | bridge | passthru [ nopromisc ] }
范例:ip link add eth0 dev macvlan1 type macvlan mode bridge
创建一个于eth0链接的macvlan网卡,其是桥接模式
- 创建macvlan接口
ip link add eth0 dev macvlan1 type macvlan mode bridge
- 创建namespace空间
ip netns add namespace1
创建命名空间ip link set macvlan1 netns namespace1
将macvlan1绑定到命名空间1上
- 配置macvlan网络‘
ip netns exec amespace1 ip addr add 10.0.0.2/24 dev macvlan1
配置macvlan ip
namespace :对于linux而言,其每个子进程类似的都有一个运行空间,这个运行空间内部的看起来就像一个独立的主机(虚拟化)子容器进程映射到父容器上,子容器与子容器相互隔离,但是父容器可以掌管控制子容器的进程。
ip netns exec namespace ping xxxx 使用指定的namespace运行网络命令
这篇关于Docker MacVlan(Linux)个人简单理解与介绍的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!