拓冰建站拓冰建站
首页 / 资讯中心 / 正文

VMware 虚拟机 Ubuntu Server 静态 IP 与 netplan 配置指南

1. 为什么要在本地虚拟化环境里折腾一台 Ubuntu Server把 Ubuntu Server 跑在 VMware Workstation 里再给它配一个固定不变的 IP这套组合在我过去几年里出现的频率高得离谱。原因很朴素绝大多数后端服务、容器编排的实验、Ansible 批量下发、数据库主从、私有镜像仓库、内网 DNS都需要一台地址永远不变、随时能重建、不占物理机的 Linux 机器。笔记本上开一台 Ubuntu Server等于随身带了一个小型机房出差、断网、换办公室都不影响只要宿主机的硬盘还在环境就还在。很多刚接触的朋友容易走进两个极端。一种是直接拿桌面版 Ubuntu 当服务器用图形界面占内存不说很多服务在桌面环境下的网络行为还不太一样尤其是 NetworkManager 和 netplan 抢夺网络管理权的时候能让人排查到怀疑人生。另一种是跑去用云主机做实验成本先放一边每次重装系统、改网络配置都要等远程重连网断了连控制台都进不去实验节奏被彻底打乱。本地虚拟机最舒服的一点就是控制台永远在手上改错了网络配置也不怕失联随时能通过 VMware 的窗口进去救场。这篇内容我打算把装系统和配静态 IP这两件事讲透特别是静态 IP 部分我不满足于只给你一份能用的 YAML而是想把 netplan 那套渲染机制、网关和 DNS 到底谁管谁、为什么改了配置有时候要netplan apply有时候得重启才能生效这些平时文档里一笔带过的东西掰开揉碎说清楚。目标读者我觉得有三类准备入门 Linux 运维的在校生需要在本地搭实验环境的开发同学还有手里已经有一堆虚拟机、但网络这块一直靠 DHCP 碰运气、想彻底理顺的同行。基础方面只要你会在 Windows 上装个普通软件、能看懂命令行里一行行输出就足够了剩下的我会补齐。2. 前期准备版本选择与镜像获取的取舍2.1 为什么锁定 Workstation 16 Pro 和 22.04.1 这个组合Workstation 16 Pro 属于比较特殊的一个版本。它同时支持 Windows 和 Linux 宿主机虚拟硬件版本最高到 18对 USB 3.1、虚拟 TPM、嵌套虚拟化都有比较成熟的实现而且相比更新的 17.x它在 Windows 10 老机器上的稳定性口碑更好不少企业的内网镜像库里至今还挂着它的安装包。Pro 版和 Player 版最大的区别就是 Pro 有虚拟网络编辑器Virtual Network Editor这个工具是后面配静态 IP 能省一大半事的核心——你能自定义 VMnet 网段、把 DHCP 分配范围整个关掉、决定 NAT 还是桥接而 Player 版只能吃默认配置很多时候被迫接受 192.168.x.x 这种和公司内网冲突的网段。再说 Ubuntu Server 22.04.1。它是 22.04 LTS 的第一个点版本属于长期支持分支标准支持期到 2027 年安全维护能延到 2032 年。选它而不是 24.04主要考虑生态成熟度很多中间件、Docker 版本、Ansible 插件在 22.04 上的验证最充分出问题的概率最低。22.04.1 相比初版 22.04 修掉了一批早期安装器的 bug尤其是安装阶段网络配置那块的体验顺滑不少。至于架构服务器场景一律选 amd64除非你在 Apple Silicon 上做实验那就得考虑 arm64 镜像但要注意处理器架构和 VMware 支持的匹配问题。2.2 镜像下载与校验的正确姿势镜像我强烈建议只从官方渠道取。Ubuntu 的服务器版镜像标准路径挂在其官方发布站点上文件名叫ubuntu-22.04.1-live-server-amd64.iso大小在 1.4 GB 左右。这里有个很多人忽略的细节那个live-server前缀意味着它是 Live 安装镜像安装过程本身跑在内存里这跟早期的alternate文本安装镜像不是一回事所以你会看到安装界面虽然是文本风格但流程其实是现代化的。下载完一定要做校验这不是洁癖是防止镜像在传输中被损坏导致安装到一半报莫名其妙的错。官方会同时提供 SHA256SUMS 文件拿到后做比对# Windows PowerShell 里校验 Get-FileHash .\ubuntu-22.04.1-live-server-amd64.iso -Algorithm SHA256 # Linux 宿主机里校验 sha256sum ubuntu-22.04.1-live-server-amd64.iso比对结果和官方文件里那一行完全一致才继续否则重新下载。我见过不止一次因为镜像损坏安装到最后一步写入引导失败白白浪费半小时。2.3 宿主机硬件的账要算清楚配置虚拟机之前先把账算明白。Ubuntu Server 最小安装大约占 4 GB 磁盘但你要跑服务、装 Docker 镜像、留日志空间20 GB 是底线40 GB 起步比较从容。内存方面纯命令行系统 1 GB 能开机跑 Ansible 或者几个容器建议 2 GB 到 4 GB。CPU 核心数不要超过宿主机物理核心数双核起步即可。宿主机这边虚拟化功能必须在 BIOS/UEFI 里打开。Intel 平台叫 VT-xAMD 平台叫 SVM。Windows 上还得注意一个坑如果宿主机启用了 Hyper-V 或者虚拟机平台这类特性VMware Workstation 16 有时会退化成兼容模式运行性能明显下降甚至报某些虚拟化相关的错误。可以在启用或关闭 Windows 功能里把 Hyper-V、Windows 虚拟机监控程序平台这些关掉再重启VMware 就能走自己的虚拟化引擎快得不是一点半点。提示关 Hyper-V 前确认自己不用 WSL2 或者 Windows 沙盒这两个都依赖它。如果确实都要用可以保留但接受 Workstation 性能打折。3. 创建虚拟机每一步背后的用意3.1 新建向导里的关键选择打开 Workstation走创建新的虚拟机选自定义高级而不是典型。典型模式会替你把一堆参数定死比如磁盘类型、网络模式后期想调还得进设置里翻。自定义模式多花两分钟但后面省心。硬件兼容性那一页如果你确定只在 Workstation 16 及以上用选最高的 16.x 版本如果这台虚拟机可能被拷到更老的机器上跑往下选一档。磁盘类型选 SCSI 而不是 IDELinux 对 SCSI 的驱动支持更好性能也略有优势。虚拟磁盘选将虚拟磁盘拆分成多个文件还是存储为单个文件我个人倾向单个文件拷贝和快照时省事除非你的目标分区是 exFAT 之类对单文件大小有限制的文件系统。3.2 网络模式的选择逻辑这一步是全局里最需要想清楚的。VMware 提供三种常用模式桥接、NAT、仅主机。桥接模式让虚拟机像一台独立设备一样直接连到你的物理局域网能从路由器拿真实网段的地址同网段的其他机器也能访问它。优点是真实缺点是占用公司或家里的 IP 资源而且一旦你在不同网络之间来回切换配置好的静态 IP 可能就失效了因为网段变了。NAT 模式是虚拟机躲在宿主机后面通过 VMware 的虚拟 NAT 设备上网。宿主机的物理网段换了它也不受影响非常适合笔记本电脑这种到处跑的场景。缺点是同网段的别人访问不了你的虚拟机不过你可以给宿主机做端口转发来解决。仅主机模式最封闭只有宿主机和虚拟机之间能通信适合做完全隔离的实验。我这次配置静态 IP 用的是 NAT 模式配合自定义网段因为它兼顾了能上网和地址稳定。后面虚拟网络编辑器会详细讲怎么改。3.3 磁盘与内存的分配建议磁盘分配 40 GB选立即分配还是按需分配。按需分配会随着实际使用慢慢长节省宿主机空间立即分配能避免磁盘碎片性能更稳。我个人一般选按需配合定期做碎片整理或者干脆放 SSD 上。内存给 2 GBCPU 给 2 核这些都能后期在关机状态下调整。创建完成后先别急着开机进编辑虚拟机设置再检查一遍网络适配器是不是 NATCD/DVD 是不是指向了下载好的 ISO是不是勾选了启动时连接。这三项没对上开机就是一场空。4. 系统安装全过程与那些值得停一下的地方4.1 引导与安装器语言选择开机后安装器会跑自检几秒后进入语言选择界面。这里选 English 还是中文看个人习惯。我建议选 English因为服务器上很多日志、报错信息本来就是英文的安装时用英文界面术语能对得上排查问题时不用在脑子里做一遍翻译。而且文本安装界面对中文的字体支持有时候会渲染得歪歪扭扭英文更清爽。接下来是键盘布局一般选 English (US)。如果宿主机是笔记本键盘布局错了会导致后期输入某些符号错位早发现早改。4.2 网络配置阶段的两条路线安装器会检测网络接口一般是ens33这种命名新版 systemd 的 predictable network interface names 规则。这里有两种做法一种是在安装阶段就把静态 IP 配好这样做的好处是安装过程中下载更新如果勾选了就走静态网络一步到位。另一种是先让它走 DHCP 装完进系统后再改 netplan这样做的好处是安装过程更顺万一静态 IP 配错导致下载更新失败也不影响系统装完。我推荐第二种也就是安装阶段先用 DHCP 装完进系统后再动手改。理由很实在安装器里的网络配置界面是 netplan 的一个简化前端你在这里填的东西会直接写进/etc/netplan/下的 YAML 文件但它的语法校验没有系统内那么直观填错了它不一定马上告诉你。先装完再改你能在完整环境里用netplan try做安全回滚心里踏实。在安装器的网络那一页你只要确认接口拿到了地址就行即使没有勾选创建静态配置也无所谓。记住这个接口名ens33后面会反复用到。4.3 分区方案与用户信息分区这一步新手选使用整个磁盘并设置 LVM即可安装器会自动切出/boot、根逻辑卷、以及一个 swap。LVM 的好处是后期扩容方便比如根分区不够用了能在不停机的情况下从新加的虚拟磁盘里扩。如果你就是想理解分区结构也可以选手动但服务器实验场景没必要在安装阶段纠结分区LVM 默认布局已经够用了。用户名和密码这块注意 Ubuntu 从 22.04 开始默认不再启用 root 直接登录你创建的第一个用户会被加进 sudo 组。用户名建议全小写避免某些脚本里大小写敏感的坑。主机名先随便起比如ubuntu-srv后面能改。SSH 那一页一定勾选Install OpenSSH server。不然后面还得登录进去用apt install装多一步。虽然安装阶段勾了它也会从网络下载一部分包但联网正常的话就几秒钟的事。4.4 磁盘写入与第一次重启快照这一步看你要不要把预装内容包括进去。如果只是想装个干净系统可以跳过这些常用软件的勾选装完再按需装。确认摘要后开始写入等它把系统拷到虚拟磁盘上最后提示重启。重启时它会提示移除安装介质VMware 里它会自动断开 ISO 的连接如果卡住不动手动在虚拟机设置里把 CD/DVD 的连接状态取消勾选即可。5. 静态 IP 配置netplan 到底怎么管网络5.1 先搞清楚接口名和当前网络状态登录进去之后第一件事是确认接口名字和当前的寻址情况ip -br addr ip route第一条会输出类似ens33 UP 192.168.152.128/24的内容这个ens33就是你要写进 netplan 的接口名。第二条输出的default via 192.168.152.2里的192.168.152.2通常就是 VMware NAT 网络的网关地址192.168.152.0/24是网段。这个网关地址很关键它不是随便填的得跟虚拟网络编辑器里那个 NAT 设置对得上。这里需要解释一下 netplan 是什么。Ubuntu 17.10 之后网络配置统一用 netplan 描述它本身不直接管网络而是一个渲染器你写 YAML 描述意图netplan 把它翻译成后端网络管理器的配置。Ubuntu Server 上默认后端是systemd-networkd桌面版是 NetworkManager。这个设计的意义在于同一份配置能适配不同后端但也带来一个常见困惑——改了 YAML 之后到底生效没有得看后端有没有真正读进去。5.2 查看并理解默认的 netplan 文件确认一下有几个 netplan 配置文件ls -l /etc/netplan/安装时选了 DHCP 的话通常会看到一个00-installer-config.yaml内容是network: ethernets: ens33: dhcp4: true version: 2这个文件命名里的00-前缀表示它会最先被读取数字越小优先级越高。如果你新建一个01-static.yaml只要它不和前面冲突也能生效如果冲突后面的会覆盖前面的。我个人的做法是直接改00-installer-config.yaml避免多个文件互相干扰。5.3 写一份可靠的静态 IP 配置把上面的文件改成下面这样假设你决定用192.168.152.100作为静态地址network: version: 2 renderer: networkd ethernets: ens33: dhcp4: false dhcp6: false addresses: - 192.168.152.100/24 routes: - to: default via: 192.168.152.2 nameservers: addresses: - 192.168.152.2 - 8.8.8.8 - 114.114.114.114逐行说下用意。dhcp4: false和dhcp6: false是明确关掉自动获取光写静态地址而不关 DHCP 是有风险的有些后端会同时保留 DHCP 租约导致地址行为不确定。addresses里的/24是 CIDR 前缀代表掩码 255.255.255.0。routes里的to: default是 22.04 引入的新写法等价于老版本的gateway4而gateway4在 22.04 里已经标记为废弃继续用会有警告。nameservers里的顺序有意义systemd-resolved 会按顺序尝试把网关放第一个能让内网域名优先解析。注意 YAML 对缩进极其敏感必须是空格不能混 tab。每层缩进两个空格对齐错一个位置整个文件就解析失败。注意routes的to: default和via:组合是新写法如果你在网上看到用gateway4的老教程在 22.04 上照样能用但会打警告长期建议换成新写法。5.4 应用配置与安全回滚机制改完保存先做语法检查和试应用sudo netplan trynetplan try会应用配置并启动一个 120 秒倒计时要求你在这期间按回车确认。如果配置有问题导致你失联倒计时结束它会自动回滚到上一个可用配置。这是 netplan 最实用的功能之一强烈建议每次都先用try确认无误后再sudo netplan applyapply是直接生效不回滚所以它只应该在你已经用try验证过之后执行。如果执行apply后没反应或者报Permissions相关错误检查文件权限netplan 的 YAML 建议设置成600避免被其他用户篡改sudo chmod 600 /etc/netplan/00-installer-config.yaml5.5 验证不要只看一个命令就下结论配置生效后用一组命令交叉验证ip addr show ens33 ip route show ping -c 3 192.168.152.2 ping -c 3 114.114.114.114 ping -c 3 baidu.com第一条确认地址真的挂上了。第二条确认默认路由指向你写的网关。第三条验证能不能通网关这步不通说明二层有问题多半是虚拟网络或者地址写错。第四条验证到公网 IP 层的连通性这步通了说明路由没问题但 DNS 可能还没好。第五条验证域名解析这一步通了才说明 DNS 配置生效。从网关到公网 IP 再到域名逐层验证哪一层断了就锁定哪一层的问题这是排查网络问题的基本思路。如果ip addr里地址是对的但 ping 不通网关去检查 VMware 的虚拟网络编辑器里 VMnet8 的网段是不是192.168.152.0/24网关是不是192.168.152.2。不一致的话要么改 netplan 去适配 VMware 的设置要么改 VMware 去适配你的规划两边必须一致。6. 把 VMware 虚拟网络编辑器用明白6.1 为什么要动虚拟网络编辑器默认安装时VMware 会把 NAT 网络的 DHCP 服务打开分配的地址从某个池子里随机取。你给虚拟机配了静态地址只要这个地址不在 DHCP 池范围内通常不会冲突。但如果你配的地址恰好落在池子里就可能出现抢地址的情况。更稳妥的做法是进虚拟网络编辑器把 DHCP 分配范围改小甚至关掉或者干脆把静态地址选在池子外的位置。打开方式Workstation 菜单编辑-虚拟网络编辑器需要管理员权限才能改。找到 VMnet8NAT 模式用的那个点NAT 设置能看到网关地址点DHCP 设置能看到地址池范围。6.2 网段规划与冲突排查规划网段时先看看宿主机所在物理网络用的是什么段。如果宿主机在公司内网走192.168.1.0/24那么 VMnet 最好避开这个段改成192.168.152.0/24这种不容易撞的。否则虽然 NAT 理论上隔离但路由表里出现两条相似前缀时某些应用的连接行为会变得不可预测。常用命令帮你在宿主机上确认物理网段# Windows ipconfig # Linux 宿主机 ip -br addr如果宿主机和虚拟机的网段确实撞了最干净的做法是回到虚拟网络编辑器把 VMnet8 的网段整体换成别的比如192.168.200.0/24。改完后虚拟机内的 netplan 配置也要同步改地址、网关。6.3 NAT 设置与端口转发的必要性NAT 模式下一个必须理解的事实外部网络看不到虚拟机的真实地址只能看到宿主机的地址。所以如果你想让局域网里另一台设备访问这台虚拟机的 SSH光配置虚拟机自己的静态 IP 不够还得在虚拟网络编辑器的 NAT 设置里做端口转发把宿主机的某个端口比如 2222映射到虚拟机的 22 端口。这样别人连宿主机的2222就能进来。这个机制的本质是 NAT 的表转换。理解它有助于你判断为什么我在虚拟机里能访问外面外面却访问不了我答案就是 NAT 是单向发起的除非有显式的映射。7. 收尾阶段SSH、快照与日常维护7.1 用 SSH 替代虚拟机窗口工作系统装好、IP 固定之后第一件提升体验的事就是换 SSH 登录。在宿主机上开个终端ssh 用户名192.168.152.100连上之后粘贴、滚动、多窗口都顺畅了虚拟机窗口基本可以关掉。建议顺手在宿主机上配个 SSH 密钥登录避免每次输密码# 宿主机上生成密钥如果还没有 ssh-keygen -t ed25519 -C local-vm # 把公钥传到虚拟机 ssh-copy-id 用户名192.168.152.100之后就可以免密登录脚本化操作也方便。7.2 快照的正确用法系统配好静态 IP、装完基础组件之后立刻做一个快照。这是虚拟机相比物理机最大的优势。快照的用法有个原则只在关键状态点做不要滥用。快照层数太多会让磁盘性能下降而且管理混乱。我一般会保留三个点刚装完系统、配置静态 IP 完成、装完特定开发环境。回滚快照时注意虚拟机的网络状态也会回到快照时刻如果你在快照之后改过虚拟网络设置回滚后可能对不上需要重新确认。7.3 常见维护动作与注意点日常几个动作更新系统sudo apt update sudo apt upgrade -y升级前做快照因为内核升级有时会带来网络驱动变化。检查 netplan 生效状态networkctl status ens33能看到后端驱动实际拿到的配置。确认 DNS 解析用的谁resolvectl status能看到每个接口实际生效的 DNS。时间同步虚拟机时间容易被宿主机的休眠唤醒搞得漂移装上chrony并确认服务在跑。8. 踩过的坑与排查速查表8.1 典型问题与解决思路下面这张表是我在实际操作中反复遇到并整理出来的按现象分类。现象可能原因排查与解决netplan apply报解析错误YAML 缩进用了 tab 或对齐错位用sudo netplan generate先看报错行号改成两个空格缩进配置了静态 IP 但仍走 DHCP 地址旧 DHCP 租约还在或dhcp4没关在 YAML 里显式dhcp4: false重启systemd-networkd能 ping 网关但 ping 不通域名DNS 没配或resolvectl没生效检查nameservers用resolvectl status确认接口 DNSping 不通网关地址/网关和 VMnet 网段不一致对照虚拟网络编辑器里的 VMnet8 设置虚拟机上网时通时断宿主机切了物理网络NAT 未刷新重启 VMware NAT 服务或在虚拟网络编辑器里点还原默认设置SSH 连不上但本地能登录宿主机防火墙挡了端口转发检查宿主机防火墙规则开机后接口名变了虚拟硬件变化触发网卡重新命名用ip -br addr重新确认名字更新 netplan8.2 几条真正省时间的经验第一改网络配置前一定保留一个能进系统的方式。最好的保险是让虚拟机在开机时多一个网络适配器走仅主机模式主适配器配静态 IP。这样即使静态 IP 配崩了你还能通过仅主机的那个接口进来。不过用netplan try已经能覆盖大部分场景这个双网卡方案是给特别复杂的环境用的。第二别在安装阶段一次性把网络配置复杂化。DHCP 装完进系统后再改这个流程的容错空间最大。见过太多人在安装器的网络界面里折腾半天最后连系统都没装完。第三netplan try的 120 秒不是让你干等的。回车确认之前先在另一个终端里 ping 一下网关和公网确认通了再确认这才是它的正确用法。第四关于ubuntu server中的name servers什么意思这类疑问最直白的解释就是nameservers 就是你告诉系统遇到域名时去问谁的服务器地址列表。配错了或者留空域名就解析不了但 IP 直连照样通这也是为什么验证要分层次做。第五虚拟机的电源管理可以关掉不必要的休眠避免网络在唤醒后短暂异常。在宿主机的电源计划里把相关选项调一下比事后排查划算得多。8.3 排查口诀我把整个排查流程压缩成一句话先看地址、再看路由、然后通网关、再通公网 IP、最后才看域名解析永远从下往上查。大多数时候问题卡在第一或第二步因为静态配置本质就是告诉系统我是谁、我的出口在哪。把这两件事确认死了后面都是顺水推舟。实际动手下来我最大的感受是静态 IP 配错从来不是最难的部分难的是很多人只盯着 netplan 文件本身忘了它只是描述意图真正的生效由systemd-networkd和 VMware 的虚拟网络共同决定。任何一端不一致配置再漂亮也没用。把虚拟网络编辑器、netplan 文件、后端渲染这三层在脑子里串成一条线这套环境你就真正掌握了换任何发行版、任何虚拟化平台思路都能直接搬过去。
分享:

看完干货,该让你的企业上线了

免费需求沟通 · 48 小时内出具建站方案 · 河南本地可上门