一、qemu-kvm支持的网络

        1.虚拟机的网络模式

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

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

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

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

         2.虚拟机的网卡:

               RTL8139、e1000、.....

               virtio

二、virsh命令查看网卡

virsh net-list

  

 

 

 

virsh net-info  default

  

 

 

 

virsh net-dumpxml default

  

 

 

 三、基于NAT的虚拟网络

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

        

 

 

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

ifconfig virbr0

  

 

 

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

brctl show virbr0

  

 

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

iptables -t nat -L

  

 

 

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

iptables -nvL

  

 

 

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

brctl show virbr0

  

 

 

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

virsh domiflist testvm01

  

virsh domif-getlink testvm02 vnet0

  

 

 

virsh domifstat testvm02 vnet0

  

 

 

   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

  

 

 

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

 启动ip_forward

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

  

 

 

 

四、基于网桥的虚拟网络

            

 

 

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

          nmcli:

         1.添加网桥

nmcli connection add  con-name virbr1 type bridge ifname virbr1

  

 

 

        2./桥接物理网卡

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

  

 

 

       

 

 

  3.激活连接

nmcli connection up virbr1

  

 

 

   4.验证

      ping真实主机    

     

 

 

       ping虚拟主机

          

   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

         

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 (永久生效 因为写入配置文件了)

 

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

           逻辑视图:

     

 

     命令行添加网络:

      下次启动生效

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

  

 

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐