KVM 客户机网络连接有三种方式:
-host-only:虚拟机使用的是当前计算机中的虚拟网卡,如VMWare Network Adaptor(这是VMWare的),仅主机模式,意思就是将所有的虚拟机组成一个局域网,不能和外界通信,不能访问Internet,其他主机也不能访问虚拟主机,安全性高,只能与本台真实机通信。
-NAT方式:
- 网络地址转换模式:让虚拟机访问主机、互联网或本地网络上的资源的简单方法,但是不能从网络或其他的客户机访问客户机,性能上也需要大的调整。
-Bridge方式:
- 虚拟网桥(Virtual Bridge):这网络模式下客户机与宿主机处于同一网络环境,类似于一台真实的宿主机,直接访问网络资源,设置好后客户机与互联网,客户机与主机之间的通信都很容易。
环境配置说明:
在物理机上,利用KVM安装虚拟机,实现网桥通信
- 物理机:Centos 7 操作系统,CPU支持虚拟化,自带KVM,0.10.2版本的virsh
- 虚拟机:Centos 7.0 操作系统
- 物理机IP地址为 10.6.2.136,虚拟机IP地址为10.6.2.137,网关地址为10.6.2.254
物理机配置:
1. 在物理机上创建文件
#touch /etc/sysconfig/network-scripts/ifcfg-br0
#vi /etc/sysconfig/network-scripts/ifcfg-br0
TYPE=Bridge
BOOTPROTO=static
IPADDR=10.0.2.136 //设置为物理机所占有的ip地址
NETMASK=255.255.255.0
GATEWAY=10.0.2.254
DELAY=0
DNS1=202.201.133.30
DEVICE=br0
ONBOOT=yes
2. 编辑修改网络设备脚本文件,修改网卡设备eno1(entos7上默认网卡),可以先使用ifconfig或者ip a查看默认网卡,然后到 /etc/sysconfig/network-scripts/ 中修改对应文件。
#vi /etc/sysconfig/network-scripts/ifcfg-eno1
HWADDR=24:37:E7:29:85:09
TYPE=Ethernet
BOOTPROTO=none
#IPADDR=*.*.*.* //不需要再手动分配地址
#GATEWAY=*.*.*.*
#DNS1=*.*.*.*
NM_CONTROLLED=no
DEFROUTE=yes
PEERDNS=yes
PEERROUTES=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_PEERDNS=yes
IPV6_PEERROUTES=yes
IPV6_FAILURE_FATAL=no
NAME=eno1
UUID=c0b648e4-9203-490a-b12e-fd41a5d374ea
ONBOOT=yes //此处记得设置为yes
BRIDGE=br0 //绑定网桥
主要是把IPADDR,GATEWAY,DNS,NETMASK注释掉,并加上 BRIDGE=br0,将eno1绑定到网桥接口br0上。
3. 重启网络服务
systemctl restart network.service
4. 校验桥接网口
[root@localhost ~]# brctl show
bridge name bridge id STP enabled interfaces
br0 8000.4437e6608506 no eno1
vnet0
虚拟机配置:
1. 用libvirt命令修改虚拟机xml配置文件 (t1是我创建的一台虚机),将虚拟机网络模式改为桥接。虚拟机先关机。
virsh edit t1
......
......
<interface type='bridge'> <!--虚拟机网络连接方式-->
<mac address='32:24:00:8b:f5:4c'/>
<source bridge='br0'/> <!-- 当前物理机网桥的名称-->
<model type='virtio'/>
<address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/>
</interface>
......
......
2.重启虚拟机后,修改虚拟机的网卡配置文件。先用ifconfig或者ip add命令查看默认的网卡
[root@localhost network-scripts]# ifconfig
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
......
......
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536
inet 127.0.0.1 netmask 255.0.0.0
......
......
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
以上显示说明默认网卡为eth0,因此修改文件 /etc/sysconfig/network-scripts/ifcfg-eth0, 如果没有该文件,则创建一个。
TYPE=Ethernet
BOOTPROTO=static
IPADDR=10.0.2.137 //与物理机处于同一局域网
NETMASK=255.255.255.0
GATEWAY=10.0.2.254 //网关为物理机所在局域网网关
DEFROUTE=yes
PEERDNS=yes
PEERROUTES=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_PEERDNS=yes
IPV6_PEERROUTES=yes
IPV6_FAILURE_FATAL=no
NAME=eth0
ONBOOT=yes //不要忘记修改为yes
至此,kvm虚拟机便可上网