Netplan 是 Ubuntu 17.10 及以后版本中默认的网络配置工具。它通过读取 YAML 格式的配置文件,并将其渲染(Render)为底层网络服务(如 systemd-networkd 或 NetworkManager)的可执行配置。
1. 理论基础与核心概念
- 配置目录:主要配置文件位于
/etc/netplan/*.yaml。系统按文件名升序(字母/数字)读取,后读取的文件会覆盖或补充先前的配置。 - **后端渲染器 (Renderers)**:
- networkd:通常用于服务器(Server),由
systemd-networkd管理。 - NetworkManager:通常用于桌面环境(Desktop),支持图形化管理和复杂的 Wi-Fi 切换。
- networkd:通常用于服务器(Server),由
- YAML 规范:
- 必须使用空格缩进,禁止使用 Tab 键。
- 冒号(
:)后必须紧跟一个空格。 - 层级结构严格,每一级代表一个配置对象。
2. 常用操作指令
在修改配置文件后,必须通过以下命令生效:
| 命令 | 描述 | ||
|---|---|---|---|
sudo netplan generate |
将 YAML 转换为底层后端(如 networkd)的配置。 | ||
sudo netplan apply |
立即应用所有网络配置。 | ||
sudo netplan try |
推荐使用。尝试应用配置,并等待用户确认。若 120s 内无响应则自动回滚(防止远程断连)。 | ||
sudo netplan ip leases <网卡名> |
查看 DHCP 自动分配的详细信息。 |
3. 配置示例:静态 IP 与 DHCP
以下是典型的网卡配置模板,你可以通过 ip link 获取具体的网卡名称(如 eth0 或 enp0s3)。
示例:配置静态 IPv4
network:
version: 2
renderer: networkd
ethernets:
enp0s3:
dhcp4: no
addresses:
- 192.168.1.100/24 # 静态 IP 地址/掩码
routes:
- to: default
via: 192.168.1.1 # 网关地址
nameservers:
addresses:
- 8.8.8.8 # DNS 服务器
- 114.114.114.114
示例:配置 DHCP(自动获取)
network:
version: 2
renderer: networkd
ethernets:
enp0s3:
dhcp4: yes
4. 故障排查与常见原因
当配置未能按预期生效或报错时,请按以下步骤检查:
- 语法校验:
现象:执行netplan apply提示Invalid YAML at line X。
原因:通常是因为混用了 Tab 键、缩进层级不对或冒号后缺少空格。 - 网卡名称不匹配:
现象:配置后ip addr显示网卡仍为DOWN或没有 IP。
分析:YAML 中的网卡名称(如enp0s3)必须与ip link查看到的实际名称一致。 - 渲染器冲突:
现象:配置后依然受图形界面或旧脚本干扰。
定位:检查renderer字段。如果是服务器环境且没有 GUI,确保使用networkd。 - 默认网关冲突:
现象:无法访问外部网络。
解决方案:若同时启用了多个网卡,确保只有一个网卡配置了routes中的default。
总结
Netplan 简化了 Linux 网络的声明式配置。核心流程归结为:编辑 YAML -> netplan try 验证 -> 确认应用。对于生产环境,始终建议使用 try 参数以规避配置错误导致的业务中断。