教你如何在linux服务器上添加虚拟网卡

教你如何在linux服务器上添加虚拟网卡,第1张

有时候,一台服务器需要设置多个ip,但又不想添加多块网卡,那就需要设置虚拟网卡.这里介绍几种方式在linux服务器上添加虚拟网卡. 我们向eth0中添加一块虚拟网卡: 第一种方法:快递创建删除虚拟网卡 sudo ifconfig eth0:0 192.168.10.10 up 以上的命令就可以在eth0网卡上创建一个叫eth0:0的虚拟网卡,他的地址是:192.168.1.63 如果不想要这个虚拟网卡了,可以使用如下命令删除: sudo ifconfig eth0:0 down 重启服务器或者网络后,虚拟网卡就没有了. hzhsan:但是发现添加的虚拟网卡和原网卡物理地址是一样的。 第二种方法:修改网卡配置文件 在ubuntu下,网卡的配置文件是/etc/network/interfaces,所以我们修改它: sudo vim /etc/network/interfaces 在这个文件中增加如下内容并保存: auto eth0:0 iface eth0:0 inet static address 192.168.10.10 netmask 255.255.255.0 #network 192.168.10.1 #broadcast 192.168.1.255 保存后,我们需要重启网卡(重新加载配置文件)才会生效,使用如下命令重启: sudo /etc/init.d/networking restart 他的优点是重启服务器或者网卡配置不会丢失。 在linux中虚拟网卡的方法 第三种方法:创建tap 前两种方法都有一个特点,创建的网卡可有不同的ip地址,但是Mac地址相同。无法用来创建虚拟机。 添加虚拟网卡tap tunctl -b 附上相关命令简介: 显示网桥信息 brctl show 添加网桥 brctl addbr virbr0 激活网桥 ip link set virbr0 up 添加虚拟网卡tap tunctl -b tap0 ------->执行上面使命就会生成一个tap,后缀从0,1,2依次递增 激活创建的tap ip link set tap0 up 将tap0虚拟网卡添加到指定网桥上。 brctl addif br0 tap0 给网桥配制ip地址 ifconfig virbr1 169.254.251.4 up 将virbr1网桥上绑定的网卡eth5解除 brctl delif virb1 eth5 给virbr1网桥添加网卡eth6 brctl addif virbr1 eth6

通过 ip link add 可以创建多种类型的虚拟网络设备,在 man ip link 中可以得知有以下类型的device:

Virtual Ethernet Port Aggregator。它是HP在虚拟化支持领域对抗Cisco的VN-Tag的技术。

解决了虚拟机之间网络通信的问题,特别是位于同一个宿主机内的虚拟机之间的网络通信问题。

VN-Tag在标准的协议头中增加了一个全新的字段,VEPA则是通过修改网卡驱动和交换机,通过发夹弯技术回注报文

TUN是Linux系统里的虚拟网络设备,它的原理和使用在 Kernel Doc 和 Wiki 做了比较清楚的说明。

TUN设备模拟网络层设备(network layer),处理三层报文,IP报文等,用于将报文注入到网络协议栈。

应用程序(app)可以从物理网卡上读写报文,经过处理后通过TUN回送,或者从TUN读取报文处理后经物理网卡送出。

创建:

创建之后,使用 ip addr 就会看见一个名为”tun-default”的虚拟网卡

可以对tun-default设置IP:

使用open/write等文件 *** 作函数从fd中进行读取 *** 作,就是在收取报文,向fd中写入数据,就是在发送报文。

TAP是Linux系统里的虚拟网络设备,它的原理和使用在 Kernel Doc 和 Wiki 做了比较清楚的说明。

不同于TUN的是,TAP设备模拟链路层设备(link layer),处理二层报文,以太网帧等。

TAP设备的创建过程和TUN类似,在ioctl设置的时候,将类型设置为IFF_TAP即可。

TAP设备与TUN设备的区别在于:

有时我们可能需要一块物理网卡绑定多个 IP 以及多个 MAC 地址,虽然绑定多个 IP 很容易,但是这些 IP 会共享物理网卡的 MAC 地址,可能无法满足我们的设计需求,所以有了 MACVLAN 设备,其工作方式如下:

MACVLAN 会根据收到包的目的 MAC 地址判断这个包需要交给哪个虚拟网卡。单独使用 MACVLAN 好像毫无意义,但是配合之前介绍的 network namespace 使用,我们可以构建这样的网络:

采摘

创建一个基于eth0的名为macv1的macvlan网卡:

macvlan支持三种模式,bridge、vepa、private,在创建的时候设置“mode XXX”:

bridge模式,macvlan网卡和物理网卡直接可以互通,类似于接入到同一个bridge。

vepa模式下,两个macvlan网卡直接不能直接通信,必须通过外部的支持“发夹弯”交换机才能通信。

private模式下,macvlan发出的广播包(arp等)被丢弃,即使接入了支持“发夹弯”的交换机也不能发现其它macvlan网卡,除非手动设置mac。

MACVTAP 是对 MACVLAN的改进,把 MACVLAN 与 TAP 设备的特点综合一下,使用 MACVLAN 的方式收发数据包,但是收到的包不交给 network stack 处理,而是生成一个 /dev/tapX 文件,交给这个文件:

由于 MACVLAN 是工作在 MAC 层的,所以 MACVTAP 也只能工作在 MAC 层,不会有 MACVTUN 这样的设备。

ipvlan和macvlan的区别在于它在ip层进行流量分离而不是基于mac地址,同属于一块宿主以太网卡的所有ipvlan虚拟网卡的mac地址都是一样的。

[图片上传失败...(image-d98b6f-1597455459947)]

veth设备是成对创建的:

创建之后,执行 ip link 就可以看到新创建的veth设备:

注意veth设备前面的ID, 58: 和 59: ,一对veth设备的ID是相差1的,并且系统内全局唯一。可以通过ID找到一个veth设备的对端。

veth设备理解

Intermediate Functional Block device,连接 ifb 中做了很详细的介绍。


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/yw/8396666.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-16
下一篇 2023-04-16

发表评论

登录后才能评论

评论列表(0条)

保存