在启动初期,netplan的“network renderer”将读取/{lib,etc,run}/netplan/*.yaml文件,并将配置写入/run,以将设备控制转交给指定的网络守护进程。
netplan有以下特点:
netplan的配置文件使用YAML格式,将应用所有在/{lib,etc,run}/ netplan / *.yaml的文件。
netplan配置文件中的顶级节点是“network: ”,且需要包含“version: 2” (curtin、MaaS等目前使用的YAML是版本1),然后是设备类型,例如“ethernets:“, “modems:“, “wifis:“或者“bridges:“。例如:
- network:
- version: 2
- ethernets:
- eth0:
- addresses:
- - 192.168.100.5/24
- - 10.10.200.2/24
- routes:
- - to: default
- via: 192.168.100.1
- nameservers:
- addresses:
- - 8.8.8.8
- search: []
设备类型(如“ethernets:“)下面的设备名称为“ID”,在整个配置文件中必须是唯一的。(从0.97开始)如果在配置文件中用ID定义接口,它将由适合的renderer启动。
设备定义有两种物理/结构上的不同类别,ID字段对它们有不同的解释:
- match
- name:当前接口的名称,支持Globs
- macaddress:设备的MAC地址,格式为“XX:XX:XX:XX:XX”。不允许使用Globs
- driver:内核驱动名称,支持Globs
-
- 例子:
- • 匹配第2个PCI总线上的所有卡:
- 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
- 对满足匹配条件的唯一设备,进行重命名
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
- 已弃用,请参见默认路由(routes)。配置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
- 根据流量应用的服务号类型匹配策略规则
Netplan支持以太网、wifi接口和单独的wifi网络的高级认证设置。略
以太网设备属性,除了上面描述的常见之外,还支持一些可用于SR-IOV设备的附加属性。略
GSM/CDMA modem配置仅支持NetworkManager,systemd-networkd不支持调制解调器。略
systemd-networkd不支持wifi。如果要让networkd渲染器处理wifi,需要安装wpasupplicant。
interfaces
- 所有匹配此ID列表的设备都将被添加到网桥。这可能是一个空列表,在这种情况下,桥将在没有成员接口的情况下联机。
-
- 例子:
- ethernets:
- switchports:
- match: {name: "enp2*"}
- [...]
- bridges:
- br0:
- interfaces: [switchports]
parameters
指定桥接选项的特殊参数。时间间隔需要表示为秒或毫秒数,可以使用时间后缀(例如“s”表示秒,“ms”表示毫秒)来限定时间间隔。略
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,这是适用于大多数情况
略
隧道允许流量像在同一个本地网络上的系统之间一样通过,尽管系统之间可能相距很远。它们可以用于在ISP不提供服务的网络上支持IPv6流量,或者扩展和“连接”独立的本地网络。略
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: ...
nm-devices设备类型仅供内部使用,不应在普通配置文件中使用
除了可用于配置接口的其他字段外,一些后端可能需要在netplan中记录它们自己的一些参数,特别是当netplan定义是由后端消费者自动生成时。目前,这只用于NetworkManager。
networkmanager
保持守护进程用于识别连接的networkmanager特定配置参数。
name
设置连接的显示名称
uuid
为这个连接定义UUID(唯一标识符),由NetworkManager自身生成
stable-id
定义NetworkManager使用的stable ID(连接名的另一种形式),以防止连接名可能发生更改,例如在用户之间共享连接时
device
定义应用此连接的接口名称
passthrough
可以作为缺少密钥文件设置的回退机制
- 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