☰
VMware Workstation Pro 16安装CentOS7与NAT配置
2026/10/1 9:43:17 网站建设 项目流程

装 CentOS7 这件事,我在自己机器、公司测试机、给同事远程指导的电脑上前后做过十几次,从 VMware Workstation Pro 16 一路踩到老版本的 15,从 BIOS 引导踩到 UEFI,从桥接踩到 NAT,最后发现新手真正卡住的从来不是"怎么点下一步"——那个环节有手就行。卡住的地方永远是三件事:装完系统网卡起不来、ping 不通外网、远程工具连不上。所以这篇我把 VMware Workstation Pro 16 安装 CentOS7 的完整流程和配置网络这两件事绑在一起写,一边装一边把网络打通,装完就能用,不用来回折腾两遍。

这篇文章适合谁看:完全没碰过虚拟机的在校学生、需要临时搭一套 Linux 测试环境的后端和运维、以及被"虚拟机网络配置"这四个字劝退过好几次的人。我尽量不用"读者"这种词,就当是坐在你旁边,我把键盘抢过来一步步敲给你看,顺手把每一步背后的"为什么要这么点"讲清楚,这样你下次换台机器、换个发行版,也能自己推出来该怎么配。

1. 方案选型与整体设计思路

动手之前先把选型讲透,不然后面全是照着抄,抄完一出错就完全不知道从哪儿查。虚拟机跑 Linux 这套东西,选型只有三个决策点:跑什么发行版、用哪个虚拟化软件、用哪种网络模式。这三件事定下来,后面 90% 的坑都能提前避开。

1.1 为什么到现在还有人用 CentOS 7

很多人会问,CentOS 7 都停止维护了(官方在 2024 年 6 月 30 日结束生命周期支持),为什么教程还在写它?原因很实在:企业里存量服务器太多,大量业务的部署文档、脚本、依赖包都是按 CentOS 7 写的;很多高校的操作系统课、数据库课实验指导书也是按 CentOS 7 出的;再比如 Docker、Kubernetes 早期的入门教程,默认宿主环境就是 CentOS 7。

注意:CentOS 7 的官方 yum 源已经下线,直接从默认源装软件会报 "Could not resolve host: mirrorlist.centos.org"。这不是你网络没配好,是源没了,后面 4.1 节我给换源方案。很多人第一次装完以为网络坏了,其实网络好得很。

所以我的建议是:学基础、跑老项目、做实验,用 CentOS 7 完全没问题,但要清楚它是"维护型环境"而不是"学习前沿技术的环境"。如果你纯粹是想学新技术栈,Ubuntu 22.04 / 24.04 的体验会更好;但如果你想跟公司生产环境对齐,CentOS 7 或者它的替代品(Rocky Linux、AlmaLinux、openEuler)更合适。这个判断你自己做,我下面讲的安装和网络配置逻辑,这些发行版其实大差不差。

1.2 VMware Workstation Pro 16 和其他方案的取舍

虚拟化软件主要有这么几类,我列个表,你自己对号入座:

方案适合场景网络配置难度我的评价
VMware Workstation Pro 16个人学习、企业测试、多机集群模拟中,图形化编辑器很好用功能最全,装完基本不用管
VMware Workstation Player只跑单台虚拟机低,但改网络参数受限免费,功能被砍得比较狠
VirtualBox免费、跨平台中,网络界面没 VMware 直观免费里最稳,性能略逊
Hyper-VWindows 10/11 自带高,网络虚拟交换机概念绕和 VMware 会冲突,不能共存
WSL2只要一个 Linux 命令行极低不是完整虚拟机,学系统管理不够用

选 VMware Workstation Pro 16 的理由很简单:虚拟网络编辑器这个功能值回票价。桥接、NAT、仅主机三种模式的子网、网关、DHCP 池都能在图形界面里改,出问题了直接对着界面看参数,比 VirtualBox 和 Hyper-V 那种"配置文件里翻半天"的方式友好太多。

提示:VMware Workstation 和 Windows 自带的 Hyper-V、WSL2、沙盒(Sandbox)、内存完整性(核心隔离)这四样东西会互相抢底层虚拟化权限。装 VMware 之前,如果开过后两样,建议先去"启用或关闭 Windows 功能"里把 Hyper-V 和虚拟机平台关掉,否则 VMware 可能报 "VMware Workstation 与 Hyper-V 不兼容",或者能启动但性能掉一半。

1.3 三种网络模式的本质区别(重点)

这是整篇文章最值钱的一段。很多人配网络配到崩溃,就是因为从来没搞懂这三种模式在"数据包怎么走"这件事上的差别。

桥接(Bridged):虚拟机相当于你局域网里一台独立的机器,从路由器的 DHCP 直接拿一个和宿主机同网段的 IP。比如你宿主机是 192.168.1.5,虚拟机就是 192.168.1.x。特点是对外完全透明,同一局域网的其他电脑能直接访问它,适合要模拟"多台服务器互相通信"的场景。缺点是办公网、校园网、公共 WiFi 经常有 MAC 地址管控或者客户端隔离,桥接会拿不到 IP,甚至把你宿主机网卡搞出问题。

NAT:虚拟机躲在你宿主机后面,共享宿主机的网络出口。虚拟机在一个私有网段(VMware 默认是 VMnet8,比如 192.168.10.0/24),出去的数据包由 VMware 的 NAT 服务做地址转换。特点是虚拟机可以上网,但局域网里的其他机器默认访问不到它(除非配端口转发)。适合绝大多数学习和开发场景。

仅主机(Host-only):虚拟机只能和宿主机通信,出不了外网。适合做隔离实验,比如你要模拟一台"内网服务器",故意不让它联网。

我一般给新手的第一条建议是:先用 NAT。原因有三:不需要管路由器,宿主机能上网虚拟机就能上网;IP 段是 VMware 自己维护的私有段,不会和公司网络冲突;出问题好排查,因为变量少。等你对网络配置熟了,再去搞桥接。

2. 安装前的硬件与镜像准备

准备工作没做对,后面会多花两小时。这一节说三件事:镜像从哪下、宿主机资源怎么分、创建虚拟机时哪些参数不能瞎点。

2.1 CentOS 7 镜像下载与完整性校验

因为 CentOS 7 已经进入维护周期尾声,官方主站把镜像移到了归档仓库。国内下载走阿里云的归档镜像站速度最稳,路径大意是mirrors.aliyun.com/centos-vault/7.9.2009/isos/x86_64/,这个目录里通常有这几个文件:

  • CentOS-7-x86_64-DVD-2009.iso(约 4.5 GB):标准完整安装镜像,带图形界面和大部分常用包,推荐新手直接下这个
  • CentOS-7-x86_64-Minimal-2009.iso(约 1 GB):最小化安装,只有基础命令行,适合追求干净、后面自己按需装包的人
  • CentOS-7-x86_64-NetInstall-2009.iso(约 500 MB):网络安装,装的过程中要从源下载包,网络不稳会失败
  • CentOS-7-x86_64-Everything-2009.iso(约 10 GB):全量包,除了做离线源,一般用不上

我自己的习惯是下 DVD 版。虽然文件大,但它包含了基础软件组,装的时候不用联网、不用等人下载包,全程十分钟左右搞定,而且以后要装图形界面、要装开发工具组的时候不用再折腾源。

下完镜像务必校验一下,尤其是从非官方渠道拿的文件。Windows 上可以用 PowerShell 一行命令算哈希:

Get-FileHash .\CentOS-7-x86_64-DVD-2009.iso -Algorithm SHA256

然后跟镜像站目录里的sha256sum.txt对一下。别觉得这一步麻烦,我遇到过镜像下到一半断了、文件看着大小对但装到一半报解压错误的情况,回头找问题能耗掉一下午。校验一分钟的事,能省几个小时。

2.2 宿主机资源怎么分才合理

分配资源的原则是"够用就好,别贪",尤其是内存和磁盘。虚拟机不是装得越大越好,分配过多反而拖慢宿主机、影响你自己的体验。

内存:CentOS 7 最小化安装跑起来大概占 300–500 MB,带 GNOME 桌面大概 1.2–1.5 GB。所以:

  • 纯命令行学习:2 GB 够用,4 GB 舒服
  • 带图形界面:至少 4 GB
  • 要在里面跑 Docker、MySQL、Redis 之类:8 GB 起
  • 要模拟两三台机器的集群:先算总账,宿主机物理内存最好留出 4 GB 给自己用

CPU:虚拟机 CPU 核数不能超过宿主机物理核数(注意是物理核,不是线程数)。一般给 2 核就够了,跑编译、跑数据库可以给 4 核。分配超过物理核数会让 VMware 排队调度,反而更慢,这点很多人搞反。

磁盘:我建议:

用途建议容量说明
纯学习、跑命令20 GB精简置备,实际占用远小于此
装桌面 + 开发工具40 GB图形界面和开发包很吃空间
跑数据库 / 容器60 GB 以上数据目录会持续增长

关于"精简置备"和"厚置备"的区别:精简置备(Thin Provision)是虚拟机用多少磁盘才占多少宿主机空间,一开始只占几百兆;厚置备(Thick)是一开始就把 20 GB 真实划走。个人机器一律选精简置备,省空间,只是磁盘碎片会多一些,性能差异在 SSD 上基本感受不到。

2.3 创建虚拟机时容易被忽略的几个选项

点"新建虚拟机"、选"自定义(高级)"、然后是"稍后安装操作系统"(这一步很重要,先别挂镜像,等虚拟机建好再挂,否则可能直接进无交互安装)。硬件兼容性选 Workstation 16.x。

后面有几个选项,新手很容易略过但影响很大:

  • 固件类型:选 BIOS 而不是 UEFI。CentOS 7 对 UEFI 支持没问题,但很多老教程、老恢复操作都是按 BIOS 写的,选 BIOS 少一层变量。
  • 处理器虚拟化引擎:把"虚拟化 Intel VT-x/EPT 或 AMD-V/RVI"勾上。如果你打算在这台虚拟机里再装 KVM 或者跑嵌套虚拟化,这一项必须开;但如果你宿主机本身已经在虚拟机里(比如云主机),这一项勾了会报错,那就别勾。
  • 网络类型:按 1.3 节的结论先选 NAT。
  • I/O 控制器类型:选推荐的 LSI Logic 或 PVSCSI,保持默认即可。
  • 磁盘类型:SCSI,默认即可。
  • 声卡、打印机、USB 控制器:服务器环境用不上,可以在"自定义硬件"里删掉,能省一点资源,也让启动更快。

还有一个隐藏坑:虚拟机名称和存放位置别放在中文路径或者带空格的路径下。VMware 大部分情况能处理,但一旦你后面要用命令行调vmrun、写脚本做自动化,中文路径会给你带来一堆莫名其妙的编码问题。习惯性用D:\vms\centos7-01这种路径。

3. 系统安装全过程实操记录

准备工作做完,接下来就是上手装。整个过程我会把"安装界面里能顺手做掉的事"全部做掉,因为安装界面里配网络、配主机名,比装完之后改配置文件省事得多。

3.1 引导阶段:语言、时区、键盘

挂上 ISO 后开机,第一个界面是安装介质选择,直接回车选第一项 "Install CentOS 7"。如果卡在这个界面或者提示找不到介质,八成是 ISO 没挂对——虚拟机设置 → CD/DVD → 使用 ISO 映像文件,并且勾上"启动时连接"。

进入图形安装向导后,第一步选语言。这里有个小建议:界面语言选英文(English),系统语言后面可以再改。原因是中文界面下很多报错信息会被翻译得莫名其妙,你拿去搜索都搜不到对应的英文答案;而且中文环境下终端里的中文字体渲染经常出问题,出现一堆方块。

选完语言进主界面,先把该点的都点一遍:

  • DATE & TIME(时间和日期):时区选 Asia/Shanghai,右上角把"网络时间"打开
  • KEYBOARD(键盘):默认 English (US) 即可
  • LANGUAGE SUPPORT:可以顺手勾上中文支持,装完就是中文环境

3.2 软件选择:最小化装还是带桌面

点 "SOFTWARE SELECTION",左边是基础环境,右边是附加组件:

  • Minimal Install(最小安装):只有命令行,没有图形界面。占用小、启动快、需要背命令。我推荐做服务器/运维练习时选这个。
  • Infrastructure Server(基础设施服务器):装了一堆网络服务相关的包,做服务器角色练习方便。
  • Server with GUI(带 GUI 的服务器):命令行 + GNOME 桌面。适合完全新手过渡期,或者需要跑图形化工具(比如浏览器测 Web 应用)的场景。
  • GNOME Desktop / KDE Plasma Workspaces:完整桌面环境,占用最大。

我自己的经验是:第一次装,选"带 GUI 的服务器",先看到桌面,心里有底;等你摸熟了,再装最小化版本,从零搭一次服务,那个过程中学到的东西比用桌面多十倍。因为桌面环境下很多服务是自动配好的,你根本不知道它做了什么。

如果想在最小化系统上补桌面,装完后用yum groupinstall "GNOME Desktop"也能补上,只是要配置默认启动目标systemctl set-default graphical.target,下载量比较大。

3.3 分区方案:自动还是手动

点 "INSTALLATION DESTINATION",选中那块 20 GB 的虚拟磁盘,然后往下看 "Partitioning":

  • Automatically configure partitioning(自动分区):新手直接用这个,它会给你分一个 /boot、一个 swap、一个 LVM 的根分区,能跑起来,学习够用。
  • I will configure partitioning(手动分区):想理解 Linux 文件系统的,我强烈建议走一遍手动。

手动分区的经典方案(20 GB 磁盘):

挂载点建议大小为什么
/boot1 GB内核和引导文件,512 MB 也行,1 GB 更宽松
swap2 GB交换分区,物理内存不足时兜底
/剩余全部根分区,系统和软件都装这

关于 swap 大小的老说法是"物理内存的 1–2 倍",那是内存普遍 1–2 GB 时代的经验。现在虚拟机给了 4 GB 内存,swap 给 2 GB 就完全够,甚至给 1 GB 也行。真正的原则是:如果你的应用对内存延迟敏感,swap 越小越好,因为一旦用上 swap,性能会断崖式下跌。虚拟机里给 2 GB 是个安全的折中。

分区类型上,自动分区默认会用 LVM(逻辑卷管理)。LVM 的好处是以后能在线扩容、能做快照,坏处是对新手来说多一层抽象,出问题了lsblk看到的是 lv 而不是分区,容易懵。学习阶段可以保留 LVM,但你要知道有这么回事。如果你想更直观,可以在分区界面把类型从 LVM 改成 Standard Partition。

提示:分区界面上"分区方案"那里改完一定要点 "Done",然后在弹出的摘要窗口里点 "Accept Changes",否则分区根本没生效。这一步漏点的人特别多,回头装完发现只有一个分区,还得重装。

3.4 网络与主机名:在安装界面就配好

这是我最想强调的一步。安装主界面上有个 "NETWORK & HOST NAME",点进去:

左边列表里会有一个Ethernet (ens33)之类的网卡,右上角的开关默认是关的(OFF),点一下打开。打开之后它会通过 VMware 的 DHCP 自动拿到一个 IP,一般显示成 192.168.10.x 之类的地址。

然后在左下角"Hostname"那里填一个主机名,比如centos7-01,点 Apply 应用。

为什么要在安装阶段就打开网卡?因为 CentOS 7 安装程序会自动把ONBOOT=yes写进网卡配置文件。如果你这里没打开,装完之后/etc/sysconfig/network-scripts/ifcfg-ens33里就是ONBOOT=no,开机网卡不启动,你会看到ip addr只有一个 lo,然后开始怀疑人生。这个坑我踩过,当时以为是 VMware 的问题,查了两个小时。

主机名也建议在这里设好,装完再改要动/etc/hostname和/etc/hosts两个文件,还得hostnamectl set-hostname,麻烦。

3.5 root 密码、用户创建与完成安装

点 "Begin Installation" 开始安装,安装过程中会让你设两样东西:

ROOT PASSWORD:root 是超级管理员,密码一定要设。如果你设的是弱密码(比如123456),安装程序会弹两次确认框,点两次 "Done" 就行,界面会显示 "Weak password" 但你确认了它照样接受。学习环境我建议还是设个像样的,比如Centos@2024,因为很多服务(MySQL、Redis)的默认配置会拒绝弱密码环境。

USER CREATION:可以创建一个普通用户,比如dev,并勾选 "Make this user administrator" 把它加进 wheel 组,这样它能通过sudo提权。日常操作建议用普通用户 + sudo,而不是一直 root 登录,这是个好习惯。

等进度条走完,点 "Reboot" 重启。重启前记得回到虚拟机设置,把 CD/DVD 的"启动时连接"取消勾选,或者改成本地磁盘优先,不然可能又从 ISO 引导一遍。

重启后出现登录提示符,输入 root 和密码(输密码时屏幕不显示任何字符,包括星号,这是正常的,不是键盘坏了),登录成功后看到[root@centos7-01 ~]#,说明系统装好了。

4. 装完必做的初始化配置

系统起来只是第一步,一个刚装好的 CentOS 7 是"缺胳膊少腿"的状态:源是坏的、常用工具没装、主机名可能不对、时间可能不准。这一节把这些补齐,顺手打个快照。

4.1 换源:解决 CentOS 7 源失效问题

先看清问题。执行yum repolist或者yum install -y vim,大概率会报错,提示找不到 mirrorlist.centos.org,或者提示某仓库 404。原因前面说了,官方源归档了。解决办法是把仓库文件里的地址从mirror.centos.org换成归档站或者国内镜像。

最省事的做法是直接替换仓库文件。先备份:

cd /etc/yum.repos.d/ mkdir backup && mv *.repo backup/

然后写一个新的CentOS-Base.repo,内容用国内镜像的归档地址:

[base] name=CentOS-7 - Base - mirrors.aliyun.com baseurl=https://mirrors.aliyun.com/centos-vault/7.9.2009/os/$basearch/ gpgcheck=1 gpgkey=https://mirrors.aliyun.com/centos-vault/RPM-GPG-KEY-CentOS-7 enabled=1 [updates] name=CentOS-7 - Updates - mirrors.aliyun.com baseurl=https://mirrors.aliyun.com/centos-vault/7.9.2009/updates/$basearch/ gpgcheck=1 gpgkey=https://mirrors.aliyun.com/centos-vault/RPM-GPG-KEY-CentOS-7 enabled=1 [extras] name=CentOS-7 - Extras - mirrors.aliyun.com baseurl=https://mirrors.aliyun.com/centos-vault/7.9.2009/extras/$basearch/ gpgcheck=1 gpgkey=https://mirrors.aliyun.com/centos-vault/RPM-GPG-KEY-CentOS-7 enabled=1

保存后清缓存重建:

yum clean all yum makecache

这里有个前置条件:你的虚拟机必须已经能上网,否则换源也没用。判断方法很简单,ping -c 3 223.5.5.5,能通说明网络在,不能通先去解决第 5 节的网络配置。

提示:gpgcheck=1是校验包签名的,安全性更好,但如果你的环境完全离线或者镜像源不提供 GPG 公钥,可以临时改成 0。生产环境别这么干。另外注意$basearch是 yum 的变量,会替换成 x86_64 之类的架构名,不要手写成固定字符串。

4.2 最小化系统必须补齐的工具集

如果装的是最小化系统,有一个非常反直觉的事:ifconfig、netstat、route、service这些命令都没有。不是你不熟,是真的没装。它们在net-tools包里,而 CentOS 7 默认推荐用ip、ss、systemctl替代。

但很多人就是习惯ifconfig,那就装上:

yum install -y net-tools vim wget curl lrzsz bash-completion tree

逐个说下为什么:

  • net-tools:提供 ifconfig、netstat、route,排查网络时用着顺手
  • vim:最小化系统只有 vi,vim 的高亮和缩进对写配置很重要
  • wget/curl:下载文件和测 HTTP 接口必备
  • lrzsz:提供 rz/sz 命令,可以在支持 ZMODEM 的终端里直接拖文件,比开 SFTP 快
  • bash-completion:命令补全,敲一半按 Tab 就能补全参数,效率翻倍
  • tree:看目录结构,调试安装路径时很直观

另外注意firewalld,CentOS 7 默认是开的。学习环境里我一般直接关掉,避免它拦掉你以为已经开好的端口:

systemctl stop firewalld systemctl disable firewalld

注意:关防火墙只适合学习和内网实验环境。任何对外提供服务的场景都必须保留防火墙,用firewall-cmd --add-port精确放行端口。别把学习习惯带到生产上,这是个原则问题。

SELinux 也是同样的情况。CentOS 7 默认是 enforcing 模式,很多应用(尤其是老版本的 Web 服务、数据库)会因为 SELinux 上下文不对而启动失败,报错信息还特别难懂。学习环境可以临时改成 permissive:

setenforce 0

这只是临时生效,重启就恢复。永久改要动/etc/selinux/config里的SELINUX=值。我的建议是:新手阶段改成 permissive,等你理解了 SELinux 的上下文机制再改回 enforcing。直接彻底关掉不是好习惯,因为线上环境基本都开着。

4.3 时间同步与主机名收尾

虚拟化环境有个典型问题:虚拟机长时间挂起(suspend)再恢复后,系统时间会漂移。解决办法是用 chrony 做时间同步。CentOS 7 自带 chronyd,检查一下状态:

systemctl status chronyd timedatectl

timedatectl会输出几行关键信息:本地时间、是否启用 NTP 同步、时区。如果时区不对,用timedatectl set-timezone Asia/Shanghai改。如果想手动指定时间服务器,编辑/etc/chrony.conf,把server那几行换成国内的时间服务器地址,然后systemctl restart chronyd。

主机名用hostnamectl查看和修改:

hostnamectl set-hostname centos7-01

改完顺手在/etc/hosts里加一行127.0.0.1 centos7-01,避免某些程序解析自己主机名时卡几秒。这个小细节在搭建 Hadoop、K8s 集群时特别重要,因为那些组件会频繁做主机名解析。

4.4 打快照:最被低估的一步

系统装好、初始化做完、还没开始折腾服务的时候,立刻打一个快照。VMware 里点"虚拟机 → 快照 → 拍摄快照",起个能看懂的名字,比如base-clean-with-network。

为什么这一步价值极高?因为后面你装 Docker、改网络配置、装数据库驱动,一定会把系统搞崩那么一两次。有快照,你 30 秒就能回到干净状态,而不是重装半小时。我自己维护了好几套实验环境,每个环境的第一件事永远是打快照,节点多了还要给每个节点都打。这是做实验和自学最基本的工程习惯,比任何"技巧"都管用。

5. 配置网络:NAT 静态 IP 完整实操

到核心部分了。前面安装界面的 DHCP 只是让虚拟机临时能上网,真正做开发和服务部署,你需要一个固定 IP,否则每次重启 IP 都变,远程工具里的会话、配置文件里的地址全得跟着改。这一节把 NAT 模式下的静态 IP 配法讲透。

5.1 先看懂 VMware 的虚拟网络编辑器

在 VMware 菜单栏点"编辑 → 虚拟网络编辑器",注意这里的界面在 Pro 版本才有。点一下右下角的"更改设置"(需要管理员权限),然后选中 VMnet8 这一行。

里面有几个关键项,一定要看清楚:

  • 子网 IP:默认是 192.168.10.0,子网掩码 255.255.255.0。这就是你虚拟机的网段。
  • NAT 设置:点开后能看到网关 IP,默认是 192.168.10.2。这是虚拟机的出口。
  • DHCP 设置:点开后能看到起止 IP 地址范围,默认类似 192.168.10.128 到 192.168.10.254。
  • "将主机虚拟适配器连接到此网络":必须勾上,它在宿主机上创建一块 VMnet8 虚拟网卡,宿主机才能和虚拟机的这个网段通信。

这三个值(子网、网关、DHCP 池)记住了,后面写配置文件全靠它们。我给你一个对应的实例:

项目值
网段192.168.10.0/24
网关192.168.10.2
DHCP 池192.168.10.128 - 192.168.10.254
我选用的静态 IP192.168.10.100

为什么选 .100 而不是 .128 以上?因为要避开 DHCP 池。静态 IP 落在 DHCP 池里,理论上会和自动分配出去的地址冲突,虽然家庭环境下概率很低,但能避就避。.100 在 DHCP 池之外、网关之外,很安全。

提示:如果你想改网段(比如 192.168.10.x 和公司网络冲突了),就在这里改子网 IP,改完点"应用",VMware 会自动更新 NAT 和 DHCP 设置。改完记得宿主机上那块 VMnet8 网卡的 IP 也跟着变了,别用老地址去 ping 虚拟机,ping 不通不是虚拟机的问题。

5.2 修改网卡配置文件:逐行注释

CentOS 7 的网卡配置在/etc/sysconfig/network-scripts/下,文件名格式是ifcfg-网卡名。网卡名不一定是ens33,在 VMware 里一般是ens33,但也可能是ens160、eth0。先用命令确认真实名字:

ip addr show

输出里会看到类似2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP>这样的行,ens33就是网卡名。然后编辑对应文件:

vim /etc/sysconfig/network-scripts/ifcfg-ens33

改成下面这样,我逐行加注释:

TYPE=Ethernet PROXY_METHOD=none BROWSER_ONLY=no BOOTPROTO=static DEFROUTE=yes IPV4_FAILURE_FATAL=no IPV6INIT=no NAME=ens33 DEVICE=ens33 ONBOOT=yes IPADDR=192.168.10.100 PREFIX=24 GATEWAY=192.168.10.2 DNS1=223.5.5.5 DNS2=119.29.29.29

逐项解释,这几行改不对网络就通不了:

  • BOOTPROTO=static:从dhcp改成static,表示用手工指定的 IP。这一行不改,下面的 IPADDR 会被完全忽略。
  • DEFROUTE=yes:把这台机器的默认路由指向网关。如果改成 no,会出现"能 ping 通同网段但上不了外网"的诡异现象。
  • IPV6INIT=no:学习环境用不到 IPv6,关掉能少一堆日志噪音。
  • NAME/DEVICE:必须和实际网卡名完全一致,写错了服务启动会报"找不到设备"。
  • ONBOOT=yes:开机自动启用网卡。这个前面说过了,安装界面里打开网络它就会自动设成 yes。
  • IPADDR:静态 IP,按 5.1 节的规划填。
  • PREFIX=24:等同于子网掩码 255.255.255.0。老写法是NETMASK=255.255.255.0,两种都行,新版推荐 PREFIX。
  • GATEWAY:VMware 的 NAT 网关地址,注意这里是 192.168.10.2,不是 .1。
  • DNS1/DNS2:域名服务器。223.5.5.5 是阿里的公共 DNS,119.29.29.29 是腾讯的。写两个是冗余,第一个挂了会用第二个。

改完保存,重启网络服务:

systemctl restart network

注意 CentOS 7 用的是network服务,不是networking(那是 Ubuntu 的写法),也不是NetworkManager。这里有个小坑:CentOS 7 默认启用了 NetworkManager,它和 network 服务存在一定的管理权重叠。如果你改了配置文件重启不生效,可能是 NetworkManager 在覆盖它。排查方法:

systemctl status NetworkManager nmcli device status

如果 NetworkManager 是 active 状态并且接管了 ens33,你可以选择停用它,或者干脆用 nmcli 命令来配网络(效果一样,配置还是写到同一个文件里):

nmcli con mod ens33 ipv4.addresses 192.168.10.100/24 nmcli con mod ens33 ipv4.gateway 192.168.10.2 nmcli con mod ens33 ipv4.dns "223.5.5.5 119.29.29.29" nmcli con mod ens33 ipv4.method manual nmcli con up ens33

我个人习惯是手动改文件 + 重启 network 服务,因为它最直观,出问题了一眼就能看到配置文件长什么样。nmcli 适合写自动化脚本,但要敲好几次命令,还得记语法。

5.3 DNS 配置为什么老是失效

DNS 是网络配置里最容易反复出问题的地方,因为它有"两套配置在打架"。

第一套是网卡配置文件里的DNS1/DNS2,这是"源头"。第二套是/etc/resolv.conf,这是"实际生效的"。正常情况下,重启网络服务时系统会把网卡配置里的 DNS 同步写进resolv.conf。但如果你装过 Docker、装过某些网络管理工具,或者用了 NetworkManager,这个文件可能会被覆盖或者被清空。

排查顺序是:

cat /etc/resolv.conf ping -c 3 223.5.5.5 ping -c 3 www.baidu.com

判断逻辑很清晰:

  • 两个都通:网络和 DNS 都正常
  • ping 223.5.5.5通,ping www.baidu.com不通并且报 "Name or service not known":DNS 没配好,检查 resolv.conf
  • 两个都不通:网关或 IP 有问题,回到 5.2 节检查配置

如果确认是 resolv.conf 被覆盖了,最直接的办法是手动写一份:

cat > /etc/resolv.conf <<EOF nameserver 223.5.5.5 nameserver 119.29.29.29 EOF

但要注意,如果 NetworkManager 在跑,它可能下次重启又给你覆盖回去。想彻底解决就两条路:要么给/etc/resolv.conf加不可变属性(chattr +i /etc/resolv.conf,但改配置时记得先解锁),要么就用 NetworkManager 的方式统一管理 DNS。

5.4 桥接模式怎么配(附适用与不适用场景)

如果你的场景必须让局域网里其他机器访问这台虚拟机(比如用另一台电脑的浏览器访问虚拟机里的 Web 服务,或者模拟真实服务器集群),那就要用桥接。

配置步骤:虚拟机设置 → 网络适配器 → 选"桥接模式"。然后在宿主机上确认桥接到哪块物理网卡。一般用"自动",如果宿主机有多块网卡(有线 + 无线),建议手动指定到正在用的那块,否则可能出现桥接到一块没插网线的网卡上,然后完全没有网络。

虚拟机里同样是改ifcfg-ens33,但参数不一样:

BOOTPROTO=static IPADDR=192.168.1.200 PREFIX=24 GATEWAY=192.168.1.1 DNS1=192.168.1.1

注意这里的网段必须是你路由器所在的网段,网关是路由器的 IP,跟 VMware 的 192.168.10.x 完全没关系了。而且这个 IP 必须在路由器 DHCP 池之外,或者干脆让虚拟机用 DHCP 自动获取。

桥接模式在下面这些环境里会翻车,提前知道能省很多时间:

环境现象原因
公司办公网拿不到 IP 或能拿 IP 但无法通信交换机做了端口安全 / MAC 限制
校园网认证失败或被断网需要客户端认证,MAC 绑定
公共 WiFi完全不通AP 开启了客户端隔离
家里路由器一般正常无特殊管控

所以桥接模式下"上不了网"很多时候不是配置错了,是网络环境不允许。别在那儿反复改配置文件,先换回 NAT 试一下,如果 NAT 正常那就是环境问题。

5.5 连通性验证:命令和结果对照表

配完网络,按顺序跑这几个命令,一层层往上验证:

# 1. 看网卡是否有 IP ip addr show ens33 # 2. 看路由表是否有默认网关 ip route show # 3. 看 DNS 配置 cat /etc/resolv.conf # 4. ping 网关 ping -c 4 192.168.10.2 # 5. ping 公网 IP ping -c 4 223.5.5.5 # 6. ping 域名,验证 DNS ping -c 4 www.baidu.com # 7. 看监听端口(比如 ssh) ss -tlnp

结果怎么解读,我整理成表:

命令期望结果异常时的方向
ip addrens33 有 inet 192.168.10.100/24配置文件没生效,检查 BOOTPROTO
ip route有 default via 192.168.10.2DEFROUTE 或 GATEWAY 写错
resolv.conf有 nameserver 条目DNS 没写或被覆盖
ping 网关通NAT 网关地址错,或 VMware 服务没跑
ping 公网 IP通宿主机的网络出问题,或 VMware NAT 服务异常
ping 域名通纯 DNS 问题
ss -tlnp有 22 端口在监听sshd 没起来

这里还有一个宿主机侧的排查点很多人不知道:Windows 服务里有两个和 VMware 网络强相关的服务,VMware NAT Service和VMware DHCP Service。如果虚拟机突然全部上不了网,而配置一个字没改,先去看这两个服务是不是被停了。Ctrl+R 输入services.msc就能看到,把它们启动就行。我遇到过一次系统更新后 NAT Service 被禁用了,折腾了半天才发现问题根本不在虚拟机里。

6. 远程连接工具配置与连通性排查

虚拟机里敲命令虽然也行,但实际开发中一定是本地用终端工具连上去,因为复制粘贴、多窗口、文件传输的体验差太远。这一节说连接工具怎么配,以及连不上怎么查。

6.1 Xshell、FinalShell、MobaXterm 怎么选

这三个是国内用得最多的:

工具优势适合谁
Xshell稳定、会话管理好、支持各种协议长期做运维、管几十台机器
FinalShell自带服务器监控面板、SFTP 联动喜欢可视化、看资源占用
MobaXterm集成 X11 转发、多标签、绿色免安装需要跑图形程序、经常换机器

连接参数就三个:

  • 主机:192.168.10.100(你配的静态 IP)
  • 端口:22
  • 用户名:root(或你创建的普通用户)

第一次连接会弹出主机密钥确认,选中"接受并保存",这是正常的 SSH 首次连接流程。然后输密码。

如果你用的是 VirtualBox 或者别的方案,配置逻辑完全一样,区别只是虚拟机的 IP 网段不同。比如 VirtualBox 的 NAT 默认是 10.0.2.15,桥接则取决于你路由器。这也是为什么我一直强调"要理解网段和网关的概念"——工具会换、界面会换、命令会换,但 TCP/IP 这套模型不变。

6.2 用密钥登录替代密码

密码登录在本地环境没问题,但如果要在自动化脚本里连服务器,密钥登录是标准做法。生成密钥对(在本地终端或虚拟机里都行):

ssh-keygen -t rsa -b 4096 -C "centos7-lab"

一路回车,会在~/.ssh/下生成id_rsa(私钥)和id_rsa.pub(公钥)。把公钥内容追加到目标服务器的~/.ssh/authorized_keys里:

mkdir -p ~/.ssh && chmod 700 ~/.ssh cat id_rsa.pub >> ~/.ssh/authorized_keys chmod 600 ~/.ssh/authorized_keys

权限这一步千万不要省。SSH 对权限检查很严格,如果.ssh是 777 或者authorized_keys是 644,SSH 会直接拒绝用密钥登录,而且日志里写的是 "Authentication refused: bad ownership or modes",不提权限问题,新手根本想不到。

6.3 连接失败的排查路线图

连不上,别乱试,按这个顺序查:

第一步,确认网络通不通。在宿主机上ping 192.168.10.100。ping 不通就不用管 SSH 了,先回去解决网络。注意 Windows 防火墙有时候会拦 ICMP,可以临时关掉测试。

第二步,确认服务在跑。如果能 ping 通但连不上,多半是 sshd 的问题。登录虚拟机(直接在 VMware 窗口里操作),执行:

systemctl status sshd ss -tlnp | grep 22

如果发现 sshd 没启动,systemctl start sshd && systemctl enable sshd。如果是最小化安装,可能连 openssh-server 都没装,需要yum install -y openssh-server。

第三步,确认防火墙没拦。前面我们把 firewalld 关了,但如果你没关,需要放行:

firewall-cmd --permanent --add-service=ssh firewall-cmd --reload

第四步,看日志找原因。实在找不到,去服务器上翻日志,这是最靠谱的办法:

tail -f /var/log/secure

这个命令会实时输出 SSH 的登录日志,你在客户端重试一次连接,日志里会告诉你到底是密码错、权限错、还是被拒绝。/var/log/secure是 CentOS/RHEL 系的认证日志,Ubuntu 系对应的是/var/log/auth.log,这一点很多人不知道,跑去翻 messages 找了半天。

7. 常见问题速查与踩坑记录

这一节把我这些年遇到的高频问题和坑整理成表,遇到问题先来这儿对一眼。

7.1 网络类问题速查

现象可能原因解决办法
ip addr只有 loONBOOT=no,网卡未启用改 ONBOOT=yes 并重启 network
改完配置重启网络报错网卡名写错 / 有多余字符检查 DEVICE 和实际网卡名是否一致
能 ping 网关,不能 ping 外网网关地址错 / DEFROUTE=no检查 GATEWAY 是否为 NAT 网关
能 ping IP,不能 ping 域名DNS 未配置检查 resolv.conf 和 DNS1
IP 突然变了还是 DHCP 模式确认 BOOTPROTO=static
重启网络服务报 "Device not managed"NetworkManager 接管停用 NetworkManager 或用 nmcli
开机报 "Device does not seem to be present"配置文件名和网卡名不匹配重命名 ifcfg 文件
克隆后网络不通MAC 和 UUID 重复删掉配置文件里的 UUID 和 HWADDR 行

最后那条关于克隆的坑,值得单独说一句。你用 VMware 的"克隆"功能复制出一台虚拟机,两台机器拿到的 MAC 地址如果不重新生成,会冲突导致网络异常。解决办法是克隆时选"创建完整克隆",并在虚拟机设置里点"生成新的 MAC 地址",然后在虚拟机里把ifcfg-ens33中的UUID行删掉(或重新生成),再重启网络。这个坑在搭集群的时候一定会遇到,最好提前知道。

7.2 安装与系统类问题速查

现象原因处理
开机进不去安装界面ISO 未挂载或未勾选启动时连接检查虚拟机 CD/DVD 设置
提示 "This host supports Intel VT-x, but..."虚拟化技术在 BIOS 里被禁用进 BIOS 打开虚拟化支持
装完重启又进安装界面启动顺序还是光驱优先取消 CD/DVD 启动时连接
只有命令行没有桌面装成了最小化装 GNOME 或重装
时间不对虚拟机挂起导致时间漂移启用 chronyd 或重装 VMware Tools
屏幕分辨率只有 800x600没装 VMware Tools装 open-vm-tools

VMware Tools 这块补充一下:CentOS 7 的源里已经有open-vm-tools(开源版本),比挂载 VMware 自带 ISO 再编译安装省事得多。桌面环境建议装open-vm-tools-desktop,装完重启,能支持分辨率自适应、宿主机和虚拟机之间拖拽文件、剪贴板共享:

yum install -y open-vm-tools open-vm-tools-desktop systemctl enable --now vmtoolsd

7.3 快照、性能与日常维护的几点心得

几个我踩过之后改不掉的习惯,分享给你:

快照不是越多越好。VMware 的快照是增量存储的,也就是每次快照都记录相对上一个快照的变化。快照链拉长之后,磁盘 IO 会明显变慢,而且占用空间会超出你的预期。我的做法是:只保留 1–2 个关键快照,在"干净的基线"和"装好某个大组件之后"这两个点,其他的实验完就删掉。

虚拟磁盘只会胖不会瘦。你在虚拟机里删了 10 GB 文件,宿主机的虚拟磁盘文件还是那么大。想要回收空间,可以在虚拟机里用dd把剩余空间写成 0,再关机用 VMware 的"压缩"功能,或者在虚拟机设置里点"磁盘 → 压缩"。不过要提醒一句,这个操作对 SSD 有写入损耗,别天天搞。

挂起(Suspend)不等于关机。很多人习惯挂起虚拟机,下次秒开。但挂起状态下虚拟机的时钟是停的,恢复后时间会偏,某些依赖时间的服务(比如证书校验、定时任务)会出问题。要长期不用就正常关机。

资源分配别一次性给满。我见过有人把宿主机 16 GB 内存分 12 GB 给虚拟机,结果宿主机自己卡到鼠标都飘,虚拟机也没快多少。宿主机的流畅度是你的操作基础,永远优先保证宿主机跑得顺。虚拟机的内存分配,在你真正需要之前,给一半以下就行。

8. 后续可以怎么扩展这套环境

这套环境配好之后,其实可以派生出一堆练手场景,不用每次都从头装。这是我实际用下来最有价值的几种扩展方向。

做一份基线镜像。把干净系统配好网络、换好源、装好常用工具、打好快照,然后把这个虚拟机目录整体复制一份留作模板。以后要做任何实验,克隆这个模板,五分钟就能开工。这比每次从头装省下的时间,按年算非常可观。

多网卡模拟内外网。给虚拟机加第二块网卡,一块走 NAT(对外),一块走仅主机(对内),就模拟出了一台"双网卡服务器"的结构。这是学习路由、iptables、Nginx 反向代理最经济的实验室,比用云服务器便宜太多,而且可以随便折腾。

组一个小集群。用克隆的方式做出三台机器,分别设成 192.168.10.101、102、103,配上主机名和 hosts 解析,就能练数据库主从、Redis 集群、容器编排这些需要多节点的场景。这里的关键是主机名和 hosts 一定要提前配好,集群软件对名称解析的依赖非常重,前期偷懒后期会付出几倍的调试时间。

固定住你的网络参数。这三个值建议写进自己的笔记里:VMnet8 子网 192.168.10.0/24、网关 192.168.10.2、静态 IP 从 100 开始往上排。养成习惯之后,你所有实验环境的地址规划都是统一的,看一眼 IP 就知道是哪台机器,长期看效率提升很明显。

最后分享一个我一直在用的小技巧:把常用的网络排查命令写成一个netcheck.sh脚本放在/usr/local/bin下,内容就是把 IP、路由、DNS、三个 ping、sshd 状态按顺序跑一遍。遇到网络问题时敲一个netcheck.sh,几秒钟就能定位到是哪一层出的问题,比一条条手敲快得多,而且不会漏步骤。这套排查顺序,其实就是第 5.5 节表格里那个顺序,你把它固化成脚本,以后无论换到哪台机器、哪个发行版,思路都是通的。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询