netplan说明

1.介绍

​ 发行版安装程序、云实例化、特定设备的镜像或任何其他部署操作系统的方法,都会将其网络配置放入YAML配置文件中。在启动初期,netplan的“network renderer”将读取/{lib,etc,run}/netplan/*.yaml文件,并将配置写入/run,以将设备控制转交给指定的网络守护进程。

  • 配置的设备默认由systemd-networkd处理,除非指定了renderer(NetworkManager)
  • 没有被网络配置覆盖的设备,不会被触动;
  • 可用于initramfs(依赖少,速度快)
  • 没有持久生成的配置,只有原始的YAML配置
  • 解析器支持多个配置文件,这就允许像libvirt或lxd等应用打包预期的网络配置(virbr0, lxdbr0),或更改全局默认策略,使用NetworkManager进行所有配置。
  • 保留灵活性,更改后端/策略或调整到删除NetworkManager,因为生成的配置是短暂的。

2.总体结构

​ netplan的配置文件使用YAML格式 (http://yaml.org/spec/1.1/current.html)。所有/{lib,etc,run}/ netplan / *.yaml都将被使用。
​ netplan配置文件中的顶级节点是“network: ”,且需要包含“version: 2” (curtin、MaaS等目前使用的YAML是版本1),然后是按类型分组的设备,例如
“ethernets:“, “modems:“, “wifis:“或者“bridges:“。

3.配置说明

3.1.设备配置ID

​ 每个设备类型(如“ethernets:“)下面设备名称为“ID”,在整个配置文件中必须是唯一的。(从0.97开始)如果在配置文件中用ID定义接口,它将由适合的renderer启动。设备定义有两种物理/结构上的不同类别,ID字段对它们有不同的解释:

​ 物理设备
​ 例如: ethernet, modem, wifi,它们可以重启,甚至热插拔。在一般情况下,可以通过匹配条件选择它们:例如名称、MAC地址、驱动程序或设备路径。不指定匹配规则时,ID字段只是匹配接口名称;当指定匹配规则时,ID字段是一个纯粹不透明的名称,仅用于引用配置中的复合设备定义。
​ 虚拟设备
​ 例如:veth, bridge, bond,它们完全在配置文件和网络堆栈的控制下。也就是说,这些设备是创建的,而不是匹配的。因此match和set-name都不适用,且ID字段是创建的虚拟设备的名称。

3.2.物理设备类型的通用属性

match

​ name:当前接口的名称,支持Globs
​ macaddress:设备的MAC地址,格式为“XX:XX:XX:XX:XX”。不允许使用Globs
​ driver:内核驱动名称,支持Globs

例子:
• 匹配所有在第2PCI总线上的卡:
	match:
	  name: enp2*
• 匹配MAC地址:
	match:
	  macaddress: 11:22:33:AA:BB:FF
• 匹配驱动为ixgbe的第一张卡:
	match:
	  driver: ixgbe
	  name: en*s0

• 匹配驱动为bcmgenet或smsc*的第一张卡:
	match:
	  driver: ["bcmgenet", "smsc*"]
	  name: en*

set-name

​ 对满足匹配条件的唯一设备,进行重命名

3.3.所有设备类型的通用属性

renderer
指定网络后端,目前支持networkd和NetworkManager。此属性可以在“network:”中全局指定,默认是networkd

dhcp4

​ 开启IPv4的DHCP功能,默认关闭

dhcp6

​ 开启IPv6的DHCP功能,默认关闭

link-local
配置启动的本地链路地址,有效选项包括ipv4和ipv6,缺省只启用IPv6本地链路地址。

addresses

​ 配置格式是CIDR符号,即addr/prefixlen。addr可为IPv4或IPv6地址,通过inet_pton(3)和前缀固定子网的位数。

例子:
addresses: [192.168.14.2/24, "2001:1::1/64"]
ethernets:
  eth0:
    addresses:
      - 10.0.0.15/24:
          lifetime: 0
          label: "maas"
      - "2001:1::1/64"

gateway4, gateway6

​ 已弃用,请参见默认路由。配置IPv4/6的默认网关,用于手动配置。如果需要多条缺省路由,请通过routing-policy定义。

例子:
gateway4: 172.16.0.1 
gateway6: "2001:4::1"

nameservers

​ 设置DNS服务器和搜索域,支持两个字段:“address:”类似于gateway*的IPv4/6地址列表;“search:”搜索域列表。

例子:
ethernets:
  id0:
    [...]
    nameservers:
      search: [lab, home]
      addresses: [8.8.8.8, "FEDC::1"]

macaddress

​ 设置设备的MAC地址,格式为“XX:XX:XX:XX:XX:XX”.

例子:
ethernets:
   id0:
    match:
      macaddress: 52:54:00:6b:3c:58
    [...]
    macaddress: 52:54:00:6b:3c:59

routes

​ 为设备配置静态路由,至少必须指定to

from
	配置经过该路由流量的源IP地址
to
	路由的目的地址
via 
	路由的网关的地址
on-link 
	当设置为true时,表示路由与接口直接相连
metric
	路由的相对优先级,必须为正整数。
type
	路由类型,有效选项包括" unicast "(默认)," anycast ", " blackhole ", " broadcast ", " local ", " multicast ", " nat ", " prohibit ", " throw ", " unreachable "或" xresolve "。
scope
	路由范围,对网络的影响有多大。可能取值为“global”, “link”或“host”。
table
	路由的表号,取值范围为从1开始的正整数
mtu
	路由的MTU值,以字节为单位,必须为正整数
congestion-window 
	路由的拥塞窗口,由段的数量表示,必须为正整数。
advertised-receive-window
例子:
eth0:
  [...]
  routes:
  - to: default        #可选,可以是0/0或0.0.0.0/0
    via: 10.0.0.1
    metric: 100
    on-link: true
  - to: default 		#可选,可以是::/0 
    via: cf02:de:ad:be:ef::2
eth1:
  [...]
  routes:
  - to: default
    via: 172.134.67.1
    metric: 100
    on-link: true
    table: 76 	#不在主路由表中,与eth0默认路由不冲突     

routing-policy

​ 配置设备的策略路由,其可以根据源IP、防火墙标记等对流量进行特殊处理。对于from和to都可以同时识别IPv4和IPv6地址,且必须为addr/prefixlen或addr。

from
	配置源IP地址,来匹配该策略规则的流量
to 
	配置目的IP地址,来匹配该策略规则的流量
table
	路由匹配的表号,取值范围为从1开始的正整数
priority
    路由策略规则的优先级,以影响处理路由规则的顺序。数字越大,优先级越低。
mark
	路由策略规则与iptables防火墙标记的流量匹配,取值范围为从1开始的正整数
type-of-service
	根据流量应用的服务号类型匹配策略规则

3.4.身份验证

​ Netplan支持以太网、wifi接口和单独的wifi网络的高级认证设置。略

3.5.ethernets的属性

​ 以太网设备属性,除了上面描述的常见之外,还支持一些可用于SR-IOV设备的附加属性。略

3.6.modems的属性

​ GSM/CDMA modem配置仅支持NetworkManager,systemd-networkd不支持调制解调器。略

3.7.wifis的属性

​ systemd-networkd不支持wifi,所以如果你让networkd渲染器处理wifi,你需要安装wpasupplicant

3.8.bridges的属性

interfaces

​ 所有匹配此ID列表的设备都将被添加到网桥。这可能是一个空列表,在这种情况下,桥将在没有成员接口的情况下联机。

例子:
ethernets:
  switchports:
    match: {name: "enp2*"}
[...]
bridges:
  br0:
    interfaces: [switchports]

parameters

​ 指定桥接选项的特殊参数。时间间隔需要表示为秒或毫秒数,可以使用时间后缀(例如“s”表示秒,“ms”表示毫秒)来限定时间间隔。略

3.9.bonds的属性

interfaces

​ 所有匹配此ID列表的设备将被添加到绑定

例子:
ethernets:
  switchports:
    match: {name: "enp2*"}
[...]
bonds:
  bond0:
    interfaces: [switchports]

parameters

​ 指定bomds选项的特殊参数。时间间隔需要表示为秒或毫秒数,可以使用时间后缀(例如“s”表示秒,“ms”表示毫秒)来限定时间间隔。略

mode
	设置接口的绑定模式。缺省情况下为balance-rr(轮询调度)。取值包括balance-rr、active-backup、balance-xor、broadcast、802.3ad、balance-tlb和balance-alb。OpenVSwitch支持active-backup和balance-tcp、balance-slb两种附加模式
lacp-rate
	配置LACPDUs报文的传输速率。这只在802.3ad模式下有用。可能的值为slow(默认为30秒)和fast(每秒)
mii-monitor-interval
	MII监控(检测绑定接口是否有载波)的时间间隔,默认为0,禁用MII监控。相当于网络后端的MIIMonitorSec=字段。如果没有指定时间后缀,默认为毫秒
min-links
	使绑定接口处于up状态的最小连接数
transmit-hash-policy
	指定用于选择slave的传输哈希策略。这只在balance-xor, 802.3ad和balance-tlb模式下有用。取值为layer2、layer3+4、layer2+3、encap2+3和encap3+4
ad-select
	设置聚合选择模式。取值包括stable、bandwidth和count。该选项仅在“802.3ad”模式下使用
all-slaves-active
	如果bond应该丢弃在未激活端口上接收到的重复帧,则将此选项设置为false。如果它们应该被交付,将此选项设置为true。默认值为false,这是适用于大多数情况
略

3.10.tunnels的属性

​ 隧道允许流量像在同一个本地网络上的系统之间一样通过,尽管系统之间可能相距很远。它们可以用于在ISP不提供服务的网络上支持IPv6流量,或者扩展和“连接”独立的本地网络。略

3.11.vlans的属性

id

​ VLAN ID,范围为0到4094

link

​ 用于创建此VLAN的基础设备的ID

例子:
ethernets:
  eno1: {...}
vlans:
  en-intra:
    id: 1
    link: eno1
    dhcp4: yes
  en-vpn:
    id: 2
    link: eno1
    addresses: ...

3.12.nm-devices的属性

​ nm-devices设备类型仅供内部使用,不应在普通配置文件中使用

3.13.后端特定配置参数

​ 除了可用于配置接口的其他字段外,一些后端可能需要在netplan中记录它们自己的一些参数,特别是当netplan定义是由后端消费者自动生成时。目前,这只用于NetworkManager。

networkmanager

​ 保持守护进程用于识别连接的networkmanager特定配置参数。

name
	设置连接的显示名称
uuid
	为这个连接定义UUID(唯一标识符),由NetworkManager自身生成
stable-id
	定义NetworkManager使用的stable ID(连接名的另一种形式),以防止连接名可能发生更改,例如在用户之间共享连接时
device
	定义应用此连接的接口名称
passthrough
	可以作为缺少密钥文件设置的回退机制

4.例子

network:
  version: 2
  #如果指定,将使用NetworkManager作为渲染器,因为networkd不能trender wifi/3G
  renderer: NetworkManager
  ethernets:
    #物理接口的不透明ID,仅由其他节引用
    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"
      nameservers:
        search: [foo.local, bar.local]
        addresses: [8.8.8.8]
      routes:
        - to: default
          via: 192.168.14.1
        - to: default
          via: "2001:1::2"
        - 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
      #只有network可以使用link路由和路由策略
      renderer: networkd
    lom:
      match:
        driver: ixgbe
      #如果使用set-name,则需要设置足够严格的匹配规则,这些规则只匹配唯一个设备
      set-name: lom1
      dhcp6: true
    switchports:
      #第二PCI总线上所有未自行配置的卡,将被添加到下面的br0
      match:
        name: enp2*
      mtu: 1280
    wifis:
      all-wlans:
        #在你知道只有一种设备的系统上很有用
        match: {}
        access-points:
          "Joe's home":
          # 模式默认为"infrastructure" (client)
            password: "s3kr1t"
      #这将使用hostapd,且不匹配规则,并在wlp1s0上创建一个AP
      wlp1s0:
        access-points:
          "guest":
            mode: ap
            #没有配置WPA,意味着默认的open
    bridges:
      #key名是已创建的虚拟接口的名称,没有match:和set-name:也是被允许的
      br0:
        interfaces: [wlp1s0, switchports]
        dhcp4: true
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

酷咪哥

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值