其他分享
首页 > 其他分享> > kvm设置网络桥接模式

kvm设置网络桥接模式

作者:互联网


layout: post
title: kvm设置网络桥接模式
subtitle: kvm设置
gh-repo: daattali/beautiful-jekyll
gh-badge: [star, fork, follow]
tags: [kvm, vm]
comments: true

kvm设置网络桥接模式

kvm设置网络时,对于虚拟机的网络连接有两种常用方式,一种是NAT,一种是桥接。

NAT(网络地址转换), Network Access Translation,使用NAT技术的局域网对外网的表现是一个IP地址A,但是在该局域网内部则使用同一个网段的不同IP,这些IP对外网访问,全部使用地址A,反过来外网对这些IP的访问,通过访问"A:端口"来映射。在创建虚拟机时,如果采用NAT方法,一般虚拟机会获得一个192.168.x.x的IP,该IP只有从host或者从该host上的其他虚拟机才能访问。

桥接方式则会让被创建的虚拟机获得与host一样的网段的IP, 因此表现得就像一台与host同在一个网络中的物理机一样。

创建KVM的xml文件中,采用NAT模式的设置一般如下:

<domain type="kvm">
  <devices>
	……
    <interface type="bridge">
      <source bridge="virbr0"/>
      <mac address="00:10:23:91:15:11"/>
      <model type="virtio"/>
    </interface>
    <hostdev mode='subsystem' type='pci' managed='yes'>
      <source>
        <address domain='0x0000' bus='0x18' slot='0x02' function='0x0'/>
      </source>
    </hostdev>
   <serial type="pty">
      <target port="0"/>
    </serial>
    <console type="pty">
      <target type="serial" port="0"/>
    </console>
  </devices>
</domain>

在interface属性下,type为"bridge",source bridge则是“virbr0”。mac address是v虚拟机中虚拟网卡(不是virbr0)中的mac,它只需要在这个局域网中保证唯一即可。

virbr0由kvm默认创建,它默认分配了一个IP 192.168.122.1,连接到该网桥上的虚拟网卡会被virbr0分配一个IP 。

理解 virbr0

对虚拟机使用桥接连接方式,需要将xml中的“virbr0”修改为“br0”。

其次,修改host中的br0和网卡配置。以redhat举例,使用桥接方式之前,host上的br0和网卡地址是这样的:

br0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.0.1  netmask 255.255.255.0  broadcast 192.168.0.255
        inet6 fe80::20e:c6ff:fe67:74ec  prefixlen 64  scopeid 0x20<link>
        ether 00:0e:c6:67:74:ec  txqueuelen 1000  (Ethernet)
        RX packets 8396296  bytes 11827862282 (11.0 GiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 4642273  bytes 318891030 (304.1 MiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

enp0s20f0u1: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 10.239.183.59  netmask 255.255.254.0  broadcast 10.239.183.255
        ether 00:0e:c6:67:74:ec  txqueuelen 1000  (Ethernet)
        RX packets 8398665  bytes 11845477389 (11.0 GiB)
        RX errors 0  dropped 425  overruns 0  frame 0
        TX packets 4645823  bytes 356244128 (339.7 MiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

/etc/sysconfig/network-scripts/文件夹下,有ifcfg-br0, ifcfg-enp0s20f0u1两个配置文件,将它们修改为如下:

# ifcfg-br0
DEVICE="br0"
ONBOOT="yes"
TYPE="Bridge"
BOOTPROTO="dhcp"


# ifcfg-enp0s20f0u1`
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=dhcp
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
NAME=enp0s20f0u1
DEVICE=enp0s20f0u1
ONBOOT=yes
BRIDGE=br0 #主要是加上这句

并且执行systemctl restart NetworkManager;nmcli connection up enp0s20f0u1, 之后再把br0的192.168.0.1地址移除:

ip address del dev br0 192.168.0.1/24

再次ifconfig, 得到如下结果:

br0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 10.239.183.59  netmask 255.255.254.0  broadcast 10.239.183.255
        inet6 fe80::20e:c6ff:fe67:74ec  prefixlen 64  scopeid 0x20<link>
        ether 00:0e:c6:67:74:ec  txqueuelen 1000  (Ethernet)
        RX packets 8407070  bytes 11828720576 (11.0 GiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 4650038  bytes 319945070 (305.1 MiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

enp0s20f0u1: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        ether 00:0e:c6:67:74:ec  txqueuelen 1000  (Ethernet)
        RX packets 8409506  bytes 11846391933 (11.0 GiB)
        RX errors 0  dropped 435  overruns 0  frame 0
        TX packets 4653593  bytes 357360918 (340.8 MiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

可以看到,ip地址从enp0s20f0u1移动到了br0上。这代表kvm可以成功设置桥接模式。

标签:enp0s20f0u1,桥接,bytes,kvm,RX,br0,overruns,设置
来源: https://www.cnblogs.com/goto2091/p/16250968.html