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可以成功設定橋接模式。