1. 为什么要在Win10上折腾CentOS 7.9虚拟机
很多人第一次接触Linux服务器环境,都是从在Windows上装一台虚拟机开始的。直接在物理机上装双系统风险太大,分区一旦搞错,整个硬盘的数据都可能保不住;用WSL虽然轻便,但它和真实服务器环境还是有差距,尤其是网络配置、systemd服务管理这些细节,WSL的表现和一台独立虚拟机并不完全一致。所以用VMware Workstation Pro在Win10上跑一台CentOS 7.9,是很多人搭建本地实验环境的首选方案。
CentOS 7.9这个版本值得单独说一句。它是CentOS 7系列的最后一个版本,2024年6月之后官方已经停止维护,但即便如此,大量企业内部的生产环境仍然跑在CentOS 7上,很多老项目的部署文档、依赖包、脚本都是围绕它写的。你在学习或者复现某些部署流程时,用CentOS 7.9反而比用CentOS Stream或者Rocky Linux更省事,因为网上能搜到的资料绝大多数都是针对7.x的。这也是为什么直到今天,还有人在新机器上装CentOS 7.9来做实验。
装完之后默认是动态分配IP的,也就是DHCP模式。这个模式在你自己家里用没问题,但一旦你要做下面这些事情,就会立刻感到难受:搭建一个本地的Web服务,想让宿主机或者局域网里其他设备稳定访问;配置数据库允许特定IP连接;跑一些需要固定监听地址的服务;或者单纯就是每次重启虚拟机IP都变,SSH连接要重新查地址。这时候就必须把动态IP改成静态IP。
而静态IP配完之后,还有一个更常见的坑:能ping通宿主机,但访问不了外网。这个问题几乎每个新手都会遇到一次,根源通常出在网关、DNS或者VMware虚拟网络编辑器的配置上。这篇内容就把从装系统到配静态IP再到打通外网的完整链路讲清楚,每一步都说明白为什么这么做,以及容易在哪里翻车。
2. 装系统之前的准备工作与虚拟机创建
2.1 VMware Pro 16的安装与版本选择
VMware Workstation Pro 16这个版本对Win10的兼容性很好,安装过程基本一路下一步就行。有一点需要注意:安装的时候它会默认勾选一些共享组件,比如增强型键盘驱动,这些保持默认即可。安装完成后建议重启一次宿主机,让虚拟网卡驱动正常加载。
安装完之后你会发现在Win10的"网络连接"里多出来两块虚拟网卡,通常叫VMnet1和VMnet8。VMnet1是Host-Only模式用的,VMnet8是NAT模式用的。这两块网卡的存在非常关键,后面配静态IP能不能上网,很大程度上取决于你对这两块网卡对应关系的理解。
提示:如果你之前装过其他虚拟机软件,比如VirtualBox,建议先卸载干净再装VMware,否则虚拟网卡可能会冲突,导致网络时通时不通。
2.2 CentOS 7.9镜像的获取与校验
CentOS 7.9的ISO镜像有好几种,DVD版、Everything版、Minimal版。做实验环境我一般推荐用DVD版,大约4.5G左右,它包含了常用的软件包,装完之后不用频繁联网装东西。Minimal版虽然小,但很多工具都没有,后面你还得自己配yum源去补,反而麻烦。
下载完之后一定要做一次校验,比对一下SHA256值。镜像下载不完整是导致安装过程中报错的常见原因之一,尤其是网络不稳定的情况下。校验命令在Windows上可以用certutil,在Linux上直接用sha256sum。
2.3 新建虚拟机时的关键参数
新建虚拟机时,VMware会问你是典型配置还是自定义配置。这里建议选自定义,因为典型配置会帮你自动决定很多参数,而这些参数后面改起来比较麻烦。
几个关键参数我列一下我的习惯值:
| 参数项 | 推荐值 | 说明 |
|---|---|---|
| 内存 | 2GB起步,建议4GB | 1GB跑图形界面会卡,纯命令行1GB勉强够 |
| 处理器 | 2核 | 单核编译东西太慢 |
| 硬盘 | 20GB起步 | 建议40GB,快照很占空间 |
| 网络类型 | NAT | 后面配静态IP上网最省事 |
| 磁盘类型 | SCSI | 默认即可,兼容性好 |
网络类型这里重点说一下。VMware有三种主要网络模式:桥接、NAT、仅主机。桥接模式下虚拟机会直接占用你局域网的一个IP,和宿主机平级,配置静态IP时要和你的路由器网段一致;NAT模式下虚拟机在一个独立的子网里,通过宿主机转发上网,配置起来最不容易出错;仅主机模式则完全不能上外网。对于新手做实验,NAT是最稳妥的选择,这篇内容也是基于NAT模式来讲的。
3. CentOS 7.9安装过程中的分区与网络设置
3.1 安装界面的语言与时间设置
启动虚拟机加载ISO之后,会进入安装引导界面。第一项是"Install CentOS 7",直接回车即可。语言选择界面建议选英文,不是因为我英文好,而是因为中文界面下很多报错信息翻译得莫名其妙,你拿去搜索都搜不到对应的解决方案。时间设置里把时区选成Asia/Shanghai,这样系统日志的时间戳和你本地时间一致,排查问题的时候不会看错时间。
3.2 分区方案:为什么我不用自动分区
安装界面里有个"INSTALLATION DESTINATION",点进去默认是自动分区。自动分区能用,但它会把大部分空间分给home目录,根目录只给50G左右。如果你后面要装一些大软件或者跑数据库,根目录很容易满。我一般选"I will configure partitioning"手动分区,方案如下:
- /boot:1GB,标准分区,放内核和引导文件
- swap:内存的1到2倍,内存4GB的话给4GB
- /:剩余全部空间,用xfs文件系统
CentOS 7默认文件系统就是xfs,不用改。swap的大小有个老说法是内存的两倍,但现在内存都比较大,4GB内存给4GB swap足够了,给太多也是浪费磁盘。
3.3 安装过程中的网络开关
安装界面里有个"NETWORK & HOST NAME",很多人装系统的时候直接跳过,装完才发现网卡没启用。这里建议在安装阶段就把右上角的开关打开,让它通过DHCP先获取一个地址。这样做的好处是安装程序能顺便把网卡配置文件生成好,你后面改静态IP时只需要改几个字段,而不是从零写一个配置文件。
主机名也在这里设置,我习惯设成类似centos-dev这种有意义的名字,别用默认的localhost,后面多台虚拟机的时候你会分不清谁是谁。
设置完之后点"Begin Installation",等待安装完成,设置root密码,创建一个普通用户。root密码建议设一个你记得住的,实验环境不用太复杂,但别用123456这种,有些系统会拒绝。
4. 静态IP配置的完整操作与原理拆解
4.1 先搞清楚VMware NAT模式的网段
在动手改配置文件之前,必须先确认你的NAT模式用的是哪个网段。打开VMware的"编辑"菜单,进"虚拟网络编辑器",选中VMnet8(NAT模式那一行),点"NAT设置",你会看到网关地址,通常是类似192.168.x.2这样的。再看上面的子网IP,通常是192.168.x.0,子网掩码255.255.255.0。
这个网段是VMware自己分配的,不同机器上可能不一样,所以你不能照抄别人的192.168.1.x或者192.168.100.x,必须以你自己机器上看到的为准。这是新手最容易犯的错误之一:照着网上的教程抄了一个IP,结果网段根本对不上,怎么都连不通。
假设我这边看到的子网是192.168.88.0,网关是192.168.88.2,那么我就可以规划:
- 虚拟机静态IP:
192.168.88.100 - 网关:
192.168.88.2 - DNS:
192.168.88.2(NAT模式下网关通常也做DNS转发)
4.2 找到网卡配置文件并修改
CentOS 7的网卡配置文件在/etc/sysconfig/network-scripts/目录下,文件名一般是ifcfg-ens33这种格式。ens33是网卡名,不同机器上可能是ens32、ens160等等,用ip addr命令看一下就知道。
用vi或者nano打开这个文件,需要改动的字段如下:
TYPE=Ethernet BOOTPROTO=static ONBOOT=yes IPADDR=192.168.88.100 NETMASK=255.255.255.0 GATEWAY=192.168.88.2 DNS1=192.168.88.2 DNS2=114.114.114.114这里逐个解释一下为什么这么写。BOOTPROTO从dhcp改成static,这是核心开关。ONBOOT=yes保证开机自动启用网卡,有些镜像默认是no,不改的话重启后网卡不启动,你会以为配置丢了。IPADDR就是你要固定的地址,注意不要和网关、宿主机或者其他虚拟机的地址冲突。DNS1指向网关,是因为NAT模式下VMware的NAT服务会做DNS转发;DNS2填一个公共DNS作为备用,防止网关DNS偶尔抽风。
注意:
NETMASK和PREFIX两种写法都行,PREFIX=24等价于NETMASK=255.255.255.0,但不要两个都写,会冲突。
4.3 重启网络服务并验证
改完配置文件后,重启网络服务:
systemctl restart network然后验证三件事。第一,看IP是否生效:
ip addr show ens33第二,看路由表里网关是否正确:
ip route show应该能看到一条default via 192.168.88.2的记录。第三,ping一下网关:
ping -c 4 192.168.88.2如果网关能通,说明二层三层链路没问题。如果网关都ping不通,那问题一定出在IP配置或者VMware网络设置上,先别急着测外网。
5. 能ping通网关却上不了外网的排查链路
5.1 先分清是DNS问题还是路由问题
外网访问不了,症状其实分两种。一种是ping 8.8.8.8能通,但ping www.baidu.com不通,这是典型的DNS问题;另一种是ping 8.8.8.8都不通,那是路由或者NAT转发的问题。这两种情况的排查方向完全不同,所以第一步永远是先做这个区分。
我见过太多人一上来就改DNS,结果人家根本是路由没配好,白折腾半天。所以养成习惯:先ping IP,再ping域名。
5.2 DNS问题的常见原因
如果确认是DNS问题,检查/etc/resolv.conf这个文件:
cat /etc/resolv.conf正常情况下应该能看到nameserver 192.168.88.2这样的记录。如果没有,说明你的网卡配置文件里的DNS1没生效。这里有个坑:CentOS 7里如果你在网卡配置里写了DNS1,重启网络后它会自动写入resolv.conf;但如果你手动改过resolv.conf,重启网络又会被覆盖回去。所以正确的做法是只改网卡配置文件,不要手动动resolv.conf。
还有一种情况是网关的DNS转发没开。回到VMware的虚拟网络编辑器,确认NAT设置里没有把DNS功能关掉。正常情况下NAT设置里会有一个"DNS设置"的选项,保持默认即可。
5.3 路由与NAT转发问题
如果连ping 8.8.8.8都不通,先看路由表:
ip route show如果没有default路由,说明网关没配上。回去检查网卡配置文件里的GATEWAY字段,确认IP地址和网关在同一个网段。比如你的IP是192.168.88.100,网关却写成了192.168.1.2,那肯定不通。
如果路由表正常,网关也能ping通,但外网不通,那就要检查VMware的NAT服务了。在Win10的服务列表里找到"VMware NAT Service",确认它是运行状态。这个服务如果被某些安全软件禁用了,NAT转发就会失效。另外,宿主机的防火墙有时候也会拦截NAT流量,可以临时关掉防火墙测试一下,确认是防火墙问题后再加例外规则。
5.4 一个容易被忽略的点:多网卡冲突
如果你的宿主机上同时有VMnet1和VMnet8,而且两个网段恰好和你的物理局域网网段重叠,就会出现路由混乱。比如你家里路由器是192.168.1.0网段,而VMnet8恰好也是192.168.1.0,那宿主机就分不清去192.168.1.x的流量该走物理网卡还是虚拟网卡。解决办法是在虚拟网络编辑器里把VMnet8的子网改成别的网段,比如192.168.88.0,避开冲突。
6. 让宿主机和虚拟机互相访问的进阶配置
6.1 宿主机访问虚拟机的服务
静态IP配好之后,宿主机想访问虚拟机上的服务就很简单了,直接用虚拟机的IP加端口就行。比如虚拟机上跑了个Nginx监听80端口,宿主机浏览器里输入http://192.168.88.100就能打开。但前提是虚拟机的防火墙放行了对应端口。
CentOS 7默认的firewalld会拦截大部分端口,测试阶段可以临时关掉:
systemctl stop firewalld systemctl disable firewalld生产环境当然不能这么干,但实验环境为了减少干扰,关掉防火墙是常见做法。如果不想关,就用firewall-cmd加规则放行端口。
6.2 用SSH连接提升操作效率
在VMware的窗口里敲命令体验很差,复制粘贴都不方便。配好静态IP后,用SSH工具连上去操作会舒服很多。宿主机上用Xshell、PuTTY或者Windows自带的ssh命令都行:
ssh root@192.168.88.100连上之后你会发现复制粘贴、多标签、日志滚动都方便多了。这也是为什么我强烈建议先把静态IP配好再开始干活,动态IP每次重启都变,SSH连接要重新配。
6.3 快照:实验环境的后悔药
VMware的快照功能一定要用起来。在系统刚装好、静态IP刚配通这个时间点,打一个快照。后面你不管怎么折腾,把系统搞崩了,一键回滚到快照点,几分钟就恢复。我自己的习惯是每完成一个阶段性配置就打一个快照,命名清楚,比如"base-installed""static-ip-ok""nginx-configured"。这样出问题的时候不用从头再来,省下大量时间。
提示:快照会占用磁盘空间,而且快照链太长会影响性能。建议定期清理不需要的快照,保留最近两三个即可。
7. 几个我踩过的坑和对应的解决办法
第一个坑是网卡名不对。网上很多老教程写的是ifcfg-eth0,但CentOS 7默认用的是ens33这种可预测网卡名。你照着eth0去改,文件根本不存在。解决办法就是用ip addr先确认实际网卡名,再去找对应的配置文件。
第二个坑是改了配置文件但忘了改文件名里的网卡名。比如你把ifcfg-ens33的内容改了,但系统实际用的是ens32,那改了也白改。这个错误很隐蔽,因为文件确实存在,内容也确实改了,就是不生效。
第三个坑是VMware的虚拟网络编辑器需要管理员权限才能改。有时候你改了NAT设置,点确定的时候提示需要提权,如果没注意,改动其实没保存。改完之后一定要重新打开确认一遍。
第四个坑是宿主机睡眠唤醒后虚拟网络失效。Win10睡眠再唤醒后,VMware的NAT服务有时候会异常,表现为虚拟机突然上不了网。这时候重启一下VMware NAT Service,或者干脆重启虚拟机,通常就能恢复。
第五个坑是复制虚拟机后IP冲突。如果你把配好静态IP的虚拟机复制了一份,两份虚拟机IP一样,就会冲突。复制之后记得改新虚拟机的IP和MAC地址。
8. 关于这套环境后续怎么用
环境搭好之后,这套CentOS 7.9加静态IP的组合可以干很多事情。你可以拿它练Shell脚本,因为IP固定了,脚本里写死的地址不会失效;可以搭LAMP或者LNMP环境做Web开发测试;可以装Docker跑容器实验;也可以配成跳板机去连其他实验设备。静态IP是这一切的基础,没有它,每次重启都要重新查地址,任何需要固定地址的配置都会变得很脆弱。
我个人在实际操作中的体会是,虚拟机环境最大的价值在于"可劲造"。配错了、搞崩了,回滚快照就行,没有任何心理负担。这种可以随意试错的环境,比在真实服务器上小心翼翼操作的学习效率高得多。所以别怕配错,把静态IP和外网访问这条链路自己动手走通一遍,比看十篇教程都管用。