六,管理虚拟网络

  • [x] Linux网桥基本概念
  • [x] qemu-kvm支持的网络
  • [x] 向虚拟机添加虚拟网络连接
  • [x] 基于NAT的虚拟网络
  • [x] 基于网桥的虚拟网络
  • [x] 用户自定义的隔离的虚拟网络

6.1 Linux网桥与qemu-kvm支持的网络

Linux网桥基本概念

  • [x] 数据链路的设备,基于MAC地址进行转发
  • [x] Redhat/CentOS配置网桥常用方法
    • 命令行(推荐)
    • nmtui:NetworkManager的文本用户接口
    • nmcli:NetworkManager的命令行工具
      # nmcli con add type bridge ifname br0
      # nmcli con show
    • 图形界面管理工具

qemu-kvm支持的网络

  • [x] 虚拟机的网络模式:

    • 基于NAT(NetworkAddressTranslation)的虚拟网络
    • 基于网桥(Bridge)的虚拟网络
    • 用户自定义的隔离的虚拟网络
    • 直接分配网络设备(包括VT-d和SR-IOV)
  • [x] 虚拟机的网卡:
    • RTL8139,e1000,....
    • virtio
      # /usr/libexec/qemu-kvm -net nic,mode1=?

演示:考察默认的虚拟网络的配置

  • [x] 查看宿主机的网络配置
  • [x] 查看虚拟机的网络配置

  1. #qemu-kvm的虚拟网络配置文件在哪?
  2. [root@localhost ~]# ls /etc/libvirt/ #libvirt的所有配置文件目录
  3. libvirt-admin.conf lxc.conf qemu.conf virtlockd.conf
  4. libvirt.conf nwfilter qemu-lockd.conf virtlogd.conf
  5. libvirtd.conf qemu storage #storage目录,所有存储池的XML配置文件
  6. [root@localhost ~]# ls /etc/libvirt/qemu #qemu目录所有qemu有关的配置文件
  7. autostart centos6.5-2.xml centos6.5.xml erp.xml LNMP.xml oa.xml
  8. Base_CentOS7.xml centos6.5-3.xml crm.xml hr.xml networks vm2.xml
  9. [root@localhost ~]# ls /etc/libvirt/qemu/networks/ #qemu里存储所有虚拟网络配置文件的目录networks
  10. autostart default.xml #default.xml这个就是默认的虚拟网络的XML配置文件
  11. [root@localhost ~]# cat /etc/libvirt/qemu/networks/default.xml #查看default.xml内容
  12. <!--
  13. WARNING: THIS IS AN AUTO-GENERATED FILE. CHANGES TO IT ARE LIKELY TO BE
  14. OVERWRITTEN AND LOST. Changes to this xml configuration should be made using:
  15. virsh net-edit default
  16. or other application using the libvirt API.
  17. -->
  18. <network>
  19. <name>default</name> #虚拟网络的名字
  20. <uuid>5687d2e1-c14d-42bb-abe2-fcb4bfac2a12</uuid> #UUID号
  21. <forward mode='nat'/> #虚拟网络的模式NAT
  22. <bridge name='virbr0' stp='on' delay='0'/> #虚拟网络的网桥名称
  23. <mac address='52:54:00:79:e3:41'/>
  24. <ip address='192.168.122.1' netmask='255.255.255.0'> #网桥的IP和掩码
  25. <dhcp>
  26. <range start='192.168.122.2' end='192.168.122.254'/> #DHCP的分发范围
  27. </dhcp>
  28. </ip>
  29. </network>

利用virsh 管理虚拟网络

  1. #virsh里关于网络部分的命令
  2. [root@localhost ~]# virsh help network
  3. Networking (help keyword 'network'):
  4. net-autostart 自动开始网络
  5. net-create 从一个 XML 文件创建一个网络
  6. net-define define an inactive persistent virtual network or modify an existing persistent one from an XML file
  7. net-destroy 销毁(停止)网络
  8. net-dhcp-leases print lease info for a given network
  9. net-dumpxml XML 中的网络信息
  10. net-edit 为网络编辑 XML 配置
  11. net-event Network Events
  12. net-info 网络信息
  13. net-list 列出网络
  14. net-name 把一个网络UUID 转换为网络名
  15. net-start 开始一个(以前定义的)不活跃的网络
  16. net-undefine undefine a persistent network
  17. net-update 更新现有网络配置的部分
  18. net-uuid 把一个网络名转换为网络UUID
  19. #查看所有虚拟网络信息
  20. [root@localhost ~]# virsh net-list
  21. 名称 状态 自动开始 持久
  22. ----------------------------------------------------------
  23. default 活动
  24. #查看某虚拟网络详细信息
  25. [root@localhost ~]# virsh net-info default
  26. 名称: default
  27. UUID: 5687d2e1-c14d-42bb-abe2-fcb4bfac2a12
  28. 活跃:
  29. 持久:
  30. 自动启动:
  31. 桥接: virbr0
  32. #查看某虚拟网络的XML配置文件信息
  33. [root@localhost ~]# virsh net-dumpxml default
  34. <network connections='1'>
  35. <name>default</name>
  36. <uuid>5687d2e1-c14d-42bb-abe2-fcb4bfac2a12</uuid>
  37. <forward mode='nat'>
  38. <nat>
  39. <port start='1024' end='65535'/>
  40. </nat>
  41. </forward>
  42. <bridge name='virbr0' stp='on' delay='0'/>
  43. <mac address='52:54:00:79:e3:41'/>
  44. <ip address='192.168.122.1' netmask='255.255.255.0'>
  45. <dhcp>
  46. <range start='192.168.122.2' end='192.168.122.254'/>
  47. </dhcp>
  48. </ip>
  49. </network>

什么叫做网桥?网桥到底是怎么回事?

  1. [root@localhost ~]# ifconfig -a
  2. ens32: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500 #宿主机的真实网卡接口
  3. inet 192.168.200.132 netmask 255.255.255.0 broadcast 192.168.200.255
  4. inet6 fe80::d302:4c4f:17a0:b161 prefixlen 64 scopeid 0x20<link>
  5. ether 00:0c:29:96:3a:c5 txqueuelen 1000 (Ethernet)
  6. RX packets 793722 bytes 74452602 (71.0 MiB)
  7. RX errors 0 dropped 0 overruns 0 frame 0
  8. TX packets 1308099 bytes 2734536899 (2.5 GiB)
  9. TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
  10. lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536 #宿主机的lo回环接口
  11. inet 127.0.0.1 netmask 255.0.0.0
  12. inet6 ::1 prefixlen 128 scopeid 0x10<host>
  13. loop txqueuelen 1 (Local Loopback)
  14. RX packets 739954 bytes 1460949048 (1.3 GiB)
  15. RX errors 0 dropped 0 overruns 0 frame 0
  16. TX packets 739954 bytes 1460949048 (1.3 GiB)
  17. TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
  18. virbr0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500 #虚拟网桥(虚拟交换机)virbr0
  19. inet 192.168.122.1 netmask 255.255.255.0 broadcast 192.168.122.255
  20. ether 52:54:00:79:e3:41 txqueuelen 1000 (Ethernet)
  21. RX packets 2780 bytes 222708 (217.4 KiB)
  22. RX errors 0 dropped 0 overruns 0 frame 0
  23. TX packets 3652 bytes 360625 (352.1 KiB)
  24. TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
  25. virbr0-nic: flags=4098<BROADCAST,MULTICAST> mtu 1500 #连接到网桥virbr0上的宿主机的虚拟网卡接口
  26. ether 52:54:00:79:e3:41 txqueuelen 1000 (Ethernet)
  27. RX packets 0 bytes 0 (0.0 B)
  28. RX errors 0 dropped 0 overruns 0 frame 0
  29. TX packets 0 bytes 0 (0.0 B)
  30. TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
  31. vnet0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500 ##连接到virbr0上的虚拟机的网卡接口
  32. inet6 fe80::fc54:ff:fe0c:8bd2 prefixlen 64 scopeid 0x20<link>
  33. ether fe:54:00:0c:8b:d2 txqueuelen 1000 (Ethernet)
  34. RX packets 2780 bytes 261628 (255.4 KiB)
  35. RX errors 0 dropped 0 overruns 0 frame 0
  36. TX packets 30643 bytes 1764617 (1.6 MiB)
  37. TX errors 0 dropped 7222 overruns 0 carrier 0 collisions 0
  38. [root@localhost ~]# brctl show
  39. bridge name bridge id STP enabled interfaces
  40. virbr0 8000.52540079e341 yes virbr0-nic #连接到网桥virbr0上的宿主机的虚拟网卡接口
  41. vnet0 #连接到网桥virbr0上的虚拟机的虚拟网卡接口

NAT模式的网桥连接概念图:

查看虚拟机的网络连接配置:

  1. [root@localhost ~]# virsh list
  2. Id 名称 状态
  3. ----------------------------------------------------
  4. 1 centos6.5 running
  5. [root@localhost ~]# virsh edit centos6.5 #相当于以vim在内存中即时打开虚拟机的XML配置文件
  6. #############以上省略若干############
  7. <interface type='network'> #虚拟机的网络接口类型
  8. <mac address='52:54:00:0c:8b:d2'/> #虚拟机的网卡MAC地址
  9. <source network='default'/> #虚拟机的网卡的源网络名称
  10. <model type='virtio'/> #虚拟机的网络接口模式virtio
  11. <address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/>
  12. </interface>
  13. #############以下省略若干############

在宿主机中测试网络联通性

在虚拟机中测试网络联通性

6.2 基于NAT的虚拟网络

  1. [root@localhost ~]# virsh list
  2. Id 名称 状态
  3. ----------------------------------------------------
  4. 1 centos6.5 running
  5. 5 centos6.5-2 running
  6. [root@localhost ~]# brctl show
  7. bridge name bridge id STP enabled interfaces
  8. virbr0 8000.52540079e341 yes virbr0-nic
  9. vnet0
  10. vnet1

通过图形界面向虚拟机中添加一块NAT网卡

  1. [root@localhost ~]# virsh list
  2. Id 名称 状态
  3. ----------------------------------------------------
  4. 1 centos6.5 running
  5. 5 centos6.5-2 running
  6. [root@localhost ~]# virsh domiflist centos6.5 #查看虚拟机网络接口类型
  7. 接口 类型 型号 MAC
  8. -------------------------------------------------------
  9. vnet0 network default virtio 52:54:00:0c:8b:d2
  10. vnet2 network default virtio 52:54:00:ea:57:f7
  11. [root@localhost ~]# virsh domiflist centos6.5-2 #查看虚拟机网络接口类型
  12. 接口 类型 型号 MAC
  13. -------------------------------------------------------
  14. vnet1 network default virtio 52:54:00:35:29:ea
  15. [root@localhost ~]# virsh domifaddr centos6.5 #查看虚拟机网卡IP地址
  16. 名称 MAC 地址 Protocol Address
  17. -------------------------------------------------------------------------------
  18. vnet0 52:54:00:0c:8b:d2 ipv4 192.168.122.123/24
  19. [root@localhost ~]# virsh domifstat centos6.5 vnet0 #查看虚拟机指定网卡的状态
  20. vnet0 rx_bytes 2556553
  21. vnet0 rx_packets 42292
  22. vnet0 rx_errs 0
  23. vnet0 rx_drop 7222
  24. vnet0 tx_bytes 625776
  25. vnet0 tx_packets 6566
  26. vnet0 tx_errs 0
  27. vnet0 tx_drop 0

6.3 基于网桥的虚拟网络

由上图可知:

  • NAT模式:通过网桥virbr0将宿主机上的一块虚拟网卡virbr0-nic与虚拟机的虚拟网卡vnet0进行连接,而后虚拟机的数据包通过网桥virbr0发送到宿主机的虚拟网卡virbr0-net上,再进行宿主机网卡间的数据包转发实现的虚拟机通过宿主机来上网。
  • 桥接模式:通过网桥virbr0将虚拟机的虚拟网卡vnet1直接连接在宿主机的真实物理网卡上,然后通过宿主机的真实物理网卡来上网。
    因此,想要实现桥接的上网模式,我们首先需要学会如何来创建网桥virbr1
  1. #modprobe探测内核对于某个模块是否加载的命令
  2. [root@localhost ~]# which modprobe
  3. /usr/sbin/modprobe
  4. #探测bridge模块是否安装,如果没有,那么--first-time第一时间加载这个模块
  5. [root@localhost ~]# modprobe --first-time bridge #探测网桥模块是否被内核加载
  6. modprobe: ERROR: could not insert 'bridge': Module already in kernel #kernel已经加载了
  7. [root@localhost ~]# modinfo bridge
  8. filename: /lib/modules/3.10.0-514.el7.x86_64/kernel/net/bridge/bridge.ko
  9. alias: rtnl-link-bridge
  10. version: 2.3
  11. license: GPL
  12. rhelversion: 7.3
  13. srcversion: FF0448CD85C271287DE1963
  14. depends: stp,llc
  15. intree: Y
  16. vermagic: 3.10.0-514.el7.x86_64 SMP mod_unload modversions
  17. signer: CentOS Linux kernel signing key
  18. sig_key: D4:88:63:A7:C1:6F:CC:27:41:23:E6:29:8F:74:F0:57:AF:19:FC:54
  19. sig_hashalgo: sha256

6.3.1 通过命令行进行网桥virbr1的创建

  1. [root@localhost ~]# cd /etc/sysconfig/network-scripts/ #进入宿主机物理网卡配置文件目录
  2. [root@localhost network-scripts]# cat ifcfg-ens32 #查看宿主机物理网卡配置文件信息
  3. TYPE=Ethernet
  4. BOOTPROTO=dhcp
  5. DEFROUTE=yes
  6. PEERDNS=yes
  7. PEERROUTES=yes
  8. IPV4_FAILURE_FATAL=no
  9. IPV6INIT=yes
  10. IPV6_AUTOCONF=yes
  11. IPV6_DEFROUTE=yes
  12. IPV6_PEERDNS=yes
  13. IPV6_PEERROUTES=yes
  14. IPV6_FAILURE_FATAL=no
  15. IPV6_ADDR_GEN_MODE=stable-privacy
  16. NAME=ens32
  17. UUID=17fb5987-5317-4bca-8514-9e1b73933184
  18. DEVICE=ens32
  19. ONBOOT=yes
  20. [root@localhost network-scripts]# mkdir bak #创建备份目录
  21. [root@localhost network-scripts]# cp ifcfg-ens32 bak/ifcfg-ens32.bak #复制一份网卡配置文件备份
  22. #复制一份物理网卡配置文件进行修改,作为网桥配置文件
  23. [root@localhost network-scripts]# cp ifcfg-ens32 ifcfg-virbr1
  24. [root@localhost network-scripts]# vim ifcfg-virbr1
  25. [root@localhost network-scripts]# cat ifcfg-virbr1
  26. DEVICE=virbr1
  27. TYPE=Bridge
  28. BOOTPROTO=static
  29. IPADDR=192.168.200.200 #桥接的网桥IP肯定和宿主机要同一网段
  30. NETMASK=255.255.255.0
  31. GATEWAY=192.168.200.2
  32. DNS1=192.168.200.2
  33. ONBOOT=yes
  34. #让物理网卡配置文件可以识别网桥virbr1
  35. [root@localhost network-scripts]# cat ifcfg-ens32
  36. TYPE=Ethernet
  37. BOOTPROTO=dhcp
  38. DEFROUTE=yes
  39. PEERDNS=yes
  40. PEERROUTES=yes
  41. IPV4_FAILURE_FATAL=no
  42. IPV6INIT=yes
  43. IPV6_AUTOCONF=yes
  44. IPV6_DEFROUTE=yes
  45. IPV6_PEERDNS=yes
  46. IPV6_PEERROUTES=yes
  47. IPV6_FAILURE_FATAL=no
  48. IPV6_ADDR_GEN_MODE=stable-privacy
  49. NAME=ens32
  50. UUID=17fb5987-5317-4bca-8514-9e1b73933184
  51. DEVICE=ens32
  52. ONBOOT=yes
  53. BRIDGE=virbr1 #增加本条配置语句
  54. #重启宿主机的网络模式
  55. [root@localhost network-scripts]# service network restart

重启后,同学们会发现,很大概率我们的xshell已经掉线了。

xshell连不上了,怎么办呢?我们现在修改xshell的连接配置。我们去连接virbr1网桥的IP地址。

打开virt-manager图形模式,我们查看网络接口情况

打开虚拟机此时我们发现之前NAT模式连接的虚拟机已经无法连接外网了

我们利用virt-manager图形界面将虚拟机的网卡连接模式切换到桥接模式桥接virbr1

进入虚拟机我们重启网卡的配置文件

此时我们的外部机器也可以ping通我们的桥接的虚拟机了

6.3.2 通过图形界面进行网桥virbr1的创建

  1. [root@localhost ~]# brctl show
  2. bridge name bridge id STP enabled interfaces
  3. virbr0 8000.52540079e341 yes virbr0-nic
  4. vnet1
  5. vnet2
  6. virbr1 8000.000c29963ac5 no ens32
  7. vnet0 #之前本来插在virbr0上的网卡(NAT模式),如今插到virbr1上(桥接模式)

现在我们还原一下virbr1的配置文件。(移走virbr0,还原ens32网卡配置文件等)
如果同学们还原后,发现virbr1还在,也没关系,那是还没清空的缓存导致。
只要图形界面下没有了即可。

图形化创建virbr1

  1. #验证virbr1配置
  2. [root@localhost ~]# cat /etc/sysconfig/network-scripts/ifcfg-ens32 #我们发现网卡配置文件已经改变
  3. DEVICE=ens32
  4. ONBOOT=yes
  5. BRIDGE="virbr1"
  6. [root@localhost ~]# cat /etc/sysconfig/network-scripts/ifcfg-virbr1 #网桥文件被自动创建
  7. DEVICE="virbr1"
  8. ONBOOT="yes"
  9. TYPE="Bridge"
  10. BOOTPROTO="dhcp"
  11. PEERDNS="yes"
  12. IPV6INIT="yes"
  13. IPV6_AUTOCONF="yes"
  14. DHCPV6C="no"
  15. STP="on"
  16. DELAY="0.0"
  17. [root@localhost ~]# brctl show
  18. bridge name bridge id STP enabled interfaces
  19. virbr0 8000.52540079e341 yes virbr0-nic
  20. vnet0
  21. vnet1
  22. vnet2
  23. virbr1 8000.000c29963ac5 no ens32
  24. [root@localhost ~]# service network restart #重启网络,激活virbr1网桥配置
  25. Restarting network (via systemctl): [ 确定 ]
  26. [root@localhost ~]# brctl show
  27. bridge name bridge id STP enabled interfaces
  28. virbr0 8000.52540079e341 yes virbr0-nic
  29. vnet0
  30. vnet1
  31. vnet2
  32. virbr1 8000.000c29963ac5 yes ens32 #已经激活
  33. [root@localhost ~]# ifconfig ens32 #查看物理网卡IP已经消失
  34. ens32: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
  35. inet6 fe80::20c:29ff:fe96:3ac5 prefixlen 64 scopeid 0x20<link>
  36. ether 00:0c:29:96:3a:c5 txqueuelen 1000 (Ethernet)
  37. RX packets 1146650 bytes 107636905 (102.6 MiB)
  38. RX errors 0 dropped 0 overruns 0 frame 0
  39. TX packets 1877446 bytes 3852832284 (3.5 GiB)
  40. TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
  41. [root@localhost ~]# ifconfig virbr1 #查看网桥IP,已经出现
  42. virbr1: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
  43. inet 192.168.200.132 netmask 255.255.255.0 broadcast 192.168.200.255
  44. inet6 fe80::20c:29ff:fe96:3ac5 prefixlen 64 scopeid 0x20<link>
  45. ether 00:0c:29:96:3a:c5 txqueuelen 1000 (Ethernet)
  46. RX packets 164 bytes 11098 (10.8 KiB)
  47. RX errors 0 dropped 0 overruns 0 frame 0
  48. TX packets 101 bytes 16483 (16.0 KiB)
  49. TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0

在工作中,我们通过网桥连接的物理网卡通常都是单点的,因此,我们需要将网桥绑定到多块物理网卡上,这就需要我们学习物理网卡绑定的相关知识。

6.4 配置网卡绑定

实验:配置多网卡绑定的KVM桥接模式

  • [x] 绑定网卡

    • 启用Bonding
    • 配置物理网卡
    • 配置绑定接口
    • 重新启动服务
    • 测试
  • [x] 配置网桥

实操(1):创建多网卡bond

我们给KVM宿主机多天加一块网卡,并删除virbr1网桥还原ens32网卡的初始设置

  1. #查看两块网卡的初始配置
  2. [root@localhost ~]# ifconfig ens32
  3. ens32: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
  4. inet 192.168.200.132 netmask 255.255.255.0 broadcast 192.168.200.255
  5. inet6 fe80::d302:4c4f:17a0:b161 prefixlen 64 scopeid 0x20<link>
  6. ether 00:0c:29:96:3a:c5 txqueuelen 1000 (Ethernet)
  7. RX packets 24084 bytes 13474369 (12.8 MiB)
  8. RX errors 0 dropped 0 overruns 0 frame 0
  9. TX packets 323 bytes 28440 (27.7 KiB)
  10. TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
  11. [root@localhost ~]# ifconfig ens36
  12. ens36: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
  13. inet 192.168.200.136 netmask 255.255.255.0 broadcast 192.168.200.255
  14. inet6 fe80::7d41:4e00:f272:89d2 prefixlen 64 scopeid 0x20<link>
  15. ether 00:0c:29:96:3a:cf txqueuelen 1000 (Ethernet)
  16. RX packets 11580 bytes 1266636 (1.2 MiB)
  17. RX errors 0 dropped 0 overruns 0 frame 0
  18. TX packets 12852 bytes 22770539 (21.7 MiB)
  19. TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
  20. #查看网池基本情况
  21. [root@localhost ~]# virsh net-list
  22. 名称 状态 自动开始 持久
  23. ----------------------------------------------------------
  24. default 活动
  25. #查看默认网池的xml配置信息
  26. [root@localhost ~]# virsh net-dumpxml default
  27. <network connections='2'>
  28. <name>default</name>
  29. <uuid>5687d2e1-c14d-42bb-abe2-fcb4bfac2a12</uuid>
  30. <forward mode='nat'>
  31. <nat>
  32. <port start='1024' end='65535'/>
  33. </nat>
  34. </forward>
  35. <bridge name='virbr0' stp='on' delay='0'/>
  36. <mac address='52:54:00:79:e3:41'/>
  37. <ip address='192.168.122.1' netmask='255.255.255.0'>
  38. <dhcp>
  39. <range start='192.168.122.2' end='192.168.122.254'/>
  40. </dhcp>
  41. </ip>
  42. </network>
  43. #查看KVM宿主机的物理网络接口信息
  44. [root@localhost network-scripts]# virsh iface-list
  45. 名称 状态 MAC 地址
  46. ---------------------------------------------------
  47. ens32 活动 00:0c:29:96:3a:c5
  48. lo 活动 00:00:00:00:00:00

我们发现在查看网络接口时并没有新添加进来的ens36的网卡信息,这是因为还没有相应的网络接口配置文件,我们可以选择手动在/etc/sysconfig/network-scripts/目录下创建,也可以通过virt-manager创建。

通过virt-manager创建网卡接口文件

  1. [root@localhost network-scripts]# ls ifcfg-ens32 ifcfg-ens36
  2. ifcfg-ens32 ifcfg-ens36 #已经有了
  3. [root@localhost network-scripts]# cat ifcfg-ens36
  4. DEVICE="ens36"
  5. HWADDR="00:0c:29:96:3a:cf"
  6. ONBOOT="yes"
  7. BOOTPROTO="dhcp"
  8. [root@localhost network-scripts]# virsh iface-list
  9. 名称 状态 MAC 地址
  10. ---------------------------------------------------
  11. ens32 活动 00:0c:29:96:3a:c5
  12. ens36 活动 00:0c:29:96:3a:cf #已经有了
  13. lo 活动 00:00:00:00:00:00

查看kernel是否支持网卡绑定

  1. #查看是否支持网卡绑定
  2. [root@localhost network-scripts]# lsmod | grep bonding
  3. #激活内核网卡绑定模块
  4. [root@localhost network-scripts]# modprobe --first-time bonding
  5. [root@localhost network-scripts]# lsmod | grep bonding
  6. bonding 141566 0
  7. #备份网卡配置文件
  8. [root@localhost network-scripts]# cp ifcfg-ens* bak/
  9. #修改ens32和ens36网卡配置文件让band0绑定接口为主,他们为从
  10. [root@localhost network-scripts]# vim ifcfg-ens32
  11. [root@localhost network-scripts]# cat ifcfg-ens32
  12. TYPE=Ethernet
  13. BOOTPROTO=none
  14. NAME=ens32
  15. DEVICE=ens32
  16. ONBOOT=yes
  17. MASTER=bond0
  18. SLAVE=yes
  19. NM_CONTROLLED=no
  20. USERCTL=NO
  21. [root@localhost network-scripts]# vim ifcfg-ens36
  22. [root@localhost network-scripts]# cp ifcfg-ens32 ifcfg-ens36
  23. cp:是否覆盖"ifcfg-ens36" y
  24. [root@localhost network-scripts]# vim ifcfg-ens36
  25. [root@localhost network-scripts]# cat ifcfg-ens36
  26. TYPE=Ethernet
  27. BOOTPROTO=none
  28. NAME=ens36
  29. DEVICE=ens36
  30. ONBOOT=yes
  31. MASTER=bond0
  32. SLAVE=yes
  33. NM_CONTROLLED=no
  34. USERCTL=NO
  35. #创建bond0绑定接口配置文件
  36. [root@localhost network-scripts]# vim ifcfg-bond0
  37. [root@localhost network-scripts]# cat ifcfg-bond0
  38. DEVICE=bond0
  39. ONBOOT=yes
  40. NM_CONTROLLED=no
  41. USERCTL=no
  42. BONDING_OPTS="mode=1 miimon=100" #mode=1是主备模式,两块从卡不同时生效
  43. BOOTPROTO=static
  44. IPADDR=192.168.200.132
  45. NETMASK=255.255.255.0
  46. #重新启动网络服务
  47. [root@localhost ~]# service network restart
  48. #查看bond0绑定接口
  49. [root@localhost ~]# ifconfig bond0
  50. bond0: flags=5187<UP,BROADCAST,RUNNING,MASTER,MULTICAST> mtu 1500
  51. inet 192.168.200.132 netmask 255.255.255.0 broadcast 192.168.200.255
  52. inet6 fe80::20c:29ff:fe96:3ac5 prefixlen 64 scopeid 0x20<link>
  53. ether 00:0c:29:96:3a:c5 txqueuelen 1000 (Ethernet)
  54. RX packets 186 bytes 16691 (16.2 KiB)
  55. RX errors 0 dropped 0 overruns 0 frame 0
  56. TX packets 122 bytes 22238 (21.7 KiB)
  57. TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
  58. #查看bond0详细信息
  59. [root@localhost ~]# cat /proc/net/bonding/bond0
  60. Ethernet Channel Bonding Driver: v3.7.1 (April 27, 2011)
  61. Bonding Mode: fault-tolerance (active-backup) #mode=1的模式==>主被动模式
  62. Primary Slave: None
  63. Currently Active Slave: ens32 #当前活动中的网卡ens32
  64. MII Status: up
  65. MII Polling Interval (ms): 100
  66. Up Delay (ms): 0
  67. Down Delay (ms): 0
  68. Slave Interface: ens32
  69. MII Status: up
  70. Speed: 1000 Mbps
  71. Duplex: full
  72. Link Failure Count: 0
  73. Permanent HW addr: 00:0c:29:96:3a:c5
  74. Slave queue ID: 0
  75. Slave Interface: ens36
  76. MII Status: up
  77. Speed: 1000 Mbps
  78. Duplex: full
  79. Link Failure Count: 0
  80. Permanent HW addr: 00:0c:29:96:3a:cf
  81. Slave queue ID: 0

测试绑定中的网卡:

我们断开ens32的网卡

  1. [root@localhost ~]# cat /proc/net/bonding/bond0
  2. Ethernet Channel Bonding Driver: v3.7.1 (April 27, 2011)
  3. Bonding Mode: fault-tolerance (active-backup)
  4. Primary Slave: None
  5. Currently Active Slave: ens36 #ens36被启动了
  6. MII Status: up
  7. MII Polling Interval (ms): 100
  8. Up Delay (ms): 0
  9. Down Delay (ms): 0
  10. Slave Interface: ens32
  11. MII Status: down #ens32 down了
  12. Speed: Unknown
  13. Duplex: Unknown
  14. Link Failure Count: 1
  15. Permanent HW addr: 00:0c:29:96:3a:c5
  16. Slave queue ID: 0
  17. Slave Interface: ens36
  18. MII Status: up
  19. Speed: 1000 Mbps
  20. Duplex: full
  21. Link Failure Count: 1
  22. Permanent HW addr: 00:0c:29:96:3a:cf
  23. Slave queue ID: 0

我们用windows ping KVM宿主机,仍然能通

实操(2):搭建bond的KVM网桥

  1. #验证网桥virbr1状态
  2. [root@localhost ~]# brctl show
  3. bridge name bridge id STP enabled interfaces
  4. virbr0 8000.52540079e341 yes virbr0-nic
  5. vnet0
  6. vnet1
  7. virbr1 8000.000c29963ac5 no bond0
  8. [root@localhost ~]# ifconfig bond0
  9. bond0: flags=5187<UP,BROADCAST,RUNNING,MASTER,MULTICAST> mtu 1500
  10. inet6 fe80::20c:29ff:fe96:3ac5 prefixlen 64 scopeid 0x20<link>
  11. ether 00:0c:29:96:3a:c5 txqueuelen 1000 (Ethernet)
  12. RX packets 3717 bytes 425857 (415.8 KiB)
  13. RX errors 0 dropped 0 overruns 0 frame 0
  14. TX packets 7004 bytes 12720203 (12.1 MiB)
  15. TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
  16. [root@localhost ~]# ifconfig virbr1
  17. virbr1: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
  18. inet 192.168.200.132 netmask 255.255.255.0 broadcast 192.168.200.255
  19. inet6 fe80::20c:29ff:fe96:3ac5 prefixlen 64 scopeid 0x20<link>
  20. ether 00:0c:29:96:3a:c5 txqueuelen 1000 (Ethernet)
  21. RX packets 3667 bytes 372147 (363.4 KiB)
  22. RX errors 0 dropped 0 overruns 0 frame 0
  23. TX packets 2354 bytes 7601615 (7.2 MiB)
  24. TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0

特别提示,如果利用图形化方式添加桥接网桥virbr1时遇到如下问题,可尝试在网卡配置文件中加入NM_CONTROLLED=no和USERCTL=NO解决(ens32,ens36,bond0),如果还未解决,可能是由于之前频繁做实验搭建过多次同名网桥,系统留有缓存,请尝试reboot重启操作系统。

开源虚拟化KVM(三)管理虚拟网络的更多相关文章

  1. Linux实战教学笔记55:开源虚拟化KVM(三)管理虚拟网络

    六,管理虚拟网络 [x] Linux网桥基本概念 [x] qemu-kvm支持的网络 [x] 向虚拟机添加虚拟网络连接 [x] 基于NAT的虚拟网络 [x] 基于网桥的虚拟网络 [x] 用户自定义的隔 ...

  2. 开源虚拟化KVM(一)搭建部署与概述

    一,KVM概述 1.1 虚拟化概述 在计算机技术中,虚拟化意味着创建设备或资源的虚拟版本,如服务器,存储设备,网络或者操作系统等等 [x] 虚拟化技术分类: 系统虚拟化(我们主要讨论的反向) 存储虚拟 ...

  3. Linux实战教学笔记53:开源虚拟化KVM(一)搭建部署与概述

    一,KVM概述 1.1 虚拟化概述 在计算机技术中,虚拟化意味着创建设备或资源的虚拟版本,如服务器,存储设备,网络或者操作系统等等 [x] 虚拟化技术分类: 系统虚拟化(我们主要讨论的反向) 存储虚拟 ...

  4. 在mininet上基于ovs,ovx,pox搭建三点虚拟网络

    本次试验基于mininet平台,在平台中利用ovs新建1个交换机,以pox为控制器,ovx作为中间层实现虚拟化. 基础请参照http://ovx.onlab.us/getting-started/tu ...

  5. 开源虚拟化KVM(二)管理虚拟存储

    五,管理虚拟存储 5.1 虚拟磁盘概述 5.1.1 虚拟化项目中存储的注意事项 [x] 存储的性能几乎总是虚拟化的瓶颈 [x] 通过多个硬盘驱动以分布磁盘I/O来实现存储解决方案 [x] 考虑部署集中 ...

  6. Linux实战教学笔记54:开源虚拟化KVM(二)管理虚拟存储

    五,管理虚拟存储 5.1 虚拟磁盘概述 5.1.1 虚拟化项目中存储的注意事项 [x] 存储的性能几乎总是虚拟化的瓶颈 [x] 通过多个硬盘驱动以分布磁盘I/O来实现存储解决方案 [x] 考虑部署集中 ...

  7. VMware虚拟网络连接模式详解(NAT,Bridged,Host-only)

    序言 如果你使用VMware安装虚拟机,那么你必定会选择网络连接,那么vmware提供主要的3种网络连接方式,我们该如何抉择呢?他们有什么不同呢?这篇我们就做一个深入. 首先打开虚拟机设置里面的网络适 ...

  8. KVM(三)I/O 全虚拟化和准虚拟化

    在 QEMU/KVM 中,客户机可以使用的设备大致可分为三类: 1. 模拟设备:完全由 QEMU 纯软件模拟的设备. 2. Virtio 设备:实现 VIRTIO API 的半虚拟化设备. 3. PC ...

  9. linux学习之centos(二):虚拟网络三种连接方式和SecureCRT的使用

    ---操作环境--- 虚拟机版本:VMware Workstation_10.0.3 Linux系统版本:CentOS_6.5(64位) 物理机系统版本:win10  一.虚拟网络三种连接方式 当在V ...

随机推荐

  1. 【Centos】Postgresql连接测试(Perl和Ruby)

    Centos安装了PostgreSQL之后,将考虑如何让Perl与Ruby连接它. Perl连接方式 1,安装Perl的数据库连接包 perl-DBD-Pg perl-DBI yum install ...

  2. vue2.9.5 引入vue-strap时报错

    1.vue2.9.5 引入vue-strap时出错 2.组件中引入vue-strap的具体代码如下: 1 import DatePicker from 'vue-strap/src/Datepicke ...

  3. 表单数据转javabean对象

  4. centos 7刚安装后无法联网解决

    从6版本到7版本后, 7版本默认会关闭网卡 ,并且ifconfig 命令也换了 ip 命令来代替, 在这记录一下 ,希望 新人发现. 不是源的问题, 是压根没开网卡... 下面是写给萌新的: 先看一下 ...

  5. WPF 和 百度 eChart 交互

    https://blog.csdn.net/defrt4/article/details/52689052

  6. MySQL Group Replication-MGR集群

    简介 MySQL Group Replication(简称MGR)字面意思是mysql组复制的意思,但其实他是一个高可用的集群架构,暂时只支持mysql5.7和mysql8.0版本. 是MySQL官方 ...

  7. VMWare给macos虚拟机扩容方法

    一开始在VMWareWorkStation上创建macos虚拟机时,我考虑到物理硬盘大小有限,只分配了34G,随着不断的使用,虚拟机消耗的虚拟磁盘逐渐增长,因磁盘空间不足而导致无法在虚拟机中使用xco ...

  8. 使用阿里云Java SDK 实现 DDNS

    本代码的实现前提: 1.拥有阿里云域名,且获取了Access Key 及 Access Secret 2.能获取外网IP的页面地址(注意:ip138.com的实际包含ip地址为http://2018. ...

  9. php curl使用 常用操作

    1. http Get 简单的只需要 这四行 就 $ch = curl_init (); curl_setopt ( $ch, CURLOPT_URL, "http://site" ...

  10. postgis创建空间数据库,导入shp数据

    使用向数据库中导入数据