KVM虚拟机三种网络模式简介
桥接(Bridge)网络模式
桥接网络是指本地物理网卡和虚拟网卡通过VMnet0虚拟交换机进行桥接,物理网卡和虚拟网卡在拓扑图上处于同等地位,那么物理网卡和虚拟网卡就相当于处于同一个网段,虚拟交换机就相当于一台现实网络中的交换机,所以两个网卡的IP地址也要设置为同一网段。 所以当我们要在局域网使用虚拟机,用来对局域网其他计算机提供服务时,例如提供FTP,SSH,HTTP等服务时,那么就要选择桥接模式。
NAT网络模式
NAT模式中,就是让虚拟机借助NAT(Network Address Translation,网络地址转换)功能,通过宿主物理机所在的网络来访问公网。
NAT模式中,虚拟机的网卡和物理网卡的网络,不在同一个网络,虚拟机的网卡,是在KVM中提供的一个虚拟网络。
隔离网络模式(Host-Only)
在隔离网络(Host-Only)模式下,虚拟网络是一个全封闭的网络环境,它唯一能够访问的就是宿主物理机。其实Host-Only网络和NAT网络很相似,不同的地方就是Host-Only网络没有NAT服务,所以虚拟网络不能通过宿主物理机连接到公网。 Host-Only的宗旨就是建立一个与外界隔绝的内部网络,来提高内网的安全性。这个功能或许对普通用户来说没有多大意义,但大型服务商会常常利用这个功能。
NAT模式
[root@kvm ~]# virt-install \
> --name template \ # 虚拟机名
> --ram=512 \ # 虚拟机内存大小,单位M
> --vcpus=1 \ # 虚拟机CPU核心数
> --cdrom=/home/iso/CentOS-7-x86_64-Minimal-1708.iso \ # 镜像文件位置
> --disk path=/var/lib/libvirt/images/template.qcow2,format=qcow2,size=5 \ # 磁盘
> --network network=default \ # 网络模式 default 为默认选项,即NAT模式
> --graphics vnc,listen=0.0.0.0 \ # 显示类型,监听范围
> --os-type=linux \ # 非必选项,系统类型
> --os-variant=rhel7 # 非必选项,系统版本
> --virt-type kvm # 非必选项,虚拟化的类型
桥接模式
如果是新创建一个虚拟机要使用桥接模式,如下:
# 先创建桥接网卡
[root@kvm ~]# virsh iface-bridge ens33 br0
[root@kvm ~]# systemctl restart network
# 安装指定网络为桥接模式的虚拟机
[root@kvm ~]# virt-install \
> --name template1 \ # 虚拟机名
> --ram=512 \ # 虚拟机内存大小,单位M
> --vcpus=1 \ # 虚拟机CPU核心数
> --cdrom=/home/iso/CentOS-7-x86_64-Minimal-1708.iso \ # 镜像文件位置
> --disk path=/var/lib/libvirt/images/template1.qcow2,format=qcow2,size=5 \ # 磁盘
> --network bridge=br0\ # 网络模式 default 为默认选项,即NAT模式
> --graphics vnc,listen=0.0.0.0 \ # 显示类型,监听范围
> --os-type=linux \ # 非必选项,系统类型
> --os-variant=rhel7 # 非必选项,系统版本
> --virt-type kvm # 非必选项,虚拟化的类型
# 取消桥接网卡
virsh iface-unbridge br0
如果是将NAT模式改为桥接模式,则为:
- 先定义桥接网卡
[root@kvm ~]# virsh iface-bridge ens33 br0
[root@kvm ~]# systemctl restart network
- 修改虚拟机配置文件
# 须在虚拟机关机状态下操作,如果是在开机状态下修改配置文件,修改完毕后,需先 virsh shutdown 再 virsh start 这时配置才生效
[root@kvm2 ~]# virsh edit domain
<interface type='network'>
<mac address='52:54:00:9c:a4:67'/>
<source network='default'/>
<model type='virtio'/>
<interface type='bridge'>
<mac address='52:54:00:9c:a4:67'/>
<source bridge='br0'/>
<model type='virtio'/>