其他分享
首页 > 其他分享> > Netplan网络配置工具的学习

Netplan网络配置工具的学习

作者:互联网

Netplan是一个在linux系统上轻松配置网络的实用工具。您只需创建所需网络接口的YAML描述以及每个接口应配置的功能。根据此描述,Netplan将为您选择的渲染器工具生成所有必要的配置。

一、如何工作

Netplan从/etc/Netplan/*.yaml读取网络配置,这些文件由管理员、安装人员、云映像实例化或其他操作系统部署编写。在系统引导初期,Netplan将在/run中生成特定于后端的配置文件,然后再将设备的控制权移交给特定的网络守护进程。

Netplan目前支持以下两种网络管理工具(渲染器) :

NetworkManager
Systemd-networkd

二、如何使用

1.配置

显然,没有配置,netplan什么也做不了。

最有用的配置片段(通过dhcp显示内容)如下所示:

network:
  version: 2
  renderer: NetworkManager

此配置将以NetworkManager作为渲染器来管理所有设备(默认情况下,一旦检测到carrier,以太网设备就将通过DHCP来启动)。

而使用networkd作为渲染器则不会通过DHCP来自动启动设备;而是将每个接口设备都在/etc/netplan中的文件中进行指定和配置以便在networkd中使用。

2.命令

Netplan通过如下的几个子命令来驱动网络行为:

三、常见的Netplan 配置示例

要配置 netplan,请将配置文件保存在/etc/netplan/下的*.yaml中(如/etc/netplan/config.yaml) ,然后运行sudo netplan apply,此命令可将解析配置并应用于系统。写入/etc/netplan/下的配置将在重新引导之间保持。

1.使用 DHCP 和静态寻址

为了让名为‘ enp3s0’的以太网设备通过 DHCP 获得一个地址,创建一个具有以下内容的 YAML 文件:

network:
    version: 2
    renderer: networkd
    ethernets:
        enp3s0:
            dhcp4: true

为了设置一个静态 IP 地址,可使用地址键,它由一个地址列表(IPv4或 IPv6)组成,地址一般连同子网前缀(例如10.10.10.2/24)。此外还可以提供网关和 DNS 信息:

network:
    version: 2
    renderer: networkd
    ethernets:
        enp3s0:
            addresses:
                - 10.10.10.2/24
            gateway4: 10.10.10.1
            nameservers:
                search: [mydomain, otherdomain]
                addresses: [10.10.10.1, 1.1.1.1]

2.用 DHCP 连接多个接口

许多系统都包括不止一个的网络接口。服务器通常需要连接到多个网络,并且可能要求连接到 Internet 的流量只通过一个某个特定的接口,尽管它们都提供了一个有效的网关。

通过为在 DHCP 上检索的路由指定一个度量,可以实现在 DHCP 上所需的精确路由,这将确保某些路由优于其他路由。在这个例子中,en3s0 比 en4s0 更受欢迎,因为它有一个更低的路由度量:

network:
    version: 2
    ethernets:
        en3s0:
            dhcp4: yes
            dhcp4-overrides:
                route-metric: 100
        en4s0:
            dhcp4: yes
            dhcp4-overrides:
                route-metric: 200

3.连接到开放的无线网络

Netplan 很容易支持连接到一个开放的无线网络(一个没有密码保护的网络) ,只需要定义接入点:

network:
    version: 2
    wifis:
        wl0:
            access-points:
                opennetwork: {}
            dhcp4: yes

4.连接到 WPA 个人无线网络

无线设备使用“ wifis”键,并与有线以太网设备共享相同的配置选项。无线接驳点名称及密码亦应指定:

network:
    version: 2
    renderer: networkd
    wifis:
        wlp2s0b1:
            dhcp4: no
            dhcp6: no
            addresses: [192.168.0.21/24]
            gateway4: 192.168.0.1
            nameservers:
                addresses: [192.168.0.1, 8.8.8.8]
            access-points:
                "network_ssid_name":
                    password: "**********"

5.连接到 WPA 企业无线网络

使用 WPA 或 WPA2 Enterprise 进行安全保护的无线网络也很常见,这需要额外的身份验证参数。

例如,如果使用 WPA-EAP 和 TTLS 保护网络:

network:
    version: 2
    wifis:
        wl0:
            access-points:
                workplace:
                    auth:
                        key-management: eap
                        method: ttls
                        anonymous-identity: "@internal.example.com"
                        identity: "joe@internal.example.com"
                        password: "v3ryS3kr1t"
            dhcp4: yes

或者,如果使用 WPA-EAP 和 TLS 保护网络:

network:
    version: 2
    wifis:
        wl0:
            access-points:
                university:
                    auth:
                        key-management: eap
                        method: tls
                        anonymous-identity: "@cust.example.com"
                        identity: "cert-joe@cust.example.com"
                        ca-certificate: /etc/ssl/cust-cacrt.pem
                        client-certificate: /etc/ssl/cust-crt.pem
                        client-key: /etc/ssl/cust-key.pem
                        client-key-password: "d3cryptPr1v4t3K3y"
            dhcp4: yes

6.在单个接口上使用多个地址

地址键可以获取一个地址列表来分配给一个接口:

network:
    version: 2
    renderer: networkd
    ethernets:
        enp3s0:
         addresses:
             - 10.100.1.38/24
             - 10.100.1.39/24
         gateway4: 10.100.1.1

7.使用多个网关的多个地址

与上面的示例类似,可以用多个网关配置具有多个地址的接口。

network:
    version: 2
    renderer: networkd
    ethernets:
        enp3s0:
         addresses:
             - 9.0.0.9/24
             - 10.0.0.10/24
             - 11.0.0.11/24
         #gateway4:  # unset, since we configure routes below
         routes:
             - to: 0.0.0.0/0
                 via: 9.0.0.1
                 metric: 100
             - to: 0.0.0.0/0
                 via: 10.0.0.1
                 metric: 100
             - to: 0.0.0.0/0
                 via: 11.0.0.1
                 metric: 100

假设有多个地址,每个地址都有自己的网关,我们在这里不指定网关,而是配置单独路由到0.0.0/0(无处不在),并使用使用子网的网关地址。且应该调整 metric 值,以便路由按预期的方式进行。
DHCP 可用于接收接口的一个 IP 地址。在这种情况下,该地址的默认路由将自动配置metric的值为100。作为路由下的一个条目的简写,网关可以设置为其中一个子网的网关地址。在这种情况下,可以从路由中省略该子网的路由。它的metric值将设置为100。

8.复杂的配置例子

network:
  version: 2
  # if specified, can only realistically have that value, as networkd cannot
  # render wifi/3G.
  renderer: NetworkManager
  ethernets:
    # opaque ID for physical interfaces, only referred to by other stanzas
    id0:
      match:
        macaddress: 00:11:22:33:44:55
      wakeonlan: true
      dhcp4: true
      addresses:
        - 192.168.14.2/24
        - 192.168.14.3/24
        - "2001:1::1/64"
      gateway4: 192.168.14.1
      gateway6: "2001:1::2"
      nameservers:
        search: [foo.local, bar.local]
        addresses: [8.8.8.8]
      routes:
        - to: 0.0.0.0/0
          via: 11.0.0.1
          table: 70
          on-link: true
          metric: 3
      routing-policy:
        - to: 10.0.0.0/8
          from: 192.168.14.2/24
          table: 70
          priority: 100
        - to: 20.0.0.0/8
          from: 192.168.14.3/24
          table: 70
          priority: 50
      # only networkd can render on-link routes and routing policies
      renderer: networkd
    lom:
      match:
        driver: ixgbe
      # you are responsible for setting tight enough match rules
      # that only match one device if you use set-name
      set-name: lom1
      dhcp6: true
    switchports:
      # all cards on second PCI bus unconfigured by
      # themselves, will be added to br0 below
      match:
        name: enp2*
      mtu: 1280
  wifis:
    all-wlans:
      # useful on a system where you know there is
      # only ever going to be one device
      match: {}
      access-points:
        "Joe's home":
          # mode defaults to "infrastructure" (client)
          password: "s3kr1t"
    # this creates an AP on wlp1s0 using hostapd
    # no match rules, thus the ID is the interface name
    wlp1s0:
      access-points:
        "guest":
           mode: ap
           # no WPA config implies default of open
  bridges:
    # the key name is the name for virtual (created) interfaces
    # no match: and set-name: allowed
    br0:
      # IDs of the components; switchports expands into multiple interfaces
      interfaces: [wlp1s0, switchports]
      dhcp4: true

四、配置参考

netplan配置文件顶级节点为network:mapping,其中包含vertion:2(curtin、MaaS等目前使用1)。然后可根据它们的类型对设备定义进行分组,比如物理设备ethernets: 、 modem: 、 wifis: 等,或虚拟设备 bridges:、bonds等。我们的渲染器可以理解这些类型,并且后端支持这些类型。

设备的公共属性:

ethernets:
    eth0:
        addresses:
        - 10.0.0.15/24:
            lifetime: 0
            label: "maas"
        - "2001:1::1/64"
ethernets:
   id0:
     [...]
     nameservers:
       search: [lab, home]
       addresses: [8.8.8.8, "FEDC::1"]
ethernets:
    id0:
        match:
        macaddress: 52:54:00:6b:3c:58
        [...]
        macaddress: 52:54:00:6b:3c:59
  ethernets:
    eth7:
      # this is plugged into a test network that is often
      # down - don't wait for it to come up during boot.
      dhcp4: true
      optional: true
  ethernets:
    eth7:
      dhcp4: true
      dhcp6: true
      optional-addresses: [ ipv4-ll, dhcp6 ]

五、路由选择

使用 netplan 可以进行复杂的路由选择。标准的静态路由以及使用路由表的策略路由通过 networkd 后端得到支持。
这些选项适用于所有类型的接口。

routes:映射序列

路由块为接口定义标准的静态路由。必须指定至少到和通过(除了有作用域: link 的路线,其中只需要到)。
对于 from、 to 和 via,IPv4和 IPv6地址都是可识别的,并且必须以 addr/prefixlen 或 addr 的形式。

routing-policy:映射序列

路由策略块为网络定义了额外的路由策略,其中流量可以根据源 IP、防火墙标记等进行特殊处理。
对于 from、to,IPv4和 IPv6地址都是可识别的,并且必须以 addr/prefixlen 或 addr 的形式。

标签:配置,addresses,dhcp4,networkd,Netplan,网络,地址,工具,路由
来源: https://blog.csdn.net/ymz641/article/details/117822232