KVM网络详解(三)

一、kvm网络模式

KVM客户机网络连接分为四种模式:host-only、NAT、Bridge、Router

  • host-only:又称隔离模式,可以理解为vmware的仅主机模式,意思就是将所有的虚拟机组成一个局域网,不能和外界通信,不能访问Internet,其他主机也不能访问虚拟主机,安全性高。
  • NAT方式:用户网络(User Networking):让虚拟机访问宿主机、互联网或本地网络上的资源的简单方法,但是不能从网络或其他的客户访问客户机,性能上也需要大的调整。
  • Bridge方式:虚拟网桥(Virtual Bridge),这网络模式下客户机与宿主机处于同一个网络环境,类似于一台真实的宿主机,直接访问网络资源,设置好后客户机与互联网,客户机与主机之间的通信都很容易。
  • Router模式:路由模式,当使用路由模式时,虚拟交换机连接到主机物理机器的物理LAN,在不适用NAT的情况下来回传输流量。虚拟交换机可以检查所有流量,并使用网络数据包中包含的信息来作出路由决策。

1、引言:

Libvirt虚拟网络使用虚拟网络交换机的概念。虚拟网络交换机是在宿主机上运行的软件结构,虚拟机(客户机)通过它连接到该宿主机上。客户机的网络流量通过这个交换机被引导。

 

 

Linux宿主机将虚拟网络交换机表示为网络接口。当libvirtd守护进程(libvirtd)首次安装并启动时,表示虚拟网络交换机的网络接口时virbr0.

这个virbr0接口可以通过ip命令,像其他任何接口一样用命令查看:

 

 

2、桥接模式

在使用桥接模式时,所有虚拟机与宿主机同一个子网。同一物理网络中的所有其他物理机器都知道这些虚拟机,并可以直接访问这些虚拟机。桥接操作在OSI网络模型的第2层。

 

 

bridge方式,即客户机通过网桥连接到宿主机网络环境中,可以使客户机成为网络中独立IP的主机。

注:桥接网络,也叫物理设备共享,被用作把物理设备复制到一台虚拟机。

 

 

 

网桥的基本原理就是创建一个桥接接口,并把物理主机的eth0绑定到网桥上,客户机的网络模式也需要配置为桥接模式。此时宿主机的物理网卡必须开启混杂模式(不管报文的目标MAC地址是不是自身,该网卡将报文全部接收)

 

 

配置如下:

 Linux网桥依赖软件包:

 

依赖模块:即在内核级别软件模拟一个软交换机,即使用bridge-utils向内核发指令,由内核创建网桥设备,网桥是在内核中实现的。

 

 

 

创建桥:

#cat /etc/sysconfig/network-scripts/ifcfg-br0

TYPE=Bridge                //修改网络类型

PROXY_METHOD=none

BROWSER_ONLY=no

BOOTPROTO=static

DEFROUTE=yes

IPADDR=192.168.57.4          //物理网卡的地址

NETMASK=255.255.255.0

#GATEWAY=192.168.57.1

IPV4_FAILURE_FATAL=no

NAME=br0            //#修改名称

DEVICE=br0          //修改驱动

ONBOOT=yes

 

#cat /etc/sysconfig/network-scripts/ifcfg-eth2

TYPE=Ethernet

PROXY_METHOD=none

BROWSER_ONLY=no

BOOTPROTO=static

DEFROUTE=yes

IPV4_FAILURE_FATAL=no

NAME=eth2

DEVICE=eth2

ONBOOT=yes

BRIDGE=br0             //添加物理网卡至桥接

 

查看网桥信息:

桥接模式xml文件:

    <interface type='bridge'>

      <mac address='52:54:00:4c:5f:6b'/>

      <source bridge='br0'/>

      <model type='virtio'/>

      <address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/>

    </interface>

 

创建时:(指定网络模式为桥接)

--network bridge=br0   

 

3、nat方式:

默认情况下,虚拟网络交换机以NAT模式运行。他们使用IP伪装而不是Snat或者Dnat。IP伪装使得连接的guest虚拟机可以使用主机物理机器IP地址与任何外部网络进行通信。默认情况下,虚拟网络交换机在NAT模式下运行时,放置在主机物理机外部的计算机无法与其中的guest虚拟机进行通信:

 

 

 

 

Nat方式是kvm安装后的默认方式。支持主机与虚拟机的互访,同时也支持虚拟机访问互联网,但不支持外界访问虚拟机。

Virbr0是宿主机kvm相关模块安装的一个虚拟网络接口(TAP设备),也是一个switch和bridge,负责把内容分发到各虚拟机上。

 

 

 

 

 

 

DNS和DHCP:

IP地址可以通过DHCP分配给客户机。为此,可以将地址池分配给虚拟网络交换机。Libvirt使用dnsmasq程序,dnsmasq的一个实例是由libvirt为每个需要它的虚拟网络交换机自动配置和启动。

 

 

 

配置如下:

virsh net-list                        #查看当前活跃网络,default为默认的nat网络

 

 

virsh net-dumpxml default            #查看default默认nat网络的详细配置

<network connections='1'>

  <name>default</name>

  <uuid>ba2da2fc-33c4-4003-92e0-cfb91219e9f7</uuid>

  <forward mode='nat'>

    <nat>

      <port start='1024' end='65535'/>

    </nat>

  </forward>

  <bridge name='virbr0' stp='on' delay='0'/>

  <mac address='52:54:00:4d:87:c6'/>

  <ip address='192.168.122.1' netmask='255.255.255.0'>

    <dhcp>

      <range start='192.168.122.2' end='192.168.122.254'/>

    </dhcp>

  </ip>

</network>

网络xml文件位置:/etc/libvirt/qemu/networks/和/usr/share/libvirt/networks/

 

新建nat网络:cw.xml(name为guest名字)

<network>

  <name>cw</name>

  <uuid>11c14d0c-3ba8-492b-99dc-794fd4db73b3</uuid>

  <forward mode='nat'/>

  <bridge name='virbr1' stp='on' delay='0'/>

  <mac address='52:54:00:4d:87:c7'/>

  <ip address='192.168.123.1' netmask='255.255.255.0'>

    <dhcp>

      <range start='192.168.123.2' end='192.168.123.254'/>

      <host mac='00:25:90:eb:4b:bb' name='guest1' ip='192.168.123.2'/>

      <host mac='00:25:90:eb:4b:b1' name='guest1' ip='192.168.123.3'/>

    </dhcp>

  </ip>

</network>

 

启用cw网络:
virsh net-define /etc/libvirt/qemu/networks/cw.xml           #读取cw网络的xml文件

virsh net-start cw                    #启动cw网络

virsh net-autostart cw              #将cw网络设置为自动启动

 

 

 

 

 

创建时指定网络为nat网络:

--network network=cw \

 

guest的xml文件network为nat时:

    <interface type='network'>

      <mac address='52:54:00:e9:18:34'/>

      <source network='default'/>

      <model type='virtio'/>

      <address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/>

    </interface>

 

查看地址转换信息:

iptables -t nat -L -nv

iptables -t filter -L -nv

 

4、路由模式

当使用路由模式时,虚拟交换机连接到宿主机的物理lan口,在不适用nat的情况下来回传输流量。虚拟交换机可以检查所有流量,并使用网络数据包中包含的信息来做出决策。使用此模式时,所有虚拟机都位于其自己的子网中,通过虚拟交换机进行路由。这种情况并不总是理想的,因为物理网络上的其他宿主机不通过手工配置的路由信息就没法发现这些虚拟机,并且不能访问虚拟机。路由模式在OSI网络模型的第三层运行。

 

 

 

5、隔离模式

使用隔离模式时,连接到虚拟交换机的虚拟机可以相互通信,也可以与宿主机通信,但其通信不会传到其他宿主机外,也不能从宿主机外部接收通信。在这种模式下使用dnsmasq对于诸如DHCP的基本功能是必需的。但是,即使该网络与任何物理网络隔离,DNS名称仍然被解析。因此,DNS名称能解析但ICMP回应请求(ping)失败是可能出现的。

 

 

6、默认配置

libvirtd守护进程(libvirtd)第一被安装时,它将包含配置在NAT模式下的初始虚拟网络交换机(virbr0)。使用此配置,以便安装的guest虚拟机可以通过宿主机与外部网络进行通信。

 

posted @ 2021-12-28 18:24  Day__Day_Up  阅读(673)  评论(0编辑  收藏  举报