装好一台 Ubuntu 20.04 Server,满心以为能直接开工,结果一开机发现连不上网——这大概是每个运维和开发者都经历过的默契瞬间。更让人头疼的是,搜索“Ubuntu 20.04 配置网络”,出来的教程南辕北辙:有人让你改 /etc/network/interfaces,有人喊你装 net-tools,还有人直接贴一段 ifconfig eth0 up。这些方法放在今天,基本都在带新人走弯路。
Ubuntu 20.04 的网络配置,核心已经全部迁到了 Netplan 这套工具上。它把传统分散的网络配置收敛成统一的 YAML 文件,真正干活的底层是 systemd-networkd 或者 NetworkManager。这篇东西,我把装机后最常遇到的网络配置场景、Netplan 文件该怎么写、为什么这么写、踩过的坑,一次性讲清楚。适合刚接触 Ubuntu 20.04 的新手,也适合从 CentOS 转过来找配置路径的老手。
1. 别急着改配置:先看懂 Ubuntu 20.04 的网络管理脉络
1.1 为什么 Ubuntu 20.04 不再用 /etc/network/interfaces
很多人习惯性地打开 /etc/network/interfaces,发现文件还在,但改了之后重启网络服务根本不生效,然后开始怀疑人生。这不是你操作有误,是这个文件在 Ubuntu 20.04 里已经名存实亡了。
Ubuntu 从 18.04 开始大力推广 Netplan,到 20.04 已经成了默认配置方式。Netplan 的设计思路是:不直接管理网络,而是做一层“翻译器”,把你写好的 YAML 配置,转换成后端程序能识别的配置。后端有两种:
systemd-networkd:轻量、无桌面依赖,适合服务器和容器场景NetworkManager:带图形界面管理,适合桌面版 Ubuntu
你可以通过 netplan get 查看当前生效的后端类型。这个设计看起来多了一道工序,实际好处很明显:只要学一套 YAML 语法,不管后端是哪个都不会影响你改配置。传统的那套 /etc/network/interfaces 写法,在 20.04 里早就边缘化了。
1.2 网卡命名规则的变化:为什么找不到 eth0
对网络对配置迷茫,还有一个直接原因:找不到 eth0。CentOS 7 里熟悉的 eth0、eth1,在 Ubuntu 20.04 里默认变成了 ens33、ens160、enp0s3 这种看着很别扭的名字。
这套命名规则叫 Fixed Name(可预测命名),原理是根据网卡在主板上的物理位置、PCI 总线号来取名。
en:以太网p0:PCI 总线号 0s3:PCI 插槽号 3
好处是名字固定,不会因为插拔设备导致 eth0、eth1 顺序漂移。坏处就是一眼看不明白哪个是哪个。
查看实际网卡名和 MAC 地址,用:
bash复制ip link show
会列出所有网卡状态、MAC、名字。记住你要配置的那个网卡名,后面 Netplan 文件里要用它。
1.3 配置文件的路径与生效流程
Ubuntu 20.04 的 Netplan 配置文件统一放在 /etc/netplan/ 目录下,最常见的两个文件名:
01-network-manager-all.yaml:桌面版默认,后端是 NetworkManager99-config.yaml或00-installer-config.yaml:服务器版安装器生成
改配置文件之后,需要执行:
bash复制sudo netplan apply
这条命令会把 YAML 翻译成后端配置并立即应用,比 systemctl restart network-manager 之类的方式更正规。整个生效流程可以用一句话概括:改 YAML → netplan apply → 后端接管。理解了这个链路,你就知道为什么改完 interfaces 文件没用,而 netplan apply 就是那个让改动真正落地的动作。
提示:如果你不确定当前用的是哪个后端,执行
ps -ef | grep -E "NetworkManager|systemd-networkd"看进程即可。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. Netplan 配置文件逐行解读:语法与字段背后的逻辑
2.1 一个标准 YAML 配置长什么样
直接上最常见的配置模板,以静态 IP 为例:
yaml复制network:
version: 2
renderer: networkd
ethernets:
ens33:
dhcp4: 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
如果你只是想先跑通 DHCP,配置更简单:
yaml复制network:
version: 2
renderer: networkd
ethernets:
ens33:
dhcp4: true
这两份配置文件,字面上看着不难,但实际写起来全是细节。
