刚接触 Ubuntu 的时候,我干过一件蠢事:在虚拟机里装好系统,用 DHCP 自动获取地址跑得挺好;第二天重启,SSH 连不上了,IP 变了,我只能屁颠屁颠跑回机房接显示器看新地址。那一刻我就明白,凡是需要长期稳定连接的 Linux 机器,固定 IP 不是“可选项”,是“必选项”。
这篇东西不打算写成一本正经的官方文档,就把我这些年踩过的坑、反复用到的配置方式、以及排查链路里最容易被忽略的细节,一次性整理出来。不管你是刚把 Ubuntu 装进 VMware 的新手,还是被公司网络逼着改静态地址的老油条,这篇文章都能让你少走弯路。
固定 IPv4 这件事,听起来只是改几个数字,但实际涉及 Netplan、systemd-networkd、NetworkManager、DHCP 保留、路由表和 DNS 优先级一堆东西。我先从最常见的场景讲起,再逐步深入。
1. 配置固定 IP 前的三件套:看清网卡名、搞懂网络模式、找准配置文件
1.1 先搞清楚你的网卡叫什么名字
传统 Linux 网卡名是 eth0、eth1,但从 Ubuntu 18.04 开始,systemd 的命名规则接管了一切,网卡名变成了 eno1、ens33、ens192、enp0s3 这种带总线位置的名称。很多网上教程直接让你改 eth0,如果你照抄,大概率会得到一个“无可用的配置文件”报错。
怎么看自己机器的网卡名?跑这条:
bash复制ip addr show
或者更精确一点:
bash复制ip link show
输出结果里你会看到类似这样的内容:
bash复制2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
link/ether 00:0c:29:12:34:56 brd ff:ff:ff:ff:ff:ff
inet 192.168.1.100/24 brd 192.168.1.255 scope global dynamic ens33
看到 dynamic 这个关键字没?这说明你这块网卡正以 DHCP 方式从路由器接收地址。这里的 ens33 就是网卡名称,后面所有配置都要基于这个名字,别弄错了。
1.2 物理机、虚拟机、云服务器的网络模型差异
固定 IP 这事儿在不同环境下,实现路径差别非常大。我不止一次看到有人在云服务器上折腾 Netplan,改完直接 SSH 断连——因为云平台的网络模型根本不是传统物理网络。
| 环境 | 网络模型 | 推荐配置方式 |
|---|---|---|
| 物理机/VMware/ VirtualBox(桥接模式) | 直接暴露在局域网,地址由路由器 DHCP 分配 | 改 Netplan 静态配置 |
| VMware 的 NAT 模式 | 宿主机做网关,虚拟机隐藏在后端网段 | 改 Netplan + 确认虚拟网络编辑器参数 |
| VirtualBox 默认 NAT | 虚拟机出网靠 NAT,外部无法直接访问 | 尽量不使用,要固定用桥接 |
| 云服务器(阿里云/AWS等) | 底层虚拟化 + 云平台配置 | 在云控制台设置固定内网 IP,系统层只保持默认即可 |
重点提醒一句:云服务器千万别在系统里面乱改 IP,这不是经验,是我当年亲手把自己从某云服务器上“踢下来”的教训——内网 IP 是云平台下发的,你改了系统配置,控制台都不知道,问题就变成“明明配置没问题,网络就是不通”。
1.3 从 /etc/network/interfaces 到 Netplan:配置文件时代的分水岭
如果你在百度上搜 Ubuntu 固定 IP,搜出来的结果可能还是老一套:改 /etc/network/interfaces,添加 auto eth0、iface eth0 inet static 之类的老代码。这套玩法在 Ubuntu 16.04 及以前确实没问题,但 Ubuntu 18.04 之后,系统默认的网络配置管理工具已经切换到 Netplan。
Netplan 是一个 YAML 配置的前端抽象层,它接收 /etc/netplan/*.yaml 文件的配置描述,然后根据配置里的 renderer(默认情况下有 networkd 和 NetworkManager 两种后端)生成对应的底层配置文件。
我见过不少人跳过这一步,直接改后端配置文件,结果系统一重启配置被覆盖,白白折腾半天。正确顺序永远是先弄懂你的 YAML 写在哪儿,改完之后再去应用,别绕到后端的配置文件里去做文章,那是下策。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. Netplan YAML 手把手配置:从 DHCP 到静态地址的完整切换流程
2.1 找到正确的 YAML 文件
Netplan 的配置文件位于 /etc/netplan/ 目录,具体文件名因系统版本有些差别。最常见的两种:
00-installer-config.yaml(Ubuntu Server 18.04 及以上安装器默认生成)01-network-manager-all.yaml(桌面版通常走 NetworkManager 后端)
查看当前文件内容:
bash复制cat /etc/netplan/00-installer-config.yaml
如果是 Server 版默认安装,大概率你会看到类似这样的配置:
yaml复制network:
ethernets:
ens33:
dhcp4: true
version: 2
这行配置的意思是:让 ens33 网卡通过 DHCPv4 获取地址,其他规则一概不管。我们的目标就是把这段配置改成固定 IP。
2.2 静态地址配置的最小完整示例
要改的 YAML 文件内容如下,我直接给一个可以“抄作业”的完整版本:
yaml复制network:
version: 2
renderer: netwo
