如果你刚装完 Ubuntu 20.04,想把网卡从自动获取改成固定 IP,翻遍系统却没有方向——顺手打开 /etc/network/interfaces,文件明明还在,内容也眼熟,可改完重启网络服务,系统提示这个服务根本不存在,网络纹丝不动。这不是你操作的问题,也不是不够细心,而是从 Ubuntu 18.04 开始,默认网络配置体系已经换成了 Netplan,老教程里的改法在 20.04 上基本失效。
这篇内容围绕 Ubuntu 20.04 的网络配置完整链路展开,目标是帮你把“从 IP 设置到连接外网”这条路上的关键节点全部打通:找到当前系统真正生效的配置文件、写对静态 IP 和网关、配好 DNS,最后通过命令验证外网连通性。适合刚转到 Ubuntu 20.04 的桌面用户、在虚拟机里折腾网络实验的开发者,以及第一次给 Ubuntu 服务器做固定 IP 规划的运维新手。文中所有步骤都在 Ubuntu 20.04 桌面版和服务器版上实测过,多数场景可以直接照抄。
1. 为什么 Ubuntu 20.04 的网络配置不能照着老教程抄
先聊一个很多人忽略的事实:Ubuntu 的网卡配置方式在 18.04 版本经历了一次结构性切换,20.04 完全继承了新方案。之前大家熟悉的 /etc/network/interfaces、ifupdown 工具链在 18.04 之后不再是默认配置入口,取而代之的是 Netplan。Netplan 用 YAML 文件统一描述网络接口、IP 地址、网关、DNS,然后把配置翻译给底层的 systemd-networkd 或 NetworkManager。换句话说,你写配置的对象已经变了,再去找旧文件当然处处碰壁。
1.1 配置入口与工具链的变化
我见过不少从 CentOS 7 或者其他 Linux 发行版转过来的朋友,第一反应是去编辑 /etc/network/interfaces,然后执行 service networking restart。在 Ubuntu 20.04 上,这套操作大概率得到两个结果:一是修改根本不生效,二是提示 networking.service 不存在。原因是系统里连 ifupdown 都没默认安装,Netplan 生成的配置会直接覆盖底层行为,你再怎么改 interfaces 都不会被理会。
新旧两代配置方式的差异,用一张表能看得很清楚:
| 项目 | Ubuntu 16.04 及以前 | Ubuntu 18.04 / 20.04 |
|---|---|---|
| 主要配置文件 | /etc/network/interfaces |
/etc/netplan/*.yaml |
| 常用查看命令 | ifconfig |
ip addr |
| 网关查看 | route -n |
ip route |
| 配置生效方式 | service networking restart |
netplan apply |
| 底层管理服务 | networking |
systemd-networkd 或 NetworkManager |
这个切换不是 Ubuntu 拍脑袋决定的,而是老方案的痛点太多:多个网卡配置分散、重启服务时容易导致断连、与 NetworkManager 之间经常打架。Netplan 的思路是把所有网络接口配置收拢到统一的 YAML 描述层,再由一个“渲染器”去执行,配置管理上清晰很多。代价就是新手第一次接触时完全摸不到入口。
1.2 先搞清楚你的系统用谁做渲染器
Netplan 本身不直接配置网卡,它只是个“翻译官”,真正干活的是渲染器。桌面版和服务器版的默认渲染器并不一样,这是很多教程没讲清楚的地方。
- 桌面版 Ubuntu 20.04 默认使用 NetworkManager 作为渲染器,配置文件的文件名通常叫
/etc/netplan/01-network-manager-all.yaml。 - 服务器版默认使用 systemd-networkd,安装时生成的配置文件常见为
/etc/netplan/00-installer-config.yaml或/etc/netplan/50-cloud-init.yaml。
判断当前系统的渲染器很简单,直接看现有 Netplan 文件里 renderer: 后面的值就行。如果文件里只写了 network: {version: 2} 没有明确指定渲染器,可以用 ps -p 1 -o comm= 看 PID 1 是 systemd 还是别的,再配合 systemctl status NetworkManager 这样几个命令确认。
这个区别直接决定了你后面修改的方式。桌面版如果由 NetworkManager 管理,你完全可以直接用图形界面或 nmtui 改;服务器版由 systemd-networkd 托管,就必须确保 YAML 文件写法正确且能通过 netplan generate 的语法校验。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
