Ubuntu 22.04 静态IP配置深度解析:告别过时教程,掌握Netplan新范式
最近在给几台Ubuntu 22.04服务器做网络初始化,顺手想把静态IP配置好。本以为是个五分钟的活儿,结果一查资料,发现网上铺天盖地的教程还在教人用 gateway4 这个参数。照着做,netplan apply 命令一敲下去,直接给你弹个“deprecated”的警告,配置还不生效。这感觉就像你拿着去年的公交卡想刷今年的地铁闸机,系统认得你,但就是不让你过。
这种问题特别典型——Ubuntu的版本在快速迭代,网络管理工具也在更新,但很多技术文档的更新速度没跟上。对于需要在生产环境或者开发环境中稳定部署服务的工程师来说,一个错误的网络配置可能意味着服务无法访问、远程连接中断,排查起来又得花上不少时间。这篇文章,我就结合自己最近的实际操作,把Ubuntu 22.04(包括Jammy Jellyfish之后的版本)里配置静态IP的正确姿势、常见陷阱以及背后的原理给你捋清楚。目标很简单:让你一次配置成功,并且明白为什么这么配。
1. 理解Netplan:Ubuntu网络配置的“新管家”
在深入操作之前,我们得先搞清楚对手是谁。从Ubuntu 17.10开始,Canonical引入了Netplan作为默认的网络配置工具,旨在替代传统的 /etc/network/interfaces 文件。它的设计哲学是声明式配置和抽象后端。
什么是声明式配置? 简单说,就是你只需要告诉系统“我想要什么样的网络状态”,而不是“一步一步该怎么操作”。在Netplan的YAML文件里,你定义网络接口、IP地址、网关、DNS,然后由Netplan去调用底层的渲染器(renderer)来生成具体的配置并应用。这比之前手动写一堆ifconfig、route add命令要清晰和可靠得多。
两个关键的后端渲染器:
- networkd:使用 systemd-networkd 作为后端。这是服务器版(Server)和无图形界面环境的默认选择,轻量且高效。
- NetworkManager:使用 NetworkManager 服务作为后端。这是桌面版(Desktop)的默认选择,因为它能更好地处理图形界面下的网络切换(比如有线/无线切换)。
你可以通过以下命令快速查看当前系统使用的渲染器:
cat /etc/netplan/*.yaml | grep renderer
通常,初始的配置文件位于 /etc/netplan/ 目录下,名字类似 00-installer-config.yaml 或 01-network-manager-all.yaml。这个目录下的所有 .yaml 文件都会被Netplan读取并按字母顺序合并。
注意:一个常见的误解是认为必须修改某个特定的文件。实际上,Netplan会处理
/etc/netplan/下所有.yaml文件。你可以新建一个更靠前的文件(如00-custom-config.yaml)来覆盖默认配置,这样在系统升级时,你的自定义配置更不容易被覆盖。
2. 核心配置实战:从“gateway4报错”到正确路由声明
现在我们来解决文章标题里的核心问题:为什么 gateway4 会报错,以及正确的配置方法是什么。
2.1 剖析“gateway4已废弃”的根源
如果你搜索“Ubuntu 静态IP配置”,大概率会看到下面这种格式的YAML配置片段:
network:
version: 2
renderer: networkd # 或 NetworkManager
ethernets:
ens33:
addresses:
- 192.168.1.100/24
dhcp4: no
dhcp6: no
gateway4: 192.168.1.1 # <-- 问题就在这里!
nameservers:
addresses: [8.8.8.8, 1.1.1.1]
在Ubuntu 21.10及更早的版本中,这样写是没问题的。但从某个时间点开始(具体取决于Netp

519

被折叠的 条评论
为什么被折叠?



