了解 Netplan IP 地址表示法

了解 Netplan IP 地址表示法

我对 Netplan 配置有一些疑问,但找不到任何相关信息:

  1. 我发现为了表示 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
    
  2. 我见过三种不同的 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

根据网络规划参考

  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 寻址。

相关内容