虚拟机的网络模式
1、三种模式
基于NAT(NetworkAddressTranslation)的虚拟网络
基于网桥(Bridge)的虚拟网络
用户自定义的隔离的虚拟网络
2、模式具体概念
桥接( Bridge)网络模式
桥接网络是指本地物理网卡和虚拟网卡通过 VMnet0 虚拟交换机进行桥接,物理网卡和虚拟网卡在拓
扑图上处于同等地位, 那么物理网卡和虚拟网卡就相当于处于同一个网段,虚拟交换机就相当于一台现
实网络中的交换机 ,所以两个网卡的 IP 地址也要设置为同一网段
NAT 网络模式
NAT 模式中,就是让虚拟机借助 NAT(Network Address Translation,网络地址转换 )功能,通过宿
主物理机所在的网络来访问公网。
NAT 模式中,虚拟机的网卡和物理网卡的网络,不在同一个网络,虚拟机的网卡,是在 KVM 中提供
的一个虚拟网络。
隔离网络模式( Host-Only)
在隔离网络( Host-Only)模式下,虚拟网络是一个全封闭的网络环境,它唯一能够访问的就是宿主
物理机。其实 Host-Only 网络和 NAT 网络很相
利用virsh管理虚拟网络
1、qemu-kvm的虚拟网络配置文件:/etc/libvirt/qemu/networks/
2、virsh的网络管理命令帮助
autostart default.xml
[root@KVM01 networks]# virsh help network
Networking (help keyword 'network'):
net-autostart 自动开始网络
net-create 从一个 XML 文件创建一个网络
net-define 定义一个网络
net-destroy 销毁(停止)网络
net-dhcp-leases print lease info for a given network
net-dumpxml 查看XML 中的网络信息
net-edit 为网络编辑 XML 配置
net-event Network Events
net-info 网络信息
net-list 列出网络
net-name 把一个网络UUID 转换为网络名
net-start 开始一个(以前定义的)不活跃的网络
net-undefine 取消网络的定义
net-update 更新现有网络配置的部分
net-uuid 把一个网络名转换为网络UUID
利用CenOS7图形化界面管理虚拟网络
CentOS mini系统添加图形化界面
[root@kvm01 ~]# yum groupinstall "Server with GUI" -y
[root@kvm01 ~]# systemctl set-default graphical.target
重启虚拟机
1、基于NAT的虚拟网络
(1)图形界面向虚拟机中添加一块NAT网卡
[root@KVM01 ~]$ virt-manager
#调用图形化界面
[1]选中虚拟机–点击编辑–点击连接详情 进入该页面
[2]点击虚拟机网络–点击左下角+号–编辑网络名称 进入该页面
[3]点击前进
[4]点击前进—到达该页面—点击转发到物理网络(默认NAT)—点击完成
[5]创建完成
[6]终端进行查看
[root@KVM01 networks]# virsh net-list
名称 状态 自动开始 持久
----------------------------------------------------------
default 活动 是 是
network1 活动 是 是
[7]删除虚拟网络 选择网络net1----点击下面的红点停止网络—点击红点右侧圈x删除网络
(2)修改配置文件向虚拟机中添加一块NAT网卡
[root@KVM01 ~]# cd /etc/libvirt/qemu/networks
#进入记载网络的目录下
[root@KVM01 networks]# ls
autostart default.xml network1.xml
[root@KVM01 networks]# cp network1.xml network2.xml
#将net1的网络复制
[root@KVM01 networks]# vim network2.xml
#修改net2中的参数 (网络名 、bridge name、uuid、mac address、ip address、range)
[root@KVM01 networks]# cat network2.xml
<network>
<name>network2</name>
<uuid>ad9f1dfa-3212-4dcf-81c5-a96ed1157834</uuid>
<forward mode='nat'/>
<bridge name='virbr2' stp='on' delay='0'/>
<mac address='52:54:00:87:f3:23'/>
<domain name='network2'/>
<ip address='192.168.200.1' netmask='255.255.255.0'>
<dhcp>
<range start='192.168.200.128' end='192.168.200.254'/>
</dhcp>
</ip>
</network>
[root@KVM01 networks]# virsh net-define network2.xml
从 network2定义网络network2.xml
[root@KVM01 networks]# virsh net-start network2
网络 network2 已开始
[root@KVM01 networks]# virsh net-autostart network2
网络network2标记为自动启动
[root@KVM01 networks]# virsh net-list
名称 状态 自动开始 持久
----------------------------------------------------------
default 活动 是 是
network1 活动 是 是
network2 活动 是 是
**删除和取消定义虚拟网络**
[root@KVM01 networks]# virsh net-destroy network2
网络 network2 被删除
[root@KVM01 networks]# virsh net-undefine network2
网络 network2 已经被取消定义
2、基于网桥的虚拟网络
(1)图形界面向虚拟机中设置桥接网络
[1]终端输入命令
[root@KVM01 network-scripts]# nm-connection-editor
[2]点击+ 号—选择桥接模式—点击create
[3]编辑连接名称、接口名称—点击add
[4]选择连接类型(以太网)—点击create
[5]选择设备–点击保存
[6]点击IPV4设置—方法选择手动—点击add—编辑IPV4地址及其DNS服务器----点击保存
[7]完成
[8]删除
终端输入命令调出图形界面
[root@KVM01 network-scripts]# nm-connection-editor
选择网卡点击“-”删除
(2)virsh命令行向虚拟机中设置桥接网络
[root@KVM01 networks]# cd /etc/sysconfig/network-scripts/
[root@KVM01 network-scripts]# virsh iface-bridge ens33 br1
使用附加设备 br1 生成桥接 ens33 失败
已启动桥接接口 br1
[root@KVM01 network-scripts]# systemctl restart network
#重启服务
[root@KVM01 network-scripts]# virsh iface-list
名称 状态 MAC 地址
---------------------------------------------------
br1 活动 e2:7e:c3:52:80:91
lo 活动 00:00:00:00:00:00
[root@KVM01 network-scripts]# nmcli connection show
NAME UUID TYPE DEVICE
br1 3835124b-038f-4b65-aed9-b6ba0f06b2bd bridge br1
virbr0 2cfc14a5-d4a5-4138-b89a-2f50a5eb4ac6 bridge virbr0
vnet0 7c077f64-5f65-4bee-9955-33e47ec07286 tun vnet0
System ens33 c96bc909-188e-ec64-3a96-6a90982b08ad ethernet --
#桥接成功
**ping 不同外界网络时,修改配置文件**
[root@KVM01 network-scripts]# cat ifcfg-br0
DEVICE=br0
ONBOOT=yes
TYPE=Bridge
BOOTPROTO=none
IPADDR=192.168.16.55
NETMASK=255.255.255.0
GATEWAY=192.168.16.2
STP=yes
DELAY=0
[root@KVM01 network-scripts]# cat ifcfg-ens33
DEVICE=ens33
ONBOOT=yes
BRIDGE=br0
**网络测试**
[root@KVM01 network-scripts]# ping 8.8.8.8
PING 8.8.8.8 (8.8.8.8) 56(84) bytes of data.
64 bytes from 8.8.8.8: icmp_seq=1 ttl=128 time=224 ms
**取消桥接**
[root@KVM01 network-scripts]# rm -f ifcfg-br1
#删除文件
[root@KVM01 network-scripts]# cat ifcfg-ens33
#重新编辑ens33
DEVICE=ens33
IPADDR=192.168.16.55
NETMASK=255.255.255.0
ONBOOT=yes
NAME=ens33
GATEWAY=192.168.16.2
DNS1=223.5.5.5
BOOTPROTO=none
[root@KVM01 network-scripts]# systemctl restart network
#重启服务或重启虚拟机
[root@KVM01 network-scripts]# nmcli con show #查看
NAME UUID TYPE DEVICE
ens33 c96bc909-188e-ec64-3a96-6a90982b08ad ethernet ens33
br1 3835124b-038f-4b65-aed9-b6ba0f06b2bd bridge br1
virbr0 2cfc14a5-d4a5-4138-b89a-2f50a5eb4ac6 bridge virbr0
vnet0 7c077f64-5f65-4bee-9955-33e47ec07286 tun vnet0
[root@KVM01 network-scripts]# virsh iface-list #查看
名称 状态 MAC 地址
---------------------------------------------------
ens33 活动 00:0c:29:48:54:8c
lo 活动 00:00:00:00:00:00
(3)编辑配置文件向虚拟机中设置桥接网络
```powershell
[root@KVM01 ~]# cd /etc/sysconfig/network-scripts/
#进入到含有桥接网络文件目录下
[root@KVM01 network-scripts]# vim ifcfg-ens33 #编辑文件
DEVICE=ens33
ONBOOT=yes
BRIDGE=br0
[root@KVM01 network-scripts]# vim ifcfg-br0 #编辑文件
DEVICE=br0
ONBOOT=yes
TYPE=Bridge
BOOTPROTO=none
IPADDR=192.168.16.55
NETMASK=255.255.255.0
GATEWAY=192.168.16.2
STP=yes
[root@KVM01 network-scripts]# systemctl restart network
#重启服务
[root@KVM01 network-scripts]# nmcli connection show # 查看
NAME UUID TYPE DEVICE
网桥 br0 d2d68553-f97e-7549-7a26-b34a26f29318 bridge br0
virbr0 6a57297f-0459-4fca-827a-cd9a21884ccf bridge virbr0
System ens33 c96bc909-188e-ec64-3a96-6a90982b08ad ethernet ens33
vnet0 01136caa-c23a-41ca-b3a5-6dd734846768 tun vnet0
[root@KVM01 network-scripts]# virsh iface-list #查看
名称 状态 MAC 地址
---------------------------------------------------
br0 活动 00:0c:29:48:54:8c
lo 活动 00:00:00:00:00:00
**测试**
[root@KVM01 network-scripts]# ping 8.8.8.8
PING 8.8.8.8 (8.8.8.8) 56(84) bytes of data.
64 bytes from 8.8.8.8: icmp_seq=1 ttl=128 time=221 ms
64 bytes from 8.8.8.8: icmp_seq=2 ttl=128 time=209 ms
**取消桥接**
[root@KVM01 network-scripts]# rm -f ifcfg-br1
#删除文件
[root@KVM01 network-scripts]# cat ifcfg-ens33
#重新编辑ens33
DEVICE=ens33
IPADDR=192.168.16.55
NETMASK=255.255.255.0
ONBOOT=yes
NAME=ens33
GATEWAY=192.168.16.2
DNS1=223.5.5.5
BOOTPROTO=none
[root@KVM01 network-scripts]# systemctl restart network
#重启服务或重启虚拟机