一、qemu-kvm支持的网络

        1.虚拟机的网络模式

                基于NAT(Network Address Translation)的虚拟网络

                基于网桥(Bridge)的虚拟网络

                用户自定义的隔离的虚拟网络 

                直接分配网络设备(包括VT-d和SR-IOV)

         2.虚拟机的网卡:

               RTL8139、e1000、.....

               virtio

二、virsh命令查看网卡



virsh net-list


  

kvm wangkaleixing kvm网卡类型_配置文件

 

 

 



virsh net-info  default


  

kvm wangkaleixing kvm网卡类型_kvm wangkaleixing_02

 

 

 



virsh net-dumpxml default


  

kvm wangkaleixing kvm网卡类型_kvm_03

 

 

 三、基于NAT的虚拟网络

       1.KVM安装时默认的网络配置

        

kvm wangkaleixing kvm网卡类型_虚拟网络_04

 

 

      2.默认宿主机会有一个虚拟网卡virbr0,其实是一个虚拟交换机



ifconfig virbr0


  

kvm wangkaleixing kvm网卡类型_kvm wangkaleixing_05

 

 

     3.会绑定一个网卡virbr0-nic



brctl show virbr0


  

kvm wangkaleixing kvm网卡类型_配置文件_06

 

    4.查看iptables的nat表,可以看到做了SNAT



iptables -t nat -L


  

kvm wangkaleixing kvm网卡类型_NAT_07

 

 

      5.可以看到从virbr0接口进来的DNS报文和DHCP报文是允许的



iptables -nvL


  

kvm wangkaleixing kvm网卡类型_配置文件_08

 

 

       6.当有虚拟机启动,如果采用的是默认NAT模式,那么virbr0交换机下就会增加接口,可以看 到有2个虚拟接口,代表有2个虚拟机接到了这个交换机上



brctl show virbr0


  

kvm wangkaleixing kvm网卡类型_虚拟网络_09

 

 

     7.以通过virsh命令查看虚拟机的网卡情况



virsh domiflist testvm01


  

kvm wangkaleixing kvm网卡类型_虚拟网络_10



virsh domif-getlink testvm02 vnet0


  

kvm wangkaleixing kvm网卡类型_kvm wangkaleixing_11

 

 



virsh domifstat testvm02 vnet0


  

kvm wangkaleixing kvm网卡类型_虚拟网络_12

 

 

   8.向虚拟机添加虚拟机网络



可以通过xml文档添加:
<interface type='network'>
   <mac address='52:54:00:aa:18:d1'/>
    <source network='default'/> //网络模式
    <model type='virtio'/> //网卡类型
    <address type='pci' domain='0x0000' bus='0x00' slot='0x03'
    function='0x0'/>
</interface>



   9.  候主机就变成了一个路由器,可以看到路由功能已经打开 



cat /proc/sys/net/ipv4/ip_forward


  

kvm wangkaleixing kvm网卡类型_kvm_13

 

 

  注意 如果是0  那是因为ip_forward没有开启

 启动ip_forward



vim  /etc/sysctl.conf 
net.ipv4.ip_forward = 1


  

kvm wangkaleixing kvm网卡类型_kvm_14

 

 

 

四、基于网桥的虚拟网络

            

kvm wangkaleixing kvm网卡类型_kvm_15

 

 

      1.Redhat/CentOS配置网桥的常用方法:

          nmcli:

         1.添加网桥



nmcli connection add  con-name virbr1 type bridge ifname virbr1


  

kvm wangkaleixing kvm网卡类型_配置文件_16

 

 

        2./桥接物理网卡



nmcli connection add type bridge-slave con-name virbr1 ifname virbr1 master virbr1


  

kvm wangkaleixing kvm网卡类型_虚拟网络_17

 

 

       

kvm wangkaleixing kvm网卡类型_配置文件_18

 

 

  3.激活连接



nmcli connection up virbr1


  

kvm wangkaleixing kvm网卡类型_kvm_19

 

 

   4.验证

      ping真实主机    

     

kvm wangkaleixing kvm网卡类型_虚拟网络_20

 

 

       ping虚拟主机

          

kvm wangkaleixing kvm网卡类型_kvm wangkaleixing_21

   2. brctl (需要安装bridge-utils包)

        1.创建网桥



brctl addbr br10



   2.连接网桥



brctl addif br10 ens34



  3.brctl命令对网桥的配置需要以文件形式保存下来,这样系统再次启动后所有配置仍能生效。(修改配置文件达到连接网桥的功能)

        1.复制网卡配置文件

cp ifcfg-ens33  ifcfg-virbr1

         2.编写两个网卡配置文件

ens33网卡配置


TYPE="Ethernet"
NAME="ens33"
DEVICE="ens33"
ONBOOT="yes"
BRIDGE=virbr1

         

kvm wangkaleixing kvm网卡类型_kvm wangkaleixing_22

virbr1网卡配置


TYPE="Bridge"
BOOTPROTO="static"
NAME="virbr1"
DEVICE="virbr1"
ONBOOT="yes"
IPADDR=192.174.1.20
GATAWEY=192.174.1.2
DNS1=114.114.114.114

   3.重新启动网络



systemctl restart network



  4..在虚拟主机上附加网桥卡 (如果想要连通外网 这一步用哪种方式都得使用)

virsh attach-interface testvm01 bridge virbr1 --mode virtio --current (立即生效不过在此重启就消失了)

virsh attach-interface testvm01 bridge virbr1 --model virtio --config (永久生效 因为写入配置文件了)

 

 五、用户自定义的隔离的虚拟网络

           逻辑视图:

     

kvm wangkaleixing kvm网卡类型_kvm wangkaleixing_23

 

     命令行添加网络:

      下次启动生效



virsh attach-interface domain --type bridge --source br1 --model virtio --config



          立即生效



virsh attach-interface domain --type bridge --source br1 --model virtio --current



         为了让每次开机都生效,新生成一次配置文件替换原来的配置文件



virsh dumpxml domain > domain.xml