在介绍内容之前,我们先为下来的实验设置真实主机的环境。使用图形化编辑工具将真实主机的真实网卡链接、wifi链接以及Bridge br0全部删除,之后添加网卡,配置ip地址。
1 网络桥接
网络桥接用网络桥实现共享上网主机和客户机除了利用软件外,还可以用系统自带的网络桥建立连接用双网卡的机器做主机。
1.1 真实主机网桥的配置
我们在实验之前将网桥给删除了,接下来我们生成网桥br0并配置网络
1.2 NAT与桥接
虚拟机也是一个真实的系统,存在内核,但是没有真实的硬件环境,当虚拟机和外部通信时需要先和真实主机通信然后利用真实主机的接口进行通信,若是存在网桥的话,虚拟机也可以直接和真实主机的接口进行通信,从而和真实主机成为平行的系统。在创建虚拟机时,使用NAT的方式就是使虚拟机通过内核依存在真机的网卡上,但是这样做会大大降低效率,而且NAT获取的IP与真机不是一个网段上,通信效率低。如果用桥接的方式,让虚拟机同样可以连到真实的物理网卡上,而且这种方式生成虚拟机的方式的IP和真机是在一个网段上,这样通信也很方便。我们已经真机上搭建桥接网络,在创建虚拟机时观察,有桥接和NAT网络选项。
网桥连接:
NAT连接:
1.3 桥接的管理命令
命令 | 动作 |
---|---|
brctl show | 显示桥接 |
brctl addbr br0 | 添加网桥 |
ifconfig br0 172.25.254.133/24 | 临时设定网桥 |
brctl addif br0 eth0 | 将网桥br0链接到真实物理设备eth0上 |
ifconfig br0 down | 关闭网桥br0 |
brctl delbr br0 | 删除网桥br0 |
我们在desktop虚拟机上进行命令的演示:
2 链路聚合(bond\team)
当我们和外网通信时,通过桥接,在桥接上添加了设备,通过该设备访问外部主机,但是只有一块设备时,它坏了以后,就无法和外部通信,所以,我们利用多个真实设备组合成聚合链路,当一个设备坏了以后,另外一个就会顶替工作,进行外部通信的工作。当然,这只是聚合的一种模式,为主备。还有轮循,简单来说,每块网卡轮询发包 (流量分发比较均衡)。剩余的其他模式可以自行了解一下。我们接下来以主备模式进行介绍:
2.1 bond方式:
bonding(绑定)是一种linux系统下的网卡绑定技术,可以把服务器上n个物理网卡在系统内部抽象(绑定)成一个逻辑上的网卡,能够提升网络吞吐量、实现网络冗余、负载等功能,有很多优势。bond 只支持两块网卡,配置bond网络接口步骤如下:
第一步:先给做实验的虚拟机添加一块新的网卡eth1 reboot
再打开一个shell,建立监控:
watch -n 1 cat /proc/net/bonding/bond0
第二步: nmcli connection show 将下面的链接全部删除
nmcli connection delete br0
nmcli connection delete System\ eth0
nmcli connection add con-name bond0 ifname bond0 type bond mode active-backup ip4 172.25.254.172/24 创建bond0聚合链路
nmcli connection add con-name eth0 ifname eth0 type bond-slave master bond0 给链接添加设备eth0
nmcli connection add con-name eth1 ifname eth1 type bond-slave master bond0 给链接添加设备eth1
nmcli connection show 查看全部链接
第三步:再打开一个shell,进行测试:
ping 172.25.254.250
ifconfig eth0 down eth1就会代替eth0工作
ifconfig eth0 up
ifconfig eth1 down eth0就会代替eth1工作
测试:
2.2 team方式:
Team和bond0功能类似,Team不需要手动加载相应内核模块,Team有更强的拓展性,支持8块网卡。
Team的模式有:
broadcast 广播容错、roundrobin 平衡轮叫、activebackup 主备、loadbalance 负载均衡
创建team0接口过程如下:
第一步:
nmcli connection show 将下面的链接全部删除
nmcli connection delete bond0
nmcli connection delete eth0
nmcli connection delete eth1
再打开一个shell,建立监控:watch -n 1 teamdctl team0 stat
第二步:
nmcli connection add con-name team0 type team ifname team0 config '{"runner":{"name":"activebackup"}}' ip4 172.25.254.172/24 创建team0聚合链路
nmcli connection add con-name eth0 ifname eth0 type team-slave master team0 给链接添加设备eth0
nmcli connection add con-name eth1 ifname eth1 type team-slave master team0 给链接添加设备eth1
nmcli connection show 查看全部链接
测试:再打开一个shell,进行测试:
ping 172.25.254.72
ifconfig eth0 down eth1就会代替eth0工作
ifconfig eth0 up
ifconfig eth1 down eth0就会代替eth1工作