1. Ubuntu 上的 Netplan 概览
什么是 Netplan?
Netplan 是自 Ubuntu 17.10 起引入的网络配置管理工具。之前常用 ifconfig 和 /etc/network/interfaces 等工具,而 Netplan 提供了一种全新的网络配置方式。Netplan 最大的优势在于使用 YAML 文件来描述网络设置,这使得配置既简洁又统一,即使是复杂的网络环境也能轻松管理。
Netplan 支持 NetworkManager 和 systemd-networkd 等后端,并可在 Ubuntu Desktop 与 Server 版本上使用。这实现了不同环境下的统一网络管理。
为什么要使用 Netplan?
相较于传统的网络配置方式,Netplan 具备以下优势:
- 语法简洁:YAML 格式直观且结构清晰,即使是初学者也能轻松理解配置内容。
- 统一管理:同时适用于桌面和服务器环境,能够集中管理各种网络配置。
- 动态变更:编辑并应用配置文件即可实时更新网络设置。
Netplan 的基本结构
Netplan 配置文件通常位于 /etc/netplan/ 目录下,使用 .yaml 扩展名。这些文件包含网络接口配置、IP 地址、DNS 服务器等信息。
下面是一个基本的 Netplan 配置示例:
network:
version: 2
renderer: networkd
ethernets:
enp3s0:
dhcp4: true
在该示例中,enp3s0 以太网接口被配置为通过 DHCP 获取 IP 地址。
Netplan 在 Ubuntu 18.04 LTS 及以后版本中的作用
Netplan 在 Ubuntu 18.04 LTS 及以后版本中默认安装,并广泛用于桌面和服务器环境的网络管理。在服务器环境中,往往需要多个网络接口或静态 IP 分配,Netplan 的灵活性因此显得尤为重要。
接下来,我们将通过实际案例来演示如何使用 Netplan 配置网络。
2. 基本的 Netplan 配置
Netplan 配置文件的位置
Netplan 配置文件通常存放在 /etc/netplan/ 目录下。通过编辑这些 .yaml 文件即可修改网络设置。常见的文件名如 50-cloud-init.yaml,但具体名称可能因环境而异。
要打开配置文件,可使用 vi、nano 等文本编辑器:
sudo vi /etc/netplan/50-cloud-init.yaml
动态 IP 地址配置(DHCP)
要通过 DHCP 自动获取 IP 地址,可使用以下 YAML 配置。这是最简洁的设置,常用于家庭和办公环境。
network:
version: 2
renderer: networkd
ethernets:
enp3s0:
dhcp4: true
静态 IP 地址配置
某些环境需要为服务器或特定设备分配静态 IP 地址。下面的示例演示了如何配置静态 IP。
network:
version: 2
renderer: networkd
ethernets:
enp3s0:
addresses:
- 192.168.1.100/24
gateway4: 192.168.1.1
nameservers:
addresses:
- 8.8.8.8
- 8.8.4.4
应用配置
编辑完配置文件后,使用以下命令应用 Netplan 配置:
sudo netplan apply
验证配置
要确认 Netplan 设置是否已成功生效,可使用以下命令检查网络接口状态:
ip a
3. 配置多个网络接口
多以太网接口配置
拥有多个网络接口的设备可以为每个接口分配不同的设置。下面的示例配置了两个以太网接口:
network:
version: 2
renderer: networkd
ethernets:
enp3s0:
dhcp4: true
enp4s0:
addresses:
- 192.168.1.150/24
gateway4: 192.168.1.1
nameservers:
addresses:
- 8.8.8.8
- 8.8.4.4
绑定冗余
Bonding 将多个网络接口合并为一个虚拟接口,提供冗余并提升可用性。下面的示例创建了一个名为 bond0 的绑定接口:
network:
version: 2
renderer: networkd
bonds:
bond0:
interfaces:
- enp3s0
- enp4s0
addresses:
- 192.168.1.200/24
gateway4: 192.168.1.1
nameservers:
addresses:
- 8.8.8.8
- 8.8.4.4
parameters:
mode: active-backup
primary: enp3s0
Wi‑Fi 配置
Netplan 也支持 Wi‑Fi 配置。以下示例连接到指定的 SSID:
network:
version: 2
renderer: networkd
wifis:
wlp2s0:
access-points:
"my_wifi_network":
password: "password1234"
dhcp4: true
VLAN 配置
虚拟局域网(VLAN)可以对网络进行逻辑分段。下面的示例在 enp3s0 上创建一个 VLAN:
network:
version: 2
renderer: networkd
ethernets:
enp3s0:
dhcp4: true
vlans:
vlan10:
id: 10
link: enp3s0
addresses:
- 192.168.10.1/24

4. 高级 Netplan 配置
静态路由配置
在通过多个路由器连接网络时,需要使用静态路由。下面的示例指定了访问特定网络的路由:
network:
version: 2
renderer: networkd
ethernets:
enp3s0:
addresses:
- 192.168.1.100/24
routes:
- to: 10.0.0.0/24
via: 192.168.1.1
此配置为 10.0.0.0/24 网络设置了一条通过默认网关 192.168.1.1 的静态路由。
多默认网关
Netplan 允许为每个接口设置不同的默认网关。这在通过不同网络段访问互联网时非常有用:
network:
version: 2
renderer: networkd
ethernets:
enp3s0:
addresses:
- 192.168.1.100/24
gateway4: 192.168.1.1
enp4s0:
addresses:
- 10.0.0.100/24
gateway4: 10.0.0.1
DNS 服务器配置
下面的示例指定了 Google 公共 DNS 服务器:
network:
version: 2
renderer: networkd
ethernets:
enp3s0:
addresses:
- 192.168.1.100/24
nameservers:
addresses:
- 8.8.8.8
- 8.8.4.4
高级绑定配置
可以更改绑定模式以实现不同的行为。下面的示例配置了轮询(round‑robin)绑定:
network:
version: 2
renderer: networkd
bonds:
bond0:
interfaces:
- enp3s0
- enp4s0
addresses:
- 192.168.1.200/24
gateway4: 192.168.1.1
nameservers:
addresses:
- 8.8.8.8
- 8.8.4.4
parameters:
mode: balance-rr
balance-rr 模式在两个接口之间交替流量,通过带宽分配提升性能。
高级 VLAN 配置
VLAN 在大规模网络中用于逻辑划分环境。下面的示例分配了 VLAN ID 100:
network:
version: 2
renderer: networkd
ethernets:
enp3s0:
dhcp4: true
vlans:
vlan100:
id: 100
link: enp3s0
addresses:
- 192.168.100.1/24
此操作将 VLAN ID 100 分配给 enp3s0 接口,创建了一个分段的虚拟网络。
5. Netplan 故障排除
虽然 Netplan 使用方便,但配置错误或系统限制可能导致问题。本节说明常见问题及其解决方案。
常见 Netplan 问题及原因
1. 配置未生效
- YAML 缩进错误:YAML 对缩进非常严格。错误的空格会导致解析失败。
- 接口名称错误:确保接口名称与
ip a命令的输出相匹配。
解决方案
- 保存配置文件后运行
netplan apply。 - 使用
sudo netplan try在永久应用更改之前进行测试。sudo netplan applysudo netplan try
2. 网络连接错误
- 网关或 DNS 设置错误:核实 IP 地址和 DNS 配置。
- 物理接口问题:检查网线和硬件。
解决方案
- 使用
ping命令测试连通性:ping 8.8.8.8
- 重新应用网络配置并重启服务:
sudo systemctl restart networkd
3. netplan apply 时的错误信息
当配置错误或接口未被识别时会出现错误。
- 示例错误信息:
Error in network configuration: failed to bring up device enp3s0
使用 ip a 验证正确的接口名称。
解决方案
检查缩进、拼写、接口名称以及 IP 地址的正确性。
检查日志
系统日志对故障排除非常有帮助。使用下面的命令查看与网络相关的日志:
journalctl -u systemd-networkd
该命令会显示详细信息,帮助解决配置错误。
6. 总结与后续步骤
使用 Netplan 可以简洁高效地管理 Ubuntu 的网络设置。以下是摘要以及进一步探索的建议步骤。
Netplan 的主要优势
- 直观的 YAML 配置:易于阅读和修改。
- 灵活的网络设计:支持多接口、绑定、路由和 VLAN。
- 统一的接口:兼容
systemd-networkd和NetworkManager。 - 实时更新:只需一条命令即可立即应用更改。
推荐的后续步骤
- 虚拟网络设计:使用多个 VLAN 对网络进行逻辑分段。
- IPv6 配置:为现代网络基础设施做好准备。
- 自动化脚本:使用 Ansible 或 Puppet 自动化配置。
- 安全增强:加强防火墙和访问控制设置。
