安装虚拟网卡有什么用(什么叫网卡虚拟化)

01 macvlan 简介

前面的文章讲过了几种 Linux 虚拟网络设备:tap/tun、veth-pair、bridge,它们本质上是 Linux 系统 提供的网络虚拟化解决方案,今天要讲的 macvlan 也是其中的一种,准确说这是一种网卡虚拟化的解决方案。因为 macvlan 这种技术能将 一块物理网卡虚拟成多块虚拟网卡 ,相当于物理网卡施展了 多重影分身之术 ,由一个变多个。

02 macvlan 的工作原理

macvlan 是 Linux kernel 支持的新特性,支持的版本有 v3.9-3.19 和 4.0 ,比较稳定的版本推荐 4.0 。它一般是以内核模块的形式存在,我们可以通过以下方法判断当前系统是否支持:

# modprobe macvlan 
# lsmod | grep macvlan 
macvlan 24576 0

   

如果第一个命令报错,或者第二个命令没有返回,说明当前系统不支持 macvlan,需要升级内核。

macvlan 这种技术听起来有点像 VLAN,但它们的实现机制是完全不一样的。macvlan 子接口和原来的主接口是完全独立的,可以单独配置 MAC 地址和 IP 地址,而 VLAN 子接口和主接口共用相同的 MAC 地址。VLAN 用来划分广播域,而 macvlan 共享同一个广播域。

通过不同的子接口,macvlan 也能做到流量的隔离。macvlan 会根据收到包的目的 MAC 地址判断这个包需要交给哪个虚拟网卡,虚拟网卡再把包交给上层的协议栈处理。

03 四种模式

根据 macvlan 子接口之间的通信模式,macvlan 有四种网络模式:

  • private 模式
  • vepa(virtual ethernet port aggregator) 模式
  • bridge 模式
  • passthru 模式

默认使用的是 vepa 模式。

3.1 private

这种模式下,同一主接口下的子接口之间彼此隔离,不能通信。即使从外部的物理交换机导流,也会被无情地丢掉。

3.2 vepa

这种模式下,子接口之间的通信流量需要导到外部支持 802.1Qbg/VPEA 功能的交换机上(可以是物理的或者虚拟的),经由外部交换机转发,再绕回来。

注: 802.1Qbg/VPEA 功能简单说就是交换机要支持 发夹(hairpin) 功能,也就是数据包从一个接口上收上来之后还能再扔回去。

3.3 bridge

这种模式下,模拟的是 Linux bridge 的功能,但比 bridge 要好的一点是每个接口的 MAC 地址是已知的,不用学习。所以,这种模式下,子接口之间就是直接可以通信的。

3.4 passthru

这种模式,只允许单个子接口连接主接口,且必须设置成混杂模式,一般用于子接口桥接和创建 VLAN 子接口的场景。

3.5 mactap

和 macvlan 相似的技术还有一种是 mactap。和 macvlan 不同的是,mactap 收到包之后不是交给协议栈,而是交给一个 tapX 文件,然后通过这个文件,完成和用户态的直接通信。

04 实践

在 Linux 系统下,创建 macvlan 的命令形式如下:

ip link add link DEVICE name NAME type { macvlan | macvtap } mode { private | vepa | bridge | 
 
passthru [ nopromisc ] }

   

通常,单独使用 macvlan 毫无意义,一般都是结合 VM 和容器来构建网络。下面我们就简单使用 namespace 来看看 Linux 是怎么使用 macvlan 的。

实验拓扑如下:

在我的系统中,以接口 enp0s8 为例创建两个 macvlan 子接口(使用 bridge 模式),配置 IP 并将其挂到两个 namespace 中,测试连通性。

# 创建两个 macvlan 子接口 
ip link add link enp0s8 dev mac1 type macvlan mode bridge 
ip link add link enp0s8 dev mac2 type macvlan mode bridge 
 
# 创建两个 namespace 
ip netns add ns1 
ip netns add ns2 
 
# 将两个子接口分别挂到两个 namespace 中 
ip link set mac1 netns ns1 
ip link set mac2 netns ns2 
 
# 配置 IP 并启用 
ip netns exec ns1 ip a a 192.168.56.122/24 dev mac1 
ip netns exec ns1 ip l s mac1 up 
ip netns exec ns1 ip a a 192.168.56.123/24 dev mac2 
ip netns exec ns2 ip l s mac2 up

   

注: enp0s8 的 IP 是 192.168.56.110/24,配置的子接口 IP 也必须是同一网段的。

完了两个子接口 ping 一下:

root@ubuntu:~# ip netns exec ns1 ip a show mac1 
9: mac1@if3: mtu 1500 qdisc noqueue state UNKNOWN group default qlen 1 
link/ether 2e:6e:d9:08:c5:05 brd ff:ff:ff:ff:ff:ff link-netnsid 0 
inet 192.168.56.122/24 scope global mac1 
valid_lft forever preferred_lft forever 
inet6 fe80::2c6e:d9ff:fe08:c505/64 scope link 
valid_lft forever preferred_lft forever 
root@ubuntu:~# ip netns exec ns1 ping 192.168.56.123 
PING 192.168.56.123 (192.168.56.123) 56(84) bytes of data. 
64 bytes from 192.168.56.123: icmp_seq=1 ttl=64 time=0.052 ms 
64 bytes from 192.168.56.123: icmp_seq=2 ttl=64 time=0.028 ms 
^C 
--- 192.168.56.123 ping statistics --- 
2 packets transmitted, 2 received, 0% packet loss, time 1000ms 
rtt min/avg/max/mdev = 0.028/0.040/0.052/0.012 ms

   

可以看到,能够 ping 通,如果把上面的 mode 换成其他模式就行不通了,这个就留给大家去实验了(默认是 vepa 模式)。

另外,在 docker 中,macvlan 是一种较为重要的跨主机网络模型,这块的内容就留作下篇文章再做讲解了。

05 总结

macvlan 是一种网卡虚拟化技术,能够将一张网卡虚拟出多张网卡。

macvlan 的四种通信模式,常用模式是 bridge。

思考一下:

  • macvlan bridge 和 bridge 的异同点?
  • 还有一种类似的技术,多张虚拟网卡共享相同 MAC 地址,但有独立的 IP 地址,这是什么技术?

本文转载自微信公众号「 Linux云计算网络(ID:cloud_dev)」

天下数据是国内屈指可数的拥有多处海外自建机房的新型IDC服务商,被业界公认为“中国IDC行业首选品牌”。

天下数据与全球近120多个国家顶级机房直接合作,提供包括香港、美国、韩国、日本、台湾、新加坡、荷兰、法国、英国、德国、埃及、南非、巴西、印度、越南等国家和地区的服务器、云服务器的租用服务,需要的请联系天下数据客服!

除提供传统的IDC产品外,天下数据的主要职责是为大中型企业提供更精细、安全、满足个性需求的定制化服务器解决方案,特别是在直销、金融、视频、流媒体、游戏、电子商务、区块链、快消、物联网、大数据等诸多行业,为广大客户解决服务器租用中遇到的各种问题。

(0)

相关推荐

  • win7如何安装虚拟网卡

    win7自动了一项Microsoft Loopback Adapter虚拟网卡功能,用于远程计算机之间进行网络连接的一种技术,其实就类似于VPN网络,下面小编为大家分享下如何安装虚拟网卡,希望对大家有 ...

  • 虚拟打印机怎么安装 图文教你如何安装虚拟打印机

    添加打印机命令 也许有些朋友不明白什么是虚拟打印机?其实虚拟打印机,就是指没有安装打印机,但是却能拥有打印机的部分功能。 那么他应用在什么情况下呢?比如我们排版了一个Word文档,想看看打印出来的效果 ...

  • xp安装虚拟打印机及ghost xp系统不能安装虚拟打印机的原因

    虚拟打印机并不是客观上存在的打印机,而是用来生成PS文件的虚拟打印机。客观上存在的打印机,打印输出的是硬拷贝,而虚拟打印机所打印的页面被生成为PS格式的文件。 一、选择[开始]菜单中的[设置]命令,选 ...

  • Win7安装虚拟光驱后导致原来的物理光驱无法使用

    如何解决Win7安装虚拟光驱后导致物理光驱不能用介绍给大家,大家都知道,当我们在安装win7的时候会在系统里面安装虚拟光驱,不过在安装过程中有时候将之前的虚拟光驱删除掉,之后却会发现原来的物理光驱也不 ...

  • 怎么安装虚拟打印机,虚拟打印机安装方法

    我们在编写完文档后经常会想预览一下排版效果,但是如果你没有安装打印机就无法使用,那一定要买一台打印机吗?其实是不需要的,我们只要安装一下虚拟打印机就可以了,本教程为大家介绍一下虚拟打印机的安装方法。 ...

  • 如何在电脑QQ音乐中安装虚拟麦克风

    我们在电脑上使用QQ音乐的时候,支持安装虚拟麦克风的功能了,安装之后,我们在使用腾讯其他的产品的时候也是可以使用的,今天就跟大家介绍一下如何在电脑QQ音乐中安装虚拟麦克风的具体操作步骤.1. 首先打开 ...

  • win系统怎么安装虚拟光驱

    电脑很多软件需要通过光盘进行安装,虚拟光驱可以调用光盘的程序,有小伙伴问怎么安装虚拟光驱,下面小编介绍一下.具体如下:1. 打开任意浏览器,在搜索框输入"deamon-tools" ...

  • 虚拟打印机怎么安装 电脑安装虚拟打印机方法

    对于一些小伙伴来说不知道安装虚拟打印机.下面小编就教大家怎么安装虚拟打印机的一种方法. 操作方法 01 我们首先找到控制面板,然后再找到打印机和传真,点击打印机任务的添加打印机命令,如图. 02 然后 ...

  • 怎样安装虚拟打印机

    虚拟打印机,这说实话安装起来不是很麻烦,小编今天就和大家说下,我们该怎么操作,一起看下:怎样安装虚拟打印机. 操作方法 01 我们先安装虚拟打印机软件,我们在浏览器上输入"PDF虚拟打印机& ...

  • Win10网卡物理地址怎么修改 Win10修改网卡物理MAC地址图文教程

    每台能够上网的电脑都有网卡,不管是有线还是无线,网卡本身都得有物理地址,也就是MAC(Media Access Control 或 Medium Access Control)地址.这个地址理论上是固 ...