困难从来不会因为你绕过去,它就自动没有了。
摘要
最近在学习部署的相关内容,包括 Linux、Nginx、Docker、MySQL 等一系列知识。但本人对 Linux 不熟悉,特别是对虚拟机上的系统配置不熟悉。这篇文章,就是用来记录我解决虚拟机 CentOS7 与宿主系统 Windows10 及外网进行网络通联的过程。如果这篇文章能启迪你解决你遇到的问题,那这篇文章就没白写。
环境
宿主系统:Windows10
虚拟机环境:VirtualBox6.1
虚拟机系统:CentOS7
步骤
-
选中 CentOS7 系统,并确保系统已关机。然后选择菜单 管理 > 全局设定 > 网络,新建一个 Nat 网络网卡如下并确定:
-
继续选中 CentOS7 系统,然后选择菜单 管理 > 主机网络管理,如果不存在仅主机网络网卡,则新建一个,配置如下:
-
有了 Nat网卡 和 仅主机网卡 后,就可以对网络网卡进行配置了。在选中 CentOS7 系统后,选择菜单 控制 > 设置 > 网络,并分别为 网卡1 和 网卡2 设置成如下:
(其中 MAC 地址记得刷新两次,以确保网卡配置生效)
-
网卡硬件配置好以后,我们就可以开机了。进入操作系统,我们执行
ip addr
命令后就能看到 lo、enp0s3、enp0s8 三个网络适配器了: -
其中 enp0s3 的适配器配置文件已存在,我们可以使用命令
vi /etc/sysconfig/network-scripts/ifcfg-enp0s3
对其进行修改,其配置如下: -
而 enp0s8 的配置文件,一开始可能是不能存在的,我们可以执行
cd /etc/sysconfig/network-scripts
进入到 network-scripts 目录中。再用cp ifcfg-enp0s3 ifcfg-enp0s8
把 ifcfg-enp0s3 复制一份成为 ifcfg-enp0s8,然后使用vi ifcfg-enp0s8
对其进行编辑,其配置如下:你们可能会疑惑,HWADDR 和 UUID 这两个参数是如何得到的。
其中,HWADDR 即 MAC 地址(由 12 个十六进制字符组成,用冒号两两隔开),可查看步骤 3 得到,或者通过命令
ip addr
得到UUID 则可以使用命令
nmcli con
获得 -
到此,我们完成了网卡适配器的配置。先执行
systemctl restart network
刷新网络,然后执行ping www.baidu.com
可以看到我们已经能访问外部网络:在 CentOS7 中再执行
ping 192.168.0.66
访问宿主系统,可以看到也是 OK 的(如果没 ping 通,你可以临时把宿主系统 Windows10 的防火墙关闭,看看是否由于宿主系统的防火墙入站规则太过严格导致请求被拦截): -
如果是宿主系统需要访问虚拟机系统的内部服务器,则可以在 网卡1(即 NAT 网卡) 的端口转发进行配置:
同时,把必要的端口添加到 CentOS7 的防火墙白名单中,如:
bash# 把 81 端口永久添加到防火墙白名单 firewall-cmd --add-port=81/tcp --permanent # 重新加载防火墙规则 firewall-cmd --reload
假设 CentOS7 运行了 Nginx 服务,服务的端口为 81,则用户可以在 Windows10 的浏览器中输入
192.168.56.102:81
来访问虚拟机中的 Nginx 网页了
总结
到这篇文章为止,很多内容都是属于技巧性的,没有体现出系统性。接下来写一些体系化的内容,是重中之重。