我对 Netplan 配置有一些疑问,但找不到任何相关信息:
我发现为了表示 IP 地址,您必须使用关键字
addresses
。配置接口 (
enp3s0
) 或 DNS 服务器 (nameservers
) 的 IP 地址时会发生这种情况,但配置网关 (gateway4
) 时不会发生这种情况:network: version: 2 renderer: networkd ethernets: enp3s0: addresses: - 10.10.10.2/24 nameservers: addresses: [8.8.8.8, 1.1.1.1] gateway4: 10.10.10.1
我见过三种不同的 IP 表示法
- 直接在 之后
:
,例如
gateway4: 10.10.10.1
- 在新行中使用
-
, 例如
enp3s0: addresses: - 10.10.10.2/24
- 使用
[]
, 就像在
nameservers: addresses: [8.8.8.8, 1.1.1.1]
我对何时使用它们有点困惑。
- 直接在 之后
答案1
答案在于对 YAML 语法的理解。
YAML 使用键/值对。一组键/值对就是一个“映射”。值(在键/值对中)可以是单个标量、列表或映射。列表可以是标量列表、列表或映射。列表可以放在一行中,用方括号 [] 括起来并用逗号分隔,也可以将列表放在单独的行中,并在每个列表元素的开头使用连字符。如果我们不考虑多文档功能,YAML 文件的顶层是一个映射。
这里的 ip 地址是一个标量列表,列表中只有一个元素。
addresses:
- 10.10.10.2/24
这里的 IP 地址是两个标量的列表,但所有元素都在一行上。
addresses: [8.8.8.8, 1.1.1.1]
这里的 IP 地址是一个标量。
gateway4: 10.10.10.1
正如您可能猜到的,如果您愿意,可以像这样重写前两个。
addresses: [10.10.10.2/24]
addresses:
- 8.8.8.8
- 1.1.1.1
因此,看起来只能有一个网关(标量),但可以有多个名称服务器地址以及分配给一个接口的多个地址。
答案2
根据网络规划参考
- 网关地址的标注始终不带“地址”一词。
- 否则,符号始终取决于您配置的地址。
接口地址以 - 开头,并在接口名称下方缩进书写:
enp3s0:
addresses:
- 10.10.10.2/24
网关地址与关键字“gateway”写在同一行:
gateway4: 10.10.10.1
网关已被弃用,取而代之的是默认路由。
名称服务器括在方括号中,用逗号分隔,并在关键字“名称服务器”下方缩进书写:
nameservers:
addresses: [8.8.8.8, 1.1.1.1]
相同的结构适用于 IPv4 和 IPv6 寻址。