From 55fe0a000375f4f0586cbb10216b27a9d7ce925d Mon Sep 17 00:00:00 2001
From: pd12 <33011786+pd12bb@users.noreply.github.com>
Date: Mon, 4 May 2026 16:59:48 +0800
Subject: [PATCH 1/5] network/config: Add netplan examples
---
docs/images/netplan_design_overview.svg | 53 ++++
docs/ops/network/config.md | 352 ++++++++++++++++++++++++
includes/authors.md | 1 +
3 files changed, 406 insertions(+)
create mode 100644 docs/images/netplan_design_overview.svg
diff --git a/docs/images/netplan_design_overview.svg b/docs/images/netplan_design_overview.svg
new file mode 100644
index 000000000..7428593b3
--- /dev/null
+++ b/docs/images/netplan_design_overview.svg
@@ -0,0 +1,53 @@
+
+
\ No newline at end of file
diff --git a/docs/ops/network/config.md b/docs/ops/network/config.md
index c5e2da160..128078f3c 100644
--- a/docs/ops/network/config.md
+++ b/docs/ops/network/config.md
@@ -4,6 +4,10 @@ icon: material/file-code-outline
# 网络配置管理
+!!! note "主要作者"
+
+ [@Pd12][Pd12]
+
!!! warning "本文编写中"
## ifupdown
@@ -13,3 +17,351 @@ icon: material/file-code-outline
## systemd-networkd
## Netplan
+
+Netplan 是 Canonical(Ubuntu 母公司)开发的一个网络配置抽象渲染器,常见于 Ubuntu 系统中。该程序可以将复杂的网络配置集中于一个或若干个 YAML 格式的文件(通常位于 /etc/netplan/ )中,在系统启动时生成不同网络配置后端配置(目前有 NetworkManager 与 Systemd-networkd),起到简化网络配置的用途。其工作原理如下图所示:
+
+
+
+这边只介绍该工具的常用命令与常见网络环境下的单文件配置,详细的文件可以参见 [Netplan 文档](https://netplan.io/)。
+
+??? note "与 NetworkManager 和 Systemd-networkd 比较"
+
+ 编者同时使用过 NetworkManager,Systemd-networkd,Netplan 三者,根据个人经验给出一些比较。
+
+ 简单网络环境下(例如只是配置个固定 IP),使用哪种都差不多,一般系统默认安装哪个就用哪个。
+
+ 在易用性上,NetworkManager 完胜,该软件带有的 `nmtui` 工具可以使用图形界面配置网络,无需编写配置文件。如果需要使用 Systemd-networkd 提供的更多功能(例如在接口上启用 DHCP 服务器这种),请直接编写 Systemd-networkd 配置,缺点是需要编写大量配置文件(一般一个网络接口需要提供 .network .netdev 两个文件)。而 Netplan 则对配置文件进行了简化处理,一般只需要一个配置文件即可。
+
+
+由于后续会涉及到配置样例,这边先做如下约定:
+
+1. `/etc/netplan/` 中只有单个配置文件(需要以 `.yaml` 为后缀)。
+2. 假定计算机中存在 2 个有线接口,其名称为 `eth0` 与 `eth1`,存在一个无线接口,其名称为 `wlan0` 。应用到实际的配置中,需要修改为实际存在的接口(可以使用 `ip link` 命令查看)。
+3. 连接的网络为 `192.168.0.0/24` 网关为 `192.168.0.1`。
+
+### 常用命令 {#netplan-command}
+
+Netplan 的常用命令不多,只有 2 个:
+
+```shell
+netplan try # 应用配置并等待用户确认,用户未确认则回滚
+netplan apply # 应用配置
+```
+
+大多数情况下(尤其是使用 ssh 远程修改网络配置时)建议使用 `netplan try` ,避免因为错误的网络配置导致 ssh 断开后失去远程访问。
+
+### 改用 NetworkManager 管理网络 {#netplan-using-networkmanager}
+
+如果希望 Netplan 将网络配置交由 NetworkManager 管理,只需要修改配置如下,应用配置即可:
+
+```yaml
+network:
+ version: 2
+ renderer: NetworkManager
+```
+
+### 有线网络使用 DHCP {#netplan-dhcp}
+
+在 eth0 接口使用 DHCP,使用如下配置:
+
+```yaml
+network:
+ version: 2 # 配置文件的版本 目前默认为 2
+ renderer: networkd # 使用的后端,推荐使用 networkd
+ ethernets:
+ eth0:
+ dhcp4: true
+```
+
+### 有线网络使用固定 IP 并配置 DNS 与默认路由 {#netplan-static-ip}
+
+在 eth0 接口使用固定 IP 并配置 DNS 与默认路由,使用如下配置:
+
+```yaml
+network:
+ version: 2
+ renderer: networkd
+ ethernets:
+ eth0:
+ dhcp4: false # 不使用 DHCP
+ addresses:
+ - 192.168.0.100/24 # 主机的 IP 此处要带上子网前缀长度
+ routes: # 配置默认路由
+ - to: default # 此处可以改为 0.0.0.0/0
+ via: 192.168.0.1
+ # 可以追加更多的路由条目
+ nameservers:
+ addresses: # 可以配置多个 DNS 服务器
+ - 192.168.0.1 # 大多数路由器都会提供 DNS 服务
+ - 119.29.29.29 # 这边使用腾讯 DNSPod 提供的 更多常用 DNS 服务可以参见 https://dns.icoa.cn/
+```
+
+### 连接到无线网络 {#netplan-wlan}
+
+使用 wlan0 接口连接到开放的无线网络 `MyWifi`,使用 DHCP 配置地址,配置样例如下:
+
+```yaml
+network:
+ version: 2
+ renderer: networkd
+ wifis:
+ wlan0:
+ dhcp4: true
+ access-points:
+ "MyWifi": {} # 只需要定义网络名称
+```
+
+如果网络有密码保护,配置样例如下:
+
+```yaml
+network:
+ version: 2
+ renderer: networkd
+ wifis:
+ wlan0:
+ dhcp4: true
+ access-points:
+ "MyWifi":
+ password: "mypassword" # 这边替换为网络密码
+```
+
+如果网络为双频网络(即 2.4GHz 和 5GHz 共用一个 SSID),你希望连接到 5GHz 的网络,可以使用如下配置:
+
+```yaml
+network:
+ version: 2
+ renderer: networkd
+ wifis:
+ wlan0:
+ dhcp4: true
+ access-points:
+ "MyWifi":
+ band: 5GHz # 指定使用 5GHz
+```
+
+使用静态地址的配置和有线网络接口类似,这边不再举例。
+
+### 配置 IPv6 {#netplan-ipv6}
+
+#### 内核参数检查 {#netplan-ipv6-check}
+
+默认情况下,操作系统都默认启用了 IPv6 支持,可以通过 `sysctl -a | grep disable_ipv6` 命令查看当前系统内核参数,如果出现例如 `net.ipv6.conf.all.disable_ipv6 = 0` 或者 `net.ipv6.conf.eth0.disable_ipv6 = 0` (这里 eth0 是网络接口名称)则已经启用。如果值为 1,则需要编辑文件 `/etc/sysctl.conf` 或在目录 `/etc/sysctl.d/` 中修改或追加上述参数为 0,随后重启系统应用参数。
+
+#### 使用 SLAAC(无状态地址自动配置)自动配置地址 {#netplan-ipv6-slaac}
+
+该方式常见于家庭网络、企业网络和部分校园网络中,由路由器提供网络前缀(通常为前 64 位),主机使用不同的方式(例如随机值或是网络设备的 MAC 地址)生成接口标识(后 64 位)组合成 IPv6 地址。
+
+大多数情况下,该模式默认为启用状态无需配置,当然也可以手动启用,下面给出在 eth0 接口使用静态 IPv4 地址和通过 SLAAC 模式获取 IPv6 地址的样例,该配置组合常见于家庭网络中。
+
+```yaml
+network:
+ version: 2
+ renderer: networkd
+ ethernets:
+ eth0:
+ dhcp4: false # 不使用 DHCP
+ dhcp6: false # 不使用 DHCP 获取 IPv6
+ accept-ra: true # 通过 Router Advertisement 报文获取 IPv6 地址
+ addresses:
+ - 192.168.0.100/24 # 主机的 IP 此处要带上子网前缀长度
+ routes: # 配置默认路由
+ - to: default
+ via: 192.168.0.1
+ # 注 IPv6 的默认路由会通过 Router Advertisement 报文发送,无需额外配置
+ nameservers:
+ addresses: # 可以配置多个 DNS 服务器
+ - 192.168.0.1 # 大多数路由器都会提供 DNS 服务
+ - 119.29.29.29 # 这边使用腾讯 DNSPod 提供的 更多常用 DNS 服务可以参见 https://dns.icoa.cn/
+ - 2402:4e00:: # 可以配置一个 IPv6 的 DNS 服务器 这边使用腾讯 DNSPod 提供的
+```
+
+#### 使用 DHCPv6 获取 IPv6 地址 {#netplan-ipv6-dhcpv6}
+
+该方式常见于校园网络中,Router Advertisement 报文提供默认路由,地址通过 DHCPv6 分配。配置样例如下:
+
+```yaml
+network:
+ version: 2
+ renderer: networkd
+ ethernets:
+ eth0:
+ dhcp4: false # 不使用 DHCP
+ dhcp6: true # 这边改成 true
+ accept-ra: true # 接受 Router Advertisement 报文
+ addresses:
+ - 192.168.0.100/24 # 主机的 IP 此处要带上子网前缀长度
+ routes: # 配置默认路由
+ - to: default
+ via: 192.168.0.1
+ # 注 IPv6 的默认路由会通过 Router Advertisement 报文发送,无需额外配置
+ nameservers:
+ addresses: # 可以配置多个 DNS 服务器
+ - 192.168.0.1 # 大多数路由器都会提供 DNS 服务
+ - 119.29.29.29 # 这边使用腾讯 DNSPod 提供的 更多常用 DNS 服务可以参见 https://dns.icoa.cn/
+ - 2402:4e00:: # 可以配置一个 IPv6 的 DNS 服务器 这边使用腾讯 DNSPod 提供的
+```
+
+如果不清楚自己的网络是使用何种方式分发的 IPv6 地址,建议先按照 SLAAC 模式配置,无法获取再尝试使用 DHCPv6 获取。
+
+#### 使用固定 IPv6 地址 {#netplan-ipv6-static}
+
+IPv6 配置固定地址与 IPv4 类似,样例如下:
+
+```yaml
+network:
+ version: 2
+ renderer: networkd
+ ethernets:
+ eth0:
+ dhcp4: false # 不使用 DHCP
+ dhcp6: false # 不使用 DHCP
+ accept-ra: false # 不接受 Router Advertisement 报文
+ addresses:
+ - 192.168.0.100/24 # 主机的 IP 此处要带上子网前缀长度
+ - fda5:ebe7:7078:ad26::2/64 # 这边使用了私有 IPv6 范围的地址,可以访问 https://simpledns.plus/private-ipv6 获得
+ routes: # 配置默认路由
+ - to: default
+ via: 192.168.0.1
+ - to: default
+ via: fe80::1daa:eaff:fe73:b2d2 # IPv6 的默认路由通常使用路由器的链路本地地址 当然也可以像 IPv4 一样使用同网段的 fda5:ebe7:7078:ad26::1
+ nameservers:
+ addresses: # 可以配置多个 DNS 服务器
+ - 192.168.0.1 # 大多数路由器都会提供 DNS 服务
+ - 119.29.29.29 # 这边使用腾讯 DNSPod 提供的 更多常用 DNS 服务可以参见 https://dns.icoa.cn/
+ - 2402:4e00:: # 可以配置一个 IPv6 的 DNS 服务器 这边使用腾讯 DNSPod 提供的
+```
+
+??? note "何时使用静态 IPv6 地址"
+
+ 大多数情况下 IPv6 都使用动态方式分配地址,很少使用静态 IPv6 地址。编者唯一使用过的情况是校园网中使用路由器架设宿舍网络,由于学校的网络需要登陆使用,只能使用一个 IPv6 地址,故不得不采取 NAT 的形式在宿舍网络中使用 IPv6 网络。
+
+### 创建网桥 {#netplan-bridge}
+
+假设需要创建网桥 br0 用于桥接接口 eth0 与 eth1,样例配置如下:
+
+```yaml
+network:
+ version: 2
+ renderer: networkd
+ ethernets:
+ eth0: # 作为网桥的端口使用时,不需要获取地址
+ dhcp4: false
+ dhcp6: false
+ accept-ra: false
+ eth1:
+ dhcp4: false
+ dhcp6: false
+ accept-ra: false
+ bridges:
+ br0:
+ interfaces: # 此处声明网桥的接口
+ - eth0
+ - eth1
+ dhcp4: false
+ # 不需要 IPv6 的,可以设置 dhcp6 accept-ra 为 false
+ dhcp6: false
+ accept-ra: true
+ addresses:
+ - 192.168.0.100/24 # 主机的 IP 此处要带上子网前缀长度
+ routes: # 配置默认路由
+ - to: default
+ via: 192.168.0.1
+ nameservers:
+ addresses: # 可以配置多个 DNS 服务器
+ - 192.168.0.1 # 大多数路由器都会提供 DNS 服务
+ - 119.29.29.29 # 这边使用腾讯 DNSPod 提供的 更多常用 DNS 服务可以参见 https://dns.icoa.cn/
+ - 2402:4e00:: # 可以配置一个 IPv6 的 DNS 服务器 这边使用腾讯 DNSPod 提供的
+```
+
+??? note "无线网络与网桥"
+
+ 注意,大多数情况下 wlan 接口作为客户端运行时无法作为网桥的子接口(AP 模式可以)。如果的确需要多设备接入无线网络,建议使用 网桥+NAT 实现。
+
+### 接入 VLAN {#netplan-vlan}
+
+假设接口 eth0 作为 Trunk 接口使用,需要接入 VLAN 2-3,配置样例如下:
+
+```yaml
+network:
+ version: 2
+ renderer: networkd
+ ethernets:
+ eth0: # 此处配置未带 VLAN 标签的网络参数
+ dhcp4: false # 不使用 DHCP
+ addresses:
+ - 192.168.0.100/24 # 主机的 IP 此处要带上子网前缀长度
+ routes: # 配置默认路由
+ - to: default
+ via: 192.168.0.1
+ nameservers:
+ addresses: # 可以配置多个 DNS 服务器
+ - 192.168.0.1 # 大多数路由器都会提供 DNS 服务
+ - 119.29.29.29 # 这边使用腾讯 DNSPod 提供的 更多常用 DNS 服务可以参见 https://dns.icoa.cn/
+ vlans:
+ eth0.2: # 此处的名称可以自定义,这边使用惯例 [母接口名称].[VLAN ID] 的命名方式
+ id: 2 # 声明该接口的 VLAN ID
+ link: eth0 # 该接口的母接口
+ # 后续的配置和 eth0 一样,此处简化为使用 dhcp
+ dhcp4: true
+ eth0.3: # 再创建一个 VLAN ID 为 3 的接口
+ id: 3 # 声明该接口的 VLAN ID
+ link: eth0 # 该接口的母接口
+ # 后续的配置和 eth0 一样,此处简化为使用 dhcp
+ dhcp4: true
+```
+
+### VLAN 接入网桥 {#netplan-vlan-bridge}
+
+假设接口 eth0 作为 Trunk 接口使用,需要接入 VLAN 2-3 并接入各自的网桥,配置样例如下:
+
+```yaml
+network:
+ version: 2
+ renderer: networkd
+ ethernets:
+ eth0: # 作为网桥的端口使用时,不需要获取地址
+ dhcp4: false
+ dhcp6: false
+ accept-ra: false
+ vlans: # 先声明 VLAN 后,再将 VLAN 接口接入网桥
+ eth0.2: # 此处的名称可以自定义,这边使用惯例 [母接口名称].[VLAN ID] 的命名方式
+ id: 2 # 声明该接口的 VLAN ID
+ link: eth0 # 该接口的母接口
+ dhcp4: false
+ dhcp6: false
+ accept-ra: false
+ eth0.3: # 再创建一个 VLAN ID 为 3 的接口
+ id: 3 # 声明该接口的 VLAN ID
+ link: eth0 # 该接口的母接口
+ dhcp4: false
+ dhcp6: false
+ accept-ra: false
+ bridges:
+ br0:
+ interfaces: # 此处声明网桥的接口
+ - eth0
+ dhcp4: false
+ # 不需要 IPv6 的,可以设置 dhcp6 accept-ra 为 false
+ dhcp6: false
+ accept-ra: true
+ addresses:
+ - 192.168.0.100/24 # 主机的 IP 此处要带上子网前缀长度
+ routes: # 配置默认路由
+ - to: default
+ via: 192.168.0.1
+ nameservers:
+ addresses: # 可以配置多个 DNS 服务器
+ - 192.168.0.1 # 大多数路由器都会提供 DNS 服务
+ - 119.29.29.29 # 这边使用腾讯 DNSPod 提供的 更多常用 DNS 服务可以参见 https://dns.icoa.cn/
+ - 2402:4e00:: # 可以配置一个 IPv6 的 DNS 服务器 这边使用腾讯 DNSPod 提供的
+ br2:
+ interfaces: # 此处声明网桥的接口
+ - eth0.2
+ # 后续的配置简化为使用 dhcp
+ dhcp4: true
+ br3:
+ interfaces: # 此处声明网桥的接口
+ - eth0.3
+ # 后续的配置简化为使用 dhcp
+ dhcp4: true
+```
diff --git a/includes/authors.md b/includes/authors.md
index 96e73da90..d6ee020c7 100644
--- a/includes/authors.md
+++ b/includes/authors.md
@@ -26,3 +26,4 @@
[Jerry-Kwan]: https://github.com/Jerry-Kwan
[Harry-Chen]: https://github.com/Harry-Chen
[Vertsineu]: https://github.com/Vertsineu
+[Pd12]: https://github.com/pd12bb
From be4df2afa5097c4dd67718e2c6e836743a303e53 Mon Sep 17 00:00:00 2001
From: "autofix-ci[bot]" <114827586+autofix-ci[bot]@users.noreply.github.com>
Date: Mon, 4 May 2026 09:05:33 +0000
Subject: [PATCH 2/5] [autofix.ci] apply automated fixes
---
docs/ops/network/config.md | 1 -
1 file changed, 1 deletion(-)
diff --git a/docs/ops/network/config.md b/docs/ops/network/config.md
index 128078f3c..a41eb1206 100644
--- a/docs/ops/network/config.md
+++ b/docs/ops/network/config.md
@@ -31,7 +31,6 @@ Netplan 是 Canonical(Ubuntu 母公司)开发的一个网络配置抽象渲
简单网络环境下(例如只是配置个固定 IP),使用哪种都差不多,一般系统默认安装哪个就用哪个。
在易用性上,NetworkManager 完胜,该软件带有的 `nmtui` 工具可以使用图形界面配置网络,无需编写配置文件。如果需要使用 Systemd-networkd 提供的更多功能(例如在接口上启用 DHCP 服务器这种),请直接编写 Systemd-networkd 配置,缺点是需要编写大量配置文件(一般一个网络接口需要提供 .network .netdev 两个文件)。而 Netplan 则对配置文件进行了简化处理,一般只需要一个配置文件即可。
-
由于后续会涉及到配置样例,这边先做如下约定:
From 8fabab43066ff33171baab677a2ffee799ff5500 Mon Sep 17 00:00:00 2001
From: pd12 <33011786+pd12bb@users.noreply.github.com>
Date: Mon, 4 May 2026 18:28:07 +0800
Subject: [PATCH 3/5] network/config: Fix comment issue
---
docs/ops/network/config.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/docs/ops/network/config.md b/docs/ops/network/config.md
index a41eb1206..9b4234d73 100644
--- a/docs/ops/network/config.md
+++ b/docs/ops/network/config.md
@@ -24,7 +24,7 @@ Netplan 是 Canonical(Ubuntu 母公司)开发的一个网络配置抽象渲
这边只介绍该工具的常用命令与常见网络环境下的单文件配置,详细的文件可以参见 [Netplan 文档](https://netplan.io/)。
-??? note "与 NetworkManager 和 Systemd-networkd 比较"
+!!! comment "@Pd12: 与 NetworkManager 和 Systemd-networkd 比较"
编者同时使用过 NetworkManager,Systemd-networkd,Netplan 三者,根据个人经验给出一些比较。
From f5d3ed5ecd9eb7e27004b11111b8f17c15ab82a8 Mon Sep 17 00:00:00 2001
From: pd12 <33011786+pd12bb@users.noreply.github.com>
Date: Tue, 5 May 2026 10:28:13 +0800
Subject: [PATCH 4/5] network/config: Fix comment issue
---
docs/ops/network/config.md | 73 +++++++++++++++++++-------------------
1 file changed, 36 insertions(+), 37 deletions(-)
diff --git a/docs/ops/network/config.md b/docs/ops/network/config.md
index 9b4234d73..6449e3eee 100644
--- a/docs/ops/network/config.md
+++ b/docs/ops/network/config.md
@@ -18,10 +18,14 @@ icon: material/file-code-outline
## Netplan
-Netplan 是 Canonical(Ubuntu 母公司)开发的一个网络配置抽象渲染器,常见于 Ubuntu 系统中。该程序可以将复杂的网络配置集中于一个或若干个 YAML 格式的文件(通常位于 /etc/netplan/ )中,在系统启动时生成不同网络配置后端配置(目前有 NetworkManager 与 Systemd-networkd),起到简化网络配置的用途。其工作原理如下图所示:
+Netplan 是 Canonical(Ubuntu 母公司)开发的一个网络配置抽象渲染器,常见于 Ubuntu 系统中。该程序可以将复杂的网络配置集中于一个或若干个 YAML 格式的文件(通常位于 `/etc/netplan/` )中,在系统启动时生成不同网络配置后端配置(目前有 NetworkManager 与 Systemd-networkd),起到简化网络配置的用途。其工作原理如下图所示:

+/// caption
+图片来自 [Netplan](https://netplan.io/) 首页
+///
+
这边只介绍该工具的常用命令与常见网络环境下的单文件配置,详细的文件可以参见 [Netplan 文档](https://netplan.io/)。
!!! comment "@Pd12: 与 NetworkManager 和 Systemd-networkd 比较"
@@ -35,7 +39,7 @@ Netplan 是 Canonical(Ubuntu 母公司)开发的一个网络配置抽象渲
由于后续会涉及到配置样例,这边先做如下约定:
1. `/etc/netplan/` 中只有单个配置文件(需要以 `.yaml` 为后缀)。
-2. 假定计算机中存在 2 个有线接口,其名称为 `eth0` 与 `eth1`,存在一个无线接口,其名称为 `wlan0` 。应用到实际的配置中,需要修改为实际存在的接口(可以使用 `ip link` 命令查看)。
+2. 假定计算机中存在 2 个有线接口,其名称为 `eth0` 与 `eth1`,存在一个无线接口,其名称为 `wlan0`。应用到实际的配置中,需要修改为实际存在的接口(可以使用 `ip link` 命令查看)。
3. 连接的网络为 `192.168.0.0/24` 网关为 `192.168.0.1`。
### 常用命令 {#netplan-command}
@@ -51,7 +55,7 @@ netplan apply # 应用配置
### 改用 NetworkManager 管理网络 {#netplan-using-networkmanager}
-如果希望 Netplan 将网络配置交由 NetworkManager 管理,只需要修改配置如下,应用配置即可:
+如果希望 Netplan 将网络配置交由 NetworkManager 管理(该配置为 Netplan 在主流桌面发行版中的默认配置),只需要修改配置如下,应用配置即可:
```yaml
network:
@@ -90,11 +94,14 @@ network:
via: 192.168.0.1
# 可以追加更多的路由条目
nameservers:
- addresses: # 可以配置多个 DNS 服务器
- - 192.168.0.1 # 大多数路由器都会提供 DNS 服务
- - 119.29.29.29 # 这边使用腾讯 DNSPod 提供的 更多常用 DNS 服务可以参见 https://dns.icoa.cn/
+ addresses:
+ - 192.168.0.1
```
+!!! note "DNS 服务器的选择"
+
+ 一般来说,DNS 服务器应选择网络提供商分配的即可。出于备份或是隐私的考虑可以使用公共 DNS,可参见 [DNS章节](../network-service/dns.md#client)。
+
### 连接到无线网络 {#netplan-wlan}
使用 wlan0 接口连接到开放的无线网络 `MyWifi`,使用 DHCP 配置地址,配置样例如下:
@@ -144,7 +151,7 @@ network:
#### 内核参数检查 {#netplan-ipv6-check}
-默认情况下,操作系统都默认启用了 IPv6 支持,可以通过 `sysctl -a | grep disable_ipv6` 命令查看当前系统内核参数,如果出现例如 `net.ipv6.conf.all.disable_ipv6 = 0` 或者 `net.ipv6.conf.eth0.disable_ipv6 = 0` (这里 eth0 是网络接口名称)则已经启用。如果值为 1,则需要编辑文件 `/etc/sysctl.conf` 或在目录 `/etc/sysctl.d/` 中修改或追加上述参数为 0,随后重启系统应用参数。
+默认情况下,操作系统都默认启用了 IPv6 支持,可以通过 `sysctl -a | grep disable_ipv6` 命令查看当前系统内核参数,如果出现例如 `net.ipv6.conf.all.disable_ipv6 = 0` 或者 `net.ipv6.conf.eth0.disable_ipv6 = 0` (这里 eth0 是网络接口名称)则已经启用。如果值为 1,则需要在目录 `/etc/sysctl.d/` 中的 `.conf` 文件修改或追加上述参数为 0,随后重启系统应用参数。
#### 使用 SLAAC(无状态地址自动配置)自动配置地址 {#netplan-ipv6-slaac}
@@ -168,12 +175,14 @@ network:
via: 192.168.0.1
# 注 IPv6 的默认路由会通过 Router Advertisement 报文发送,无需额外配置
nameservers:
- addresses: # 可以配置多个 DNS 服务器
- - 192.168.0.1 # 大多数路由器都会提供 DNS 服务
- - 119.29.29.29 # 这边使用腾讯 DNSPod 提供的 更多常用 DNS 服务可以参见 https://dns.icoa.cn/
- - 2402:4e00:: # 可以配置一个 IPv6 的 DNS 服务器 这边使用腾讯 DNSPod 提供的
+ addresses:
+ - 192.168.0.1
```
+!!! note "IPv6 下的 DNS 服务器"
+
+ 在使用了 SLAAC 或 DHCPv6 分配地址的网络下,一般也会通过 Router Advertisement 报文或 DHCP 报文下发 IPv6地址的 DNS 服务器。在双栈网络中,IPv6 地址的 DNS 服务器不是必须的,通过 IPv4 的 DNS 服务器也可以解析出域名的 IPv6 地址。
+
#### 使用 DHCPv6 获取 IPv6 地址 {#netplan-ipv6-dhcpv6}
该方式常见于校园网络中,Router Advertisement 报文提供默认路由,地址通过 DHCPv6 分配。配置样例如下:
@@ -194,10 +203,8 @@ network:
via: 192.168.0.1
# 注 IPv6 的默认路由会通过 Router Advertisement 报文发送,无需额外配置
nameservers:
- addresses: # 可以配置多个 DNS 服务器
+ addresses:
- 192.168.0.1 # 大多数路由器都会提供 DNS 服务
- - 119.29.29.29 # 这边使用腾讯 DNSPod 提供的 更多常用 DNS 服务可以参见 https://dns.icoa.cn/
- - 2402:4e00:: # 可以配置一个 IPv6 的 DNS 服务器 这边使用腾讯 DNSPod 提供的
```
如果不清楚自己的网络是使用何种方式分发的 IPv6 地址,建议先按照 SLAAC 模式配置,无法获取再尝试使用 DHCPv6 获取。
@@ -224,13 +231,11 @@ network:
- to: default
via: fe80::1daa:eaff:fe73:b2d2 # IPv6 的默认路由通常使用路由器的链路本地地址 当然也可以像 IPv4 一样使用同网段的 fda5:ebe7:7078:ad26::1
nameservers:
- addresses: # 可以配置多个 DNS 服务器
- - 192.168.0.1 # 大多数路由器都会提供 DNS 服务
- - 119.29.29.29 # 这边使用腾讯 DNSPod 提供的 更多常用 DNS 服务可以参见 https://dns.icoa.cn/
- - 2402:4e00:: # 可以配置一个 IPv6 的 DNS 服务器 这边使用腾讯 DNSPod 提供的
+ addresses:
+ - 192.168.0.1
```
-??? note "何时使用静态 IPv6 地址"
+!!! comment "@Pd12: 何时使用静态 IPv6 地址"
大多数情况下 IPv6 都使用动态方式分配地址,很少使用静态 IPv6 地址。编者唯一使用过的情况是校园网中使用路由器架设宿舍网络,由于学校的网络需要登陆使用,只能使用一个 IPv6 地址,故不得不采取 NAT 的形式在宿舍网络中使用 IPv6 网络。
@@ -266,10 +271,8 @@ network:
- to: default
via: 192.168.0.1
nameservers:
- addresses: # 可以配置多个 DNS 服务器
- - 192.168.0.1 # 大多数路由器都会提供 DNS 服务
- - 119.29.29.29 # 这边使用腾讯 DNSPod 提供的 更多常用 DNS 服务可以参见 https://dns.icoa.cn/
- - 2402:4e00:: # 可以配置一个 IPv6 的 DNS 服务器 这边使用腾讯 DNSPod 提供的
+ addresses:
+ - 192.168.0.1
```
??? note "无线网络与网桥"
@@ -293,9 +296,8 @@ network:
- to: default
via: 192.168.0.1
nameservers:
- addresses: # 可以配置多个 DNS 服务器
- - 192.168.0.1 # 大多数路由器都会提供 DNS 服务
- - 119.29.29.29 # 这边使用腾讯 DNSPod 提供的 更多常用 DNS 服务可以参见 https://dns.icoa.cn/
+ addresses:
+ - 192.168.0.1
vlans:
eth0.2: # 此处的名称可以自定义,这边使用惯例 [母接口名称].[VLAN ID] 的命名方式
id: 2 # 声明该接口的 VLAN ID
@@ -323,15 +325,15 @@ network:
dhcp6: false
accept-ra: false
vlans: # 先声明 VLAN 后,再将 VLAN 接口接入网桥
- eth0.2: # 此处的名称可以自定义,这边使用惯例 [母接口名称].[VLAN ID] 的命名方式
- id: 2 # 声明该接口的 VLAN ID
- link: eth0 # 该接口的母接口
+ eth0.2:
+ id: 2
+ link: eth0
dhcp4: false
dhcp6: false
accept-ra: false
- eth0.3: # 再创建一个 VLAN ID 为 3 的接口
- id: 3 # 声明该接口的 VLAN ID
- link: eth0 # 该接口的母接口
+ eth0.3:
+ id: 3
+ link: eth0
dhcp4: false
dhcp6: false
accept-ra: false
@@ -349,18 +351,15 @@ network:
- to: default
via: 192.168.0.1
nameservers:
- addresses: # 可以配置多个 DNS 服务器
+ addresses:
- 192.168.0.1 # 大多数路由器都会提供 DNS 服务
- - 119.29.29.29 # 这边使用腾讯 DNSPod 提供的 更多常用 DNS 服务可以参见 https://dns.icoa.cn/
- - 2402:4e00:: # 可以配置一个 IPv6 的 DNS 服务器 这边使用腾讯 DNSPod 提供的
br2:
interfaces: # 此处声明网桥的接口
- eth0.2
# 后续的配置简化为使用 dhcp
dhcp4: true
br3:
- interfaces: # 此处声明网桥的接口
+ interfaces:
- eth0.3
- # 后续的配置简化为使用 dhcp
dhcp4: true
```
From 2302deef2933e73a28bc103062705897bb10aae7 Mon Sep 17 00:00:00 2001
From: pd12 <33011786+pd12bb@users.noreply.github.com>
Date: Tue, 5 May 2026 14:50:31 +0800
Subject: [PATCH 5/5] network/config Apply suggestions from code review
Co-authored-by: taoky
---
docs/ops/network/config.md | 10 +++++-----
1 file changed, 5 insertions(+), 5 deletions(-)
diff --git a/docs/ops/network/config.md b/docs/ops/network/config.md
index 6449e3eee..e20439ab8 100644
--- a/docs/ops/network/config.md
+++ b/docs/ops/network/config.md
@@ -18,7 +18,7 @@ icon: material/file-code-outline
## Netplan
-Netplan 是 Canonical(Ubuntu 母公司)开发的一个网络配置抽象渲染器,常见于 Ubuntu 系统中。该程序可以将复杂的网络配置集中于一个或若干个 YAML 格式的文件(通常位于 `/etc/netplan/` )中,在系统启动时生成不同网络配置后端配置(目前有 NetworkManager 与 Systemd-networkd),起到简化网络配置的用途。其工作原理如下图所示:
+Netplan 是 Canonical(Ubuntu 母公司)开发的一个网络配置抽象渲染器,常见于 Ubuntu 系统中。该程序可以将复杂的网络配置集中于一个或若干个 YAML 格式的文件(通常位于 `/etc/netplan/`)中,在系统启动时生成不同网络配置后端配置(目前有 NetworkManager 与 Systemd-networkd),起到简化网络配置的用途。其工作原理如下图所示:

@@ -51,7 +51,7 @@ netplan try # 应用配置并等待用户确认,用户未确认则回滚
netplan apply # 应用配置
```
-大多数情况下(尤其是使用 ssh 远程修改网络配置时)建议使用 `netplan try` ,避免因为错误的网络配置导致 ssh 断开后失去远程访问。
+大多数情况下(尤其是使用 ssh 远程修改网络配置时)建议使用 `netplan try`,避免因为错误的网络配置导致 ssh 断开后失去远程访问。
### 改用 NetworkManager 管理网络 {#netplan-using-networkmanager}
@@ -100,7 +100,7 @@ network:
!!! note "DNS 服务器的选择"
- 一般来说,DNS 服务器应选择网络提供商分配的即可。出于备份或是隐私的考虑可以使用公共 DNS,可参见 [DNS章节](../network-service/dns.md#client)。
+ 一般来说,DNS 服务器应选择网络提供商分配的即可。出于备份或是隐私的考虑可以使用公共 DNS,可参见[网络服务实践的 DNS 章节](../network-service/dns.md#client)。
### 连接到无线网络 {#netplan-wlan}
@@ -151,7 +151,7 @@ network:
#### 内核参数检查 {#netplan-ipv6-check}
-默认情况下,操作系统都默认启用了 IPv6 支持,可以通过 `sysctl -a | grep disable_ipv6` 命令查看当前系统内核参数,如果出现例如 `net.ipv6.conf.all.disable_ipv6 = 0` 或者 `net.ipv6.conf.eth0.disable_ipv6 = 0` (这里 eth0 是网络接口名称)则已经启用。如果值为 1,则需要在目录 `/etc/sysctl.d/` 中的 `.conf` 文件修改或追加上述参数为 0,随后重启系统应用参数。
+默认情况下,操作系统都默认启用了 IPv6 支持,可以通过 `sysctl -a | grep disable_ipv6` 命令查看当前系统内核参数,如果出现例如 `net.ipv6.conf.all.disable_ipv6 = 0` 或者 `net.ipv6.conf.eth0.disable_ipv6 = 0`(这里 eth0 是网络接口名称)则已经启用。如果值为 1,则需要在目录 `/etc/sysctl.d/` 中的 `.conf` 文件修改或追加上述参数为 0,随后重启系统应用参数。
#### 使用 SLAAC(无状态地址自动配置)自动配置地址 {#netplan-ipv6-slaac}
@@ -181,7 +181,7 @@ network:
!!! note "IPv6 下的 DNS 服务器"
- 在使用了 SLAAC 或 DHCPv6 分配地址的网络下,一般也会通过 Router Advertisement 报文或 DHCP 报文下发 IPv6地址的 DNS 服务器。在双栈网络中,IPv6 地址的 DNS 服务器不是必须的,通过 IPv4 的 DNS 服务器也可以解析出域名的 IPv6 地址。
+ 在使用了 SLAAC 或 DHCPv6 分配地址的网络下,一般也会通过 Router Advertisement 报文或 DHCP 报文下发 IPv6 地址的 DNS 服务器。在双栈网络中,IPv6 地址的 DNS 服务器不是必须的,通过 IPv4 的 DNS 服务器也可以解析出域名的 IPv6 地址。
#### 使用 DHCPv6 获取 IPv6 地址 {#netplan-ipv6-dhcpv6}