操作流程
让虚拟机连接网络,此时我们必须先确保我们的真机能够连接网络,然后让真机充当一个路由器的角色,具体操作步骤如下:
- 在虚拟机和主机(可上网)的网卡配置中配置相同的IP网段,设定虚拟机网关为真机的IP地址
- 真机停止虚拟机服务 systemctl stop libvirtd
- 重新启动火墙systemctl restart firewalld 并查看火墙配置 firewall-cmd --list-all
- 如果我们发现真机上的路由功能关闭,我们需要启动路由功能:firewall-cmd --add-masquerade 确保真机路由器功能开启
- 真机重新开启虚拟机服务 systemctl start libvirtd
- 查看内核路由功能 sysctl -a | grep ip_forward 此时显示1即为开启内核路由功能,如果显示为0,在 /etc/sysctl.conf 中设置
此时虚拟机即可通过真机上网
操作实战
配置虚拟机环境
首先确认真机是能上网的,先ping通百度,发现确实可以进行网络通信:
查看主机的ip地址:
确认了主机的ip地址后,开始配置我们的虚拟机网络,这里确保ip地址与主机ip地址在同一个地址段上:
还需要在虚拟机中设置网关,网关的地址就是真机的地址:
虚拟机环境已经配置完成
配置真机环境
先关闭真机的虚拟机服务,此操作是为了顺利配置真机中的火墙,我们的虚拟机此时会停止运行,重新开启虚拟机服务时我们重启虚拟机即可:
查看火墙状态,发现此时路由功能masquerade还未开启:
开启火墙的路由功能:
重新开启虚拟机服务:
查看内核路由功能是否开启:
内核路由功能已经开启,如果未开启,可在 /etc/sysctl.conf 中设置net.ipv4.ip_forward = 1
真机环境已经配置完成
查看结果
先在真机上ping www.baidu.com :
在虚拟机中ping 220.181.112.244(虚拟机未设置DNS):
可以进行通信,说明操作成功,虚拟机已经可以上网