☰
Linux虚拟机网络配置通关指南:ens33不显示与ping不通排查
2026/10/19 2:46:14 网站建设 项目流程

装Linux虚拟机、配IP地址、看网卡信息(ens33)、最后跑一句ping,这一套流程在教程里看着就几步,真到自己上手,十个里有六个会卡在同一个地方:系统装好了,屏幕也进去了,敲ip addr却发现网卡根本没出现,或者出现后是state DOWN,一个IP都没有。等你费了半天劲把配置文件改好,发现ping网关通了、ping外网又不通,DNS又搞不定。这篇文章是我一次一次装机、一次一次重试之后整理的完整流程,把从装虚拟机开始到最终能稳定上网的所有关键细节和排查顺序都写清楚,适合刚学Linux、做实验环境或者准备搭服务器的朋友直接抄作业。

我尽量把每一步背后的原因也讲清楚,因为网络配置这东西,光知道“改哪一行”没用,下次换个网段、换个虚拟机软件,你还是会蒙。看完这一篇,你再遇到ens33不显示、IP配不上、外网ping不通这类问题,应该能自己顺着思路查下去。

1. 先想清楚再动手:虚拟机安装阶段的三个关键选择

1.1 选虚拟机软件和镜像时,就把“网络坑”提前避开

不少人的第一个坑不是在配置网络时才出现的,而是在选软件、选镜像的时候就已经埋下了。

主流桌面虚拟机软件就那么两三家,有商业的,也有开源的,选哪个都不影响下文思路。但有一条很关键:优先选对NAT模式支持成熟、虚拟网络设置面板做得清晰的版本。原因很简单,大多数新手遇到“外网ping不通”,最后都是虚拟网卡、NAT服务、防火墙这几层问题叠在一起,软件自带的网络可视化程度越高,排查难度越低。

镜像方面,我的建议是优先选带图形界面的完整安装版,而不是最小化安装版。最小化版虽然省资源、逼格高,但装完之后连文本编辑器都要自己装,网络工具也可能缺几个,你会先被“没有工具”折磨一轮,然后才轮到配置网络。对新手来说,这不是效率,是劝退。老手做服务器实验确实常用最小化,但那是我已经把网络配顺了之后才做的事。

另外,下载镜像时尽量走官方源或学校镜像,不要随便找个来路不明的站点下载。装了以后系统本身有问题,网络配置再对也白搭,到时候你连是系统坏了还是网络坏了都分不清。

1.2 三种虚拟网络模式,为什么“NAT”才是新手首选

新建虚拟机的时候会问你网络模式,一般有三种:NAT、桥接、仅主机模式。很多人一看到“桥接”两个字觉得很高端,直接选桥接,这是我在无数咨询里看到的最大误区。

三种模式的区别,我尽量用大白话讲:

  • NAT模式:虚拟机通过宿主机上网,相当于宿主机当了一台“小路由器”,虚拟机躲在后面,外网看到的请求都来自宿主机。虚拟机之间、虚拟机和宿主机之间可以互通,虚拟机对外部网络的访问走NAT转换。
  • 桥接模式:虚拟机直接接入宿主机所在的物理局域网,相当于局域网里多了一台独立电脑,会直接参与局域网通信,也能被局域网里其他设备直接访问。
  • 仅主机模式:虚拟机只能和宿主机通信,不能访问外部网络,适合纯内部实验。

新手首选NAT,原因非常实际:

第一,NAT模式下,虚拟机软件会自己维护一个内部网段,通常像192.168.30.0/24这样的段,IP分配由软件内置的DHCP搞定,不需要你关心宿舍路由器、公司Wi-Fi的IP冲突问题。

第二,桥接模式对网络环境非常敏感。如果宿主机连着Wi-Fi,或者所在局域网开了AP隔离,桥接的虚拟机经常拿不到IP,或者拿到了也ping不通别人。更麻烦的是,桥接模式下虚拟机暴露在局域网里,对刚学Linux、还没配好防火墙的新手来说,等于把一台裸机放进了内网。

第三,NAT模式下,你手动给虚拟机配静态IP时,网关、DNS都相对固定,不用考虑外界网络变化。这正好是这篇文章要讲的核心场景。

所以,除非你真的需要让局域网其他设备直接访问虚拟机,否则老老实实用NAT。等以后需要对外提供服务、做负载均衡实验,再切换桥接也不迟。

1.3 安装系统阶段就要留意的初始化设置

安装Linux虚拟机的时候,会要求你设置主机名、时区、账号密码这些基础信息。这些选项过一眼就好,但有两个地方我会特别提醒:

第一,账号密码别设太复杂,也别太简单。太复杂你会频繁输入到怀疑人生,太简单又怕以后搭服务被别人爆破,折中一下,用一串有意义的强密码,记在本地笔记里。

第二,安装过程中如果出现“网络配置”步骤,先别马虎点过。有些安装器会在这一步默认“不自动连接”,装完系统进去,网卡自然就是未激活状态。你在安装界面看到网卡开关,顺手打开就好。这一步不做,进系统之后就得手动激活,平白多一次折腾。

分区方面,新手往往特别紧张,其实做虚拟机实验根本不用太纠结。装系统时选择自动分区就行,等以后真要部署复杂服务,再研究LVM、磁盘配额那些高级玩法。虚拟机的磁盘就是宿主机上的一个大文件,删了重建都方便,没必要在一开始就把自己困在分区方案里。

装好系统,重启进入桌面或命令行之后,先别急着高兴,真正的重点现在才开始:你要看看那块名叫ens33的网卡到底在不在。

2. 网卡ens33为什么会出现“不显示”或“没IP”

2.1 ens33这个名字到底是怎么来的

老一点的文章里,Linux网卡通常叫eth0、eth1,你现在看到的却是ens33,很多人第一次看到会以为机器有问题。其实这是systemd引入的可预测网络接口命名规则,目的是让网卡名字和物理位置对应起来,避免以前那种“每次开机网卡顺序都变”的老毛病。

ens33大致可以拆成三块看:en表示以太网,s表示热插拔插槽,33就是设备所在的总线槽位编号。不同机器、不同主板、不同虚拟化平台里,这个名字可能变成ens32、ens37,甚至eno1、enp0s3,都是正常的。

理解这一点,能帮你少走弯路。因为很多人从网上复制一段配置,里面写的是eth0,或者写的是ens33,但实际上你自己的机器网卡叫ens32,那他配置自然不生效。所以看到网卡名,第一反应不该是“我要把它改成eth0”,而是“我的机器上实际认到的网卡叫什么,我就要按这个名字去配置”。

2.2 网卡信息看不到时,先别急着改配置文件

进入系统后,第一步永远是先看现状。我见过太多人,ip addr都不敲,直接就奔着ifcfg文件去了,结果改了半天,路径都找错,更别说重启服务了。

查看网卡最通用的命令是:

ip addr

或者简写:

ip a

这个命令会把所有网卡列出来。正常状态下,你会看到两块网卡:一块是lo,也就是回环网卡,IP是127.0.0.1;另一块就是ens33。ens33那一行如果写着state UP,说明网卡已启用;如果写着state DOWN,说明网卡存在但没有激活;如果压根没有ens33这一行,那就说明系统没认出这块虚拟网卡,或者驱动没加载。

另一个命令是:

ip link show

它只显示链路层状态,用来判断网卡硬件是否被识别特别方便。

很多文章会让你用ifconfig,但现代Linux发行版默认可能没装这个命令,你敲ifconfig会得到command not found。不用慌,ip命令就够了,功能更强,也是现在的标准工具,没必要非装net-tools不可。

如果网卡根本没出现,可以再检查一下虚拟机软件的“虚拟机设置”面板,看网络适配器是不是处于“已连接”状态,或者是否被意外移除了。这一步检查算是最低成本的排查,很多人在系统里折腾半天,最后发现是虚拟机软件那层的虚拟网卡被关掉了。

2.3 NetworkManager和network服务并存时的暗坑

看到网卡存在,也配好了IP,但重启系统之后IP又丢了,或者改了配置文件死活不生效,这时候十有八九是NetworkManager和传统的network服务在打架。

现在主流Linux发行版大多默认使用NetworkManager来管理网络连接,它对动态网络环境更友好,桌面环境下特别好用。同时,很多老资料教你改/etc/sysconfig/network-scripts/ifcfg-ens33,改完之后执行systemctl restart network,如果你用的发行版默认开着NetworkManager,就会出现你改了文件,但NetworkManager那边还有一套自己的连接配置,两边互相覆盖,结果就是你的静态IP像开盲盒一样,时好时坏。

我的建议是:如果是纯服务器环境、只想配静态IP,那选一条路走到底,别两边混着来。要么关掉NetworkManager,只用network服务;要么保留NetworkManager,但通过nmcli来管理连接,不要手动改ifcfg文件后又不告诉NetworkManager。

后面我会给出更具体的操作顺序,这里先记住一个认知:网络配置文件和NetworkManager之间不是自动同步的,你改完文件,还得让管网的“管家”重新读一遍,不然改了等于白改。

3. 手把手配置IP地址和网卡信息(ens33)

3.1 先找到网卡配置文件,改之前一定备份

以最常见的Linux发行版为例,网卡配置文件通常存放在/etc/sysconfig/network-scripts/目录下,文件名就叫ifcfg-ens33。如果你的网卡名字不叫ens33,就找ifcfg-后面跟着你网卡名字的那个文件。

还有一类基于Debian系规则的发行版,配置文件的路径和写法不同,通常写在/etc/network/interfaces里。但不管哪种发行版,排查逻辑和配置思路是一致的:设置网卡开机自动启用、设置IP地址、设置子网掩码、设置网关、设置DNS。

改任何配置文件之前,第一步永远是备份。别嫌麻烦,这条习惯能救你无数次:

cp /etc/sysconfig/network-scripts/ifcfg-ens33 /etc/sysconfig/network-scripts/ifcfg-ens33.bak

备份文件不是为了真能找到老配置,而是给你一个“反正能回退”的心理底气。有了这层底气,你改起参数来才不会畏手畏脚,反而更容易一次改对。

3.2 一份可以直接抄的静态IP配置模板

下面这份模板,是我在NAT模式下验证过很多次的配置,兼容性比较强。你用的时候,把IP、网关、DNS替换成自己虚拟机对应网段的实际值。

TYPE=Ethernet PROXY_METHOD=none BROWSER_ONLY=no BOOTPROTO=static DEFROUTE=yes IPV4_FAILURE_FATAL=no NAME=ens33 # 如果你的机器网卡不叫ens33,改成你自己的名字 DEVICE=ens33 ONBOOT=yes IPADDR=192.168.30.130 NETMASK=255.255.255.0 GATEWAY=192.168.30.2 DNS1=192.168.30.2 DNS2=223.5.5.5

这里每一个字段都有意义:

  • BOOTPROTO=static:表示不使用DHCP自动获取,而是使用下方手写的静态IP。有些发行版里也可以写none,效果一样。
  • ONBOOT=yes:这是最容易坑人的字段。如果你漏了这一行,或者写成no,网卡开机就不会自动启用,就算IP写对了,系统一重启又回到解放前。
  • IPADDR:你给虚拟机指定的IP地址。需要在虚拟机软件的NAT网段内,并且没有被其他设备占用。
  • NETMASK:子网掩码,一般家用实验环境填255.255.255.0就行。
  • GATEWAY:默认网关。在NAT模式下,这个网关通常是虚拟网卡所在网段的.1或.2,不要瞎填,去虚拟机软件的虚拟网络设置里查一下再填。
  • DNS1:DNS服务器。如果网关地址就是虚拟机软件虚拟出来的DNS,那网关地址可以当DNS用。再填一个公网DNS兜底,比如223.5.5.5。

如果路由器或虚拟机软件分配的不是192.168.30.0/24这个网段,而是192.168.100.0/24之类,那IPADDR、GATEWAY、DNS1都要跟着改,网段不能错。

如果你用的是基于Debian系规则的发行版,配置文件写法是这样:

auto ens33 iface ens33 inet static address 192.168.30.130 netmask 255.255.255.0 gateway 192.168.30.2 dns-nameservers 192.168.30.2 223.5.5.5

改完文件后,同样要重启网络服务或重新加载配置。

3.3 改完配置,重启网络服务的正确姿势

很多人修改文件之后,习惯性执行:

systemctl restart network

这个命令在纯network服务管理的系统里没问题。但如果你的系统默认开着NetworkManager,更稳妥的做法是:

nmcli connection reload nmcli connection up ens33

这两条命令的意思是:让NetworkManager重新读取配置文件,然后把ens33这个连接重新激活。相比直接restart network,它能减少NetworkManager把旧配置挤回去的概率,我在多台虚拟机上实测下来,有效得多。

如果上面方式执行之后,网卡状态还是不对,再考虑重启整个网络服务:

systemctl restart NetworkManager

或者关闭NetworkManager,彻底交给传统network服务处理:

systemctl stop NetworkManager systemctl disable NetworkManager systemctl restart network

这种方式适合不想再用NetworkManager管理这台虚机、只想要纯静态配置的场景。两种路线侧重点不同,但核心原则是:别让两套管家同时管一块网卡。

配置生效之后,验证命令要跟得上:

ip addr show ens33 ip route

第一句看IP有没有正确绑定到ens33上,第二句看默认网关有没有配好。看到路由表里有一行default via 192.168.30.2 dev ens33,才算默认路由正常。

3.4 不想改文件?临时配置IP的快捷方法

有些时候你只是临时测试,不想污染配置文件,那可以直接用ip命令临时配置。所谓“临时”,意思是重启之后失效,但用来排查网络非常方便。

先激活网卡:

ip link set ens33 up

再临时加上IP:

ip addr add 192.168.30.130/24 dev ens33

最后临时添加默认路由:

ip route add default via 192.168.30.2

这个过程不需要改任何文件,也不用重启服务。配完立刻ping网关试试,通不通马上见分晓。它能帮你快速判断问题到底在配置层面,还是网络环境本身。

不过要提醒一点,这种临时配置只适合排查,别当长期方案用。你今天临时配通了,明天重启系统一切还原,到时候你可能已经忘了之前敲过什么命令,排查起来更晕。

4. ping不通外网的排查顺序:从最近到最远逐层验证

4.1 先把“外网不通”拆成五种情况

我见过太多人一上来就ping一个从没见过的域名,然后看到timeout就开始胡乱改文件。其实“外网不通”这个说法太笼统了,它至少包含下面几种可能:

  • 本机网卡都没起来,IP都没有,那肯定什么都ping不通。
  • IP配好了,但网关不通,出不了虚拟网段。
  • 网关通了,但默认路由没指向正确网关,数据包不知道往哪走。
  • 路由通了,但公网DNS解析不了,域名ping不通,IP却能ping通。
  • DNS解析正常,但虚拟机软件自身的NAT服务出问题,所有对外访问全部超时。

如果你不把这几种情况分开,就会陷入“改了IP再ping、ping不通再改DNS、改完DNS还不行就重装系统”的恶性循环。

所以我一向的排查方法,是从离自己最近的网络层开始,一层一层往外ping。哪一层断了,就在哪一层排查,不要跳级。

4.2 第一步先ping网关:通了才算局域网没问题

执行下面的命令查看网关地址:

ip route

路由表输出里,default via后面的IP就是你的网关。拿到网关后,执行:

ping -c 4 192.168.30.2

把命令里的IP换成你自己系统的网关地址。

如果网关ping不通,问题基本不在外网,而是你虚拟机本身和宿主机之间的虚拟链路没通。这时候要检查的事包括:

  • 虚拟机软件的网络适配器是否处于连接状态。
  • 是否选的是NAT模式,而不是仅主机模式。
  • 虚拟机里IP地址的子网掩码和网关是不是同一个网段。
  • 宿主机上的虚拟机网络服务是否正常运行,某些安全软件可能会把它拦截掉。

网关通了,说明虚拟机和宿主机之间通信正常,你可以进入下一步。

4.3 第二步ping公网IP:用IP打通不代表域名能解析

网关通之后,执行:

ping -c 4 223.5.5.5

223.5.5.5是国内公共DNS之一,用它测试纯网络连通性比较合适,延迟一般也低。如果你不想用这个,也可以ping 8.8.8.8,但能否访问取决于你那里的实际网络情况。

这一步的结果能帮你做明确区分:

  • ping公网IP通了,说明网络层没问题,虚拟机能出外网,问题多半出在后面要讲的DNS解析上。
  • ping公网IP不通,那就说明虚拟机出了网关之后的路由有问题。重点检查默认路由是否正确,以及虚拟机软件的NAT服务是否正常工作。

如果网关通了,公网IP不通,还有一个很容易被忽视的原因:宿主机自己都断网了。虚拟机走NAT出去,依赖宿主机的物理网络。宿主机能正常打开网页,再让虚拟机去ping公网IP,这个前提条件看着简单,但排查的时候经常被忘掉。

4.4 DNS解析问题:resolv.conf被覆盖的经典坑

如果上面ping 223.5.5.5已经通了,但你ping一个域名还是失败,那问题就确定在DNS解析环节。

Linux系统的域名解析配置在:

/etc/resolv.conf

正常情况下,这个文件里应该有类似这样几行:

nameserver 192.168.30.2 nameserver 223.5.5.5

你也可以手动查一下DNS解析到底卡在哪:

nslookup www.example.com

如果nslookup显示connection timed out或者no servers could be reached,多半是resolv.conf里没有有效nameserver,或者指向的DNS不可达。

这里有个容易踩的坑:有些发行版的resolv.conf会被NetworkManager或者其他网络管理工具自动覆盖。你手动改了dns配置,过一阵子系统一刷新,文件内容又回到原来的样子,你的DNS配置就“神秘消失”了。

解决办法有几个方向:

  • 如果是NetworkManager在管网络,用nmcli来设置DNS,而不是直接改resolv.conf。
  • 有些发行版支持在ifcfg-ens33文件里写DNS1、DNS2,然后重新加载网络服务。
  • 如果确定不会用其他工具管理网络,可以直接修改resolv.conf,并把文件属性设为不可变,防止被覆盖:
chattr +i /etc/resolv.conf

这个命令要慎用,因为以后你自己想改回的时候,得先撤销不可变属性:

chattr -i /etc/resolv.conf

我的建议是,新手别急着用chattr,先搞清楚是谁在管理网络,用对工具去配DNS,比锁文件要合理得多。

5. 我在无数台虚拟机上踩出来的坑:经验速查与避坑指南

5.1 最常踩的六个坑,直接对号入座

症状可能原因解决思路
网卡完全不显示虚拟机网络适配器未连接 / 驱动异常检查虚拟机设置里网络适配器是否勾选“已连接”
网卡显示state DOWN未激活网卡执行ip link set ens33 up
配好IP重启又丢ifcfg文件里ONBOOT=no改成ONBOOT=yes
配置文件改了不生效NetworkManager抢占管理用nmcli connection reload和nmcli connection up,或统一管理方式
网关通,外网IP不通默认路由错误 / 宿主机无外网 / 虚拟机软件NAT服务被拦截检查ip route、宿主上网状态、虚拟机网络服务
指IP能通,域名不通DNS配置错误或resolv.conf被覆盖检查/配置DNS,或通过nmcli/ifcfg设置DNS

这张表是我每次帮别人排查时心里都会过一遍的清单。多数情况下,问题就出在这六个选项里。

5.2 一条命令看全局:ip addr和ip route组合起来用

遇到网络问题,别急着看配置文件,先敲两个命令:

ip addr ip route

第一眼先看ens33有没有state UP和正确的IP,第二眼看default via后面跟的网关对不对。就这两条输出,已经能帮你判断八成的问题。

如果ip addr里显示ens33没有IP,但你已经改过配置文件,那说明配置没有被加载,重点查服务状态和配置文件有没有语法错误。

如果ip addr显示IP正常,但ip route里面没有default开头的行,那说明默认路由丢了。手动加一条,或者重新激活网卡,让它去读配置文件里的GATEWAY字段。

我一直建议新手把这两个命令的输出截图或抄下来,再去搜索问题。很多时候你在交流群里甩一句“ping不通怎么办”,别人根本无从下手,但你直接贴出ip addr和ip route的输出,有经验的人一眼就能看出问题在哪。这种信息比一百句描述都值钱。

5.3 排查命令速查表:按顺序执行,别跳步

排查步骤命令目的
1ip addr看网卡状态和IP
2ip link show看网卡是否被系统识别
3ip route看默认路由和网关
4ping 网关IP测试局域网连通性
5ping 223.5.5.5测试公网IP连通性
6nslookup 一个域名测试DNS解析
7cat /etc/resolv.conf检查DNS配置文件内容

这七步按顺序走完,几乎能定位90%的ens33相关网络问题。

5.4 我个人的几个“看着怪但有效”的小习惯

最后分享几个我长期养成的习惯,不一定写在教科书里,但实测很稳。

第一,改配置之前先打快照。虚拟机快照是我最推荐的保护措施。改ifcfg文件之前,给虚拟机拍一个快照,哪怕后面改得稀烂,恢复快照只要几秒钟。有了快照这个保底,我会放心大胆地在系统里做各种实验,学习效率反而更高。

第二,关机用正常关机,不要用挂起。挂起虚拟机会把内存状态保存下来,恢复的时候有时网络状态会变得很奇怪,尤其是网卡重新连接不到位的情况。我开始用虚拟机做网络实验之后,逐渐改成“用不到就关机”,网络问题少了很多。

第三,为自己维护一个固定的实验网段清单。比如我把虚拟机的NAT网段固定成192.168.30.0/24,然后给每台虚拟机分配192.168.30.128到192.168.30.150之间的IP。以后这台虚拟机要挪到别的宿主机上,我至少知道自己常用的网段和IP范围,排查起来会快很多。

第四,遇到ping不通,第一反应不是重装系统,而是按照速查表走一遍。重装系统的确能解决一部分问题,但它掩盖了真正的原因。我在自己的实验环境里就试过,重装完系统,同样的问题可能还会再回来,因为你根本没搞懂之前为什么不通。按部就班地查一遍,反而花不了多少时间。

我的体会是,网络配置这类问题,最磨人的往往不是命令本身,而是不知道下一步该查什么。有了清晰的排查顺序,心里就不慌了。你现在把上面这些步骤照着做一遍,基本能解决大多数ens33配置和外网ping不通的问题。以后如果换了网段、换了虚拟机软件,再回来看这篇文章,你会发现那些曾经看不懂的参数,现在每一个都变得特别合理。

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

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

立即咨询