使用VMware做过虚拟机的都知道,有三种网络模式,nat/bridge/host-only,最近公司测试网络,需要用KVM装一个pfsense,对VM的网络也有要求,需要两个网口,还是不同网络模式的(host-only/nat),使用VMware可以做出来,但是KVM就些许麻烦,一个劲儿的在网上找KVM怎么做和VMware一样的网络模式,皇天不负有心人,还是被我找到了。
这里就不多介绍这三种网络模式的功能了。
保险起见,先将forward打开
$ vim /etc/sysctl.conf
net.ipv4.ip_forward = 1
$ sysctl -p
桥接模式
配置桥接设备
该设备最好是服务器使用的主网络设备,因为要和它走一个网络
cd /etc/sysconfig/network-scripts/
cp -a ifcfg-eno1 ifcfg-br0
修改主网络设备
添加BRIDGE=br0
后,该设备的配置会是失效,并转移到稍后配置的br0设备上
vim ifcfg-eno1
# 末尾添加
BRIDGE=br0
修改桥接设备
vim ifcfg-br0
# 修改一下四项
TYPE=Bridge
BOOTPROTO=none
NAME=br0
DEVICE=br0
# 删除UUID
# 添加:IP要改为和主网络设备一样的IP
# 无论是dhcp的ip,还是原本static的ip
# DNS和网关也一样沿用之前的
IPADDR=主网络设备ip
NETMASK=255.255.255.0
GATEWAY=
DNS1=
重启服务
systemctl restart network
编写桥接xml文件
vim /etc/libvirt/qemu/networks/br0.xml
<network>
<name>br0</name>
<forward mode='bridge' />
<bridge name='br0' />
</network>
应用到kvm
$ virsh net-define /etc/libvirt/qemu/networks/br0.xml
Network br0 defined from /etc/libvirt/qemu/networks/br0.xml
$ virsh net-start br0
Network br0 started
$ virsh net-autostart br0
Network br0 marked as autostarted
使用virt-manager管理添加网卡时,即可看到br0网卡
NAT模式
配置桥接设备:和桥接模式第一步一样的ifcfg-br0
编写nat.xml文件
vim /etc/libvirt/qemu/networks/nat.xml
<!--文件中的ip网段以及dhcp范围要再同一网段,是使用nat网络时分配给VM的地址-->
<network>
<name>nat</name>
<forward dev='br0' mode='nat'>
<interface dev='br0'/>
</forward>
<bridge name='vir-nat' stp='on' delay='0'/>
<ip address='192.168.100.1' netmask='255.255.255.0'>
<dhcp>
<range start='192.168.100.2' end='192.168.100.253'/>
</dhcp>
</ip>
</network>
应用到kvm
$ virsh net-define /etc/libvirt/qemu/networks/nat.xml
Network nat defined from /etc/libvirt/qemu/networks/nat.xml
$ virsh net-start nat
Network nat started
$ virsh net-autostart nat
Network nat marked as autostarted
查看
$ brctl show
bridge name bridge id STP enabled interfaces
br0 8000.a4bf013547c3 no eno1
vir-nat 8000.525400b72aee yes vir-nat-nic
virbr0 8000.525400178f49 yes virbr0-nic
$ virsh net-list
Name State Autostart Persistent
----------------------------------------------------------
default active yes yes
nat active yes yes
host-only模式
仅主机模式也叫隔离模式,仅仅在宿主机内部进行通信使用。宿主机、宿主机内的虚拟机网络相互连通,但是虚拟机无法访问外部网络。
编写 host-only.xml 文件
vim /etc/libvirt/qemu/networks/host-only.xml
<!--如果做了nat和host-only,注意地址池不要重复-->
<network>
<name>host-only</name>
<bridge name='vir-host'/>
<ip address='192.168.200.1' netmask='255.255.255.0'>
<dhcp>
<range start='192.168.200.2' end='192.168.200.253'/>
</dhcp>
</ip>
</network>
应用到kvm:有报错就检查语法
$ virsh net-define /etc/libvirt/qemu/networks/host-only.xml
Network host-only defined from /etc/libvirt/qemu/networks/host-only.xml
$ virsh net-start host-only
3Network host-only started
$ virsh net-autostart host-only
Network host-only marked as autostarted
检查kvm网络
$ virsh net-list
Name State Autostart Persistent
----------------------------------------------------------
br0 active yes yes
default active yes yes
host-only active yes yes
nat active yes yes