资讯动态

VMware中Ubuntu Server配置固定IP完全指南:从网络模式到netplan

发布时间:2026/9/11 2:11:11 来源:尧图企业网站定制
干运维或者经常在VMware里折腾Linux实验环境的朋友应该都有过这种经历装好的Ubuntu Server用得好好的某天想SSH连上去结果IP地址变了之前的连接配置全部失效只能跑到虚拟机控制台前敲命令重新查IP。这个问题的根源就是默认安装时系统启用了DHCP自动获取IP路由器或VMware虚拟网络的租约一到期地址说变就变。想彻底解决最直接的办法就是给Ubuntu Server配置固定IP。这篇文章就是来把这个事情彻底讲透的。我会从VMware虚拟网络的模式选型讲起一直讲到Ubuntu Server上netplan配置文件的每一行含义再到各种常见的坑和排查思路。不管你是刚入门的学生还是需要部署考试机、管理机这类局域网环境的IT人员只要按照这里的思路操作一遍基本就能一次搞定。全程动手实测所有配置都亲测可用。1. 先搞清楚VMware网络模式再谈固定IP很多人上来就搜“怎么设置固定IP”改完配置文件发现还是不生效甚至把虚拟机网络都搞断了。其实问题的关键不完全是配置文件而是你根本没有搞明白VMware给虚拟机提供的几种网络模式之间的区别以及你当前的网络拓扑到底是个什么情况。1.1 三种网络模式分别是怎么回事VMware Workstation和VMware Player默认会给虚拟机提供三套虚拟网络桥接模式Bridged、NAT模式、仅主机模式Host-Only。这三套模式对应不同的虚拟交换机也就是VMware虚拟网络编辑器里的VMnet0、VMnet8、VMnet1。桥接模式Bridged虚拟机的网卡直接“桥接”到宿主机所在物理局域网中。虚拟机和宿主机就像两台独立的电脑共同连接在同一个交换机或路由器上。此时虚拟机的IP必须和宿主机在同一网段比如宿主机是192.168.1.10虚拟机就可以设成192.168.1.100同时网关指向路由器的192.168.1.1。NAT模式虚拟机通过宿主机的虚拟网卡VMnet8接入一个私有网段宿主机充当网关和NAT转发设备。虚拟机可以访问外部网络局域网内其他主机默认访问不到虚拟机除非做端口转发。这种模式适合不要求外部访问、只想自己联网做实验的场景。仅主机模式Host-Only虚拟机只能和宿主机通信无法访问外部网络。这个模式通常在你要完全隔离测试环境时才用。1.2 固定IP到底该选哪种模式这取决于你部署的场景。如果你只是想在自己电脑上跑一个测试服务器平时通过宿主机SSH访问NAT模式就足够了。但如果你的虚拟机需要被局域网里的其他机器访问比如部署一个考试系统考试机需要连接管理机双方要在同一局域网内通信这个时候就优先选择桥接模式并且把IP规划在物理局域网同一网段内。有同学可能会问NAT模式下VMnet8网段的IP通常是192.168.x.0/24那我直接把虚拟机设成固定IP不就行了吗理论上可以但你要注意NAT模式下网关地址是VMnet8的IP这个地址在VMware的虚拟网络编辑器里可以自定义如果你改乱了很容易出现虚拟机无法上网的情况。我更建议凡是需要对外提供服务的虚拟机一律用桥接模式加固定IP凡是自己闭门造车玩的虚拟机用NAT模式加固定IP即可。1.3 给固定IP做规划时的三个原则规划IP地址时不要随手填这里有三个原则值得遵守。第一IP地址不要和局域网里已有的设备冲突。你先在宿主机上执行ipconfigWindows或ip addrLinux/macOS看看自己的网段再用ping命令测试一下准备使用的IP地址是否已经被占用。第二网关和DNS一定要填对。桥接模式下网关就是路由器的LAN口地址。DNS可以写路由器的地址也可以写公共DNS比如223.5.5.5或114.114.114.114。DNS写不对的后果很隐蔽——IP能通但域名解析不了到时候折腾半天。第三子网掩码要和局域网保持一致。家用路由通常是/24也就是255.255.255.0在netplan配置里直接写/24后缀不要单独写掩码。2. 吃透Ubuntu Server网络配置文件搞定了VMware侧的网络模式接下来才是重头戏在Ubuntu Server系统内部把IP固定下来。这一步的前提是你要清楚不同版本Ubuntu Server的网络配置体系。2.1 别再看老教程了netplan早就接管了网络配置我见过太多人还在网上搜索“Ubuntu修改/etc/network/interfaces”其实那是Ubuntu 16.04及以前的老黄历了。从Ubuntu 17.10开始系统默认使用netplan作为网络配置工具配置文件是YAML格式存放在/etc/netplan/目录下。netplan的底层可以调用两种后端NetworkManager桌面版常用和systemd-networkd服务器版常用。Ubuntu Server默认安装时使用的是systemd-networkd后端。配置文件的命名可能略有不同常见的包括01-netcfg.yaml、50-cloud-init.yaml、00-installer-config.yaml。无论文件名是什么生效逻辑都是一样的系统启动时读取/etc/netplan/*.yaml将其转换为后端配置并应用。需要特别注意如果你的Ubuntu Server是通过cloud-init方式部署的比如云镜像导入VMware50-cloud-init.yaml可能会被cloud-init接管。改这个文件有时会被cloud-init在重启时重置。最稳妥的办法是先看/etc/netplan/下有哪些文件再决定改哪个。2.2 怎么确认自己的网卡名称和当前网络状态配置固定IP之前你必须知道系统里的网卡名称。VMware虚拟机常见的网卡名是ens33或ens160当然也可能是eno16777736之类的取决于VMware虚拟网卡型号和Linux内核的命名规则。进入虚拟机终端执行以下命令ip addr show这会显示所有网卡的名称、MAC地址和IP地址。有IP地址的那个就是当前活跃网卡比如ens33。也可以用ip link show只看网卡状态。另外还需要确认默认网关执行ip route show输出里default via 192.168.1.1 dev ens33这一行中的192.168.1.1就是网关地址配置时要用到。2.3 netplan YAML语法逐个拆解直接贴一段我实测可用的配置以桥接模式、IP地址192.168.1.100为例network: version: 2 ethernets: ens33: dhcp4: false dhcp6: false addresses: - 192.168.1.100/24 routes: - to: default via: 192.168.1.1 nameservers: addresses: - 223.5.5.5 - 114.114.114.114逐行说明一下version: 2固定写法表示使用netplan配置格式版本2。ethernets:定义物理网卡配置的区块。ens33:你的网卡名称要和系统里实际名称完全一致。dhcp4: false关闭IPv4的动态获取这是固定IP的关键开关。addresses:配置静态IPv4地址/24是子网前缀长度的写法等同于255.255.255.0。routes:配置默认路由。to: default表示默认网关via后面写网关IP。nameservers:DNS服务器设置。这里我写了两个国内公共DNS。很多教程里不写dhcp6: false如果你的IPv6环境有问题DHCPv6可能会干扰你干脆一起关掉最省心。3. 一步一步实操改固定IP全程记录前面原理讲得差不多了这一节是真正的动手环节。我会按照实际操作的顺序从VMware侧设置到虚拟机内配置再到最后的验证完整走一遍。3.1 第一步确认虚拟机的网络连接方式打开VMware Workstation右键虚拟机选择“设置”在“网络适配器”一栏确认连接方式。如果要使用桥接模式勾选“桥接模式”并确保“复制物理网络连接状态”可选。如果你的场景是NAT模式这里就选NAT。还有一个容易忽略的点VMware的“虚拟网络编辑器”里需要确认桥接模式桥接到哪块物理网卡。如果宿主机既有有线网卡又有无线网卡VMware默认是“自动”选择你最好手动指定为当前正在使用的物理网卡。操作路径是VMware菜单栏 - 编辑 - 虚拟网络编辑器 - 选择VMnet0 - 更改设置 - 桥接到对应的网卡。这一步没做对的话虚拟机可能拿不到物理局域网的IP或者桥接后网络不稳定。3.2 第二步备份netplan配置再动手登录Ubuntu Server先查看当前配置ls /etc/netplan/假设文件名为00-installer-config.yaml先备份sudo cp /etc/netplan/00-installer-config.yaml /etc/netplan/00-installer-config.yaml.bak养成备份习惯的人后面出了问题能少掉不少头发。接下来编辑文件sudo nano /etc/netplan/00-installer-config.yaml把原本的内容清空写成上面第2.3节给出的配置注意网卡名、IP、网关、DNS一定要按实际环境改。3.3 第三步应用配置并验证配置写完后执行sudo netplan apply这条命令会让配置立即生效不需要重启虚拟机。生效后验证一下ip addr show ens33看到ens33上的IP已经变成192.168.1.100说明静态IP已经生效。再验证网关和DNSping -c 4 192.168.1.1 ping -c 4 baidu.com第一个ping通则说明网关链路正常第二个ping通则说明DNS解析和外部网络都正常。这里特别提醒一点如果你是通过SSH远程连接到服务器上操作的修改IP后当前连接会断掉。因为你的SSH会话使用的是旧IP配置生效后IP变了连接自然就断了。这是正常现象不要慌张用新IP重新连接即可。3.4 不同Ubuntu Server版本的细节差异我实测过的版本包括Ubuntu 20.04、22.04、24.04它们在netplan配置上没有本质区别但有几个版本相关的小细节。Ubuntu 20.04及之前版本安装时默认的netplan配置文件可能叫01-netcfg.yaml文件里有时会有renderer: networkd这一行保留即可。Ubuntu 22.04及以后版本Live Server安装器生成的配置文件名是00-installer-config.yaml用起来我最顺手结构简单。Ubuntu 24.04开始安装器默认可能生成的是10-default.yaml等命名网卡名规范也更统一了。不过配置语法完全兼容按上面模板改就行。另外如果你下载的是今年最新发布的Ubuntu 24.04.2 Live Server AMD64镜像安装过程中其实就有网络配置界面可以在安装时直接选择Manual手动指定IP。相比之下在安装阶段就配置好固定IP比装完再改更省事。但不管哪种方式装完后的netplan配置文件结构都是类似的。再补充一个老版本的情况如果你还在用Ubuntu 16.04或更早的版本那改/etc/network/interfaces的老套路依旧有效。但不是所有人都需要兼容这么老的系统我就不展开了。4. 常见问题与排查技巧实录在实际操作中几乎每个人都会遇到几个经典问题。这些问题我在不同机器上都踩过坑这里统一整理成“问题排查思路解决办法”的形式。4.1 修改配置后不生效IP还是原来的这种情况最常见的原因是配置文件格式有问题或者网卡名写错了。netplan对YAML格式的缩进极其敏感多一个空格、少一个空格都会导致解析失败。排查方法很直接执行sudo netplan try这条命令会在应用新配置前先做检查如果格式错误会直接报错并提示具体行数。如果没问题它会等待你按回车确认或等120秒超时后自动回滚这比apply要安全得多。如果netplan try显示格式无误但IP仍未变化检查你的网卡名称是否写对。执行ls /sys/class/net查看实际存在的网卡名确保配置里的名称和这里完全一致。4.2 改完IP后SSH连接不上这个问题太典型了。如果你是远程操作修改IP并netplan apply后原来的SSH连接必然断开。你需要在宿主机终端或另一台机器上使用新IP重新建立SSH连接。还有一种情况是你把IP地址填写到了错误的网段。比如VMware使用的是NAT模式虚拟机的IP应该在VMnet8的网段默认为192.168.x.0/24而你写成了物理局域网的192.168.1.100这样就连接不上。解决办法是先确认虚拟机网络模式再根据网络模式规划IP。用ip route show查看网关是不是和IP在同一网段如果不一致就是模式选错了。4.3 固定IP被识别为自动分配这个问题的典型表现是你在netplan里把dhcp4设置成了false但系统里IP看起来还是像自动获取的或者网络管理器仍然显示“自动分配”状态。原因通常有两个。第一个原因是你的Ubuntu Server装的是Desktop版本系统默认使用NetworkManager管理网络。在Desktop版里单纯改netplan配置文件不一定生效因为NetworkManager会自己管理连接。你需要在“设置”-“网络”里手动修改IPv4方式为“手动”或者用nmcli命令行工具修改连接配置。第二个原因是在cloud-init管理的虚拟机中50-cloud-init.yaml文件被cloud-init接管了。即便你修改了netplan配置重启后cloud-init也可能把配置重置回去。最彻底的办法是禁用cloud-init对网络的接管创建一个文件sudo touch /etc/cloud/cloud.cfg.d/99-disable-network-config.cfg在这个文件里写一行network: {config: disabled}然后重新生成netplan配置。这是很多人在云镜像虚拟机中踩过的坑。4.4 配置文件报错或apply后网络全断如果你执行netplan apply后虚拟机立刻失联连ping网关都不行多半是配置里网关或网段写错了。这时候最快的恢复方式是用VMware的虚拟控制台不是SSH登录系统把配置文件改回备份再执行netplan apply。如果你当时没有做备份可以把dhcp4临时改回true让系统自动获取一个可用IP然后再次排查问题。写配置时强烈建议遵循一个原则先改网关和DNS再改地址。比如原来的地址是192.168.x.50先只改DNS应用一次验证成功后再去改地址减少一次性出错面。4.5 高频问题速查表现象可能原因解决办法apply后IP没变网卡名写错用ls /sys/class/net确认名称apply后网络全断网关或网段错误控制台登录改回备份配置SSH连接断开修改IP导致会话中断用新IP重新连接固定IP被重置为DHCPcloud-init接管网络配置禁用cloud-init网络配置并重新生成netplan配置DNS解析不了域名但IP能通DNS地址配置错误修改nameservers为223.5.5.5或114.114.114.114虚拟机桥接后无法上网VMware桥接到错误的物理网卡手动指定桥接网卡为当前活跃网卡5. 多虚拟机局域网场景与固定IP的实践拓展如果你只是给一台虚拟机改固定IP按照前面的步骤其实就够了。但在实际项目里尤其是考务系统、机房管理、内网服务部署这些场景中往往涉及多台虚拟机、多个服务固定IP规划的重要性会成倍上升。5.1 考试机与管理机局域网场景的固定IP规划热搜词里有一条很典型“考试机与管理机处于同一局域网内且IP获取模式设置为固定获取模式”。这种场景在高校机房、考试中心、培训机构都很常见。一般拓扑是这样的一台管理机宿主机或物理机运行考试管理系统若干台考试机可能是实体机也可能是VMware虚拟机通过网络连接到管理机。考试机必须能稳定访问管理机的IP所以考试机和管理机必须处于同一网段并且双方的IP都不能随意变动否则考试过程中出现连接超时后果很严重。这时候我的建议是管理机使用一个固定IP比如192.168.10.10考试机从192.168.10.100到192.168.10.200按顺序分配。有一张IP规划表非常关键哪台机器用哪个IP、MAC地址是什么、部署在哪个机柜都登记清楚。我在实际项目中会先在Excel里做好分配表再一台一台去配置这样不会乱。对于VMware虚拟化的考试机优先用桥接模式让虚拟机直接暴露在局域网里。如果数量比较多宿主机网卡负载会上升但这不在本文讨论范围。5.2 多台虚拟机固定IP时的MAC地址绑定问题你可能还会遇到一种情况VMware虚拟机克隆之后多台虚拟机的网卡MAC地址是一样的。如果你按照同样的配置去设置固定IP必然造成IP冲突。解决办法是克隆虚拟机后在VMware设置中点击“网络适配器”-“高级”点击“生成”重新生成MAC地址。每台虚拟机都要执行一次。这是克隆场景下最容易忽略的细节。另外如果你在路由器或DHCP服务器上做了MAC地址绑定那么重新生成MAC地址后需要同步更新绑定关系否则虚拟机可能无法获取IP。5.3 固定IP之后的运维小习惯设置完固定IP我强烈建议顺手做两件事。第一件事是修改主机名并更新/etc/hosts。把虚拟机的主机名改成有业务含义的名字比如exam-server-01然后在/etc/hosts里加入一行192.168.1.100 exam-server-01这样后面SSH连接、服务调用都可以直接使用主机名而不用记IP。第二件事是开启并配置好SSH服务。如果虚拟机要作为服务器长期运行开机自启SSH几乎是必须的。Ubuntu Server最小化安装时可能没有装SSH服务执行sudo apt install openssh-server即可。安装完成后用新IP测试一次SSH连接确保重启后一切正常。最后再分享一个我个人的小习惯每次改完网络配置不要急着关终端先敲一遍sudo netplan apply ip addr show ip route show把IP和路由信息一并确认了再离开。这行命令包含应用配置、查看地址、查看路由三步基本可以把配置错误在第一时间暴露出来。自从我把所有实验虚拟机都改成固定IP并按这个习惯操作后再也没遇到过“IP漂移找不到机器”的情况。工作里少了这类烦恼确实省心不少。

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价