netplan配置
配置
要配置 netplan,请在下面保存带有扩展名的配置文件(例如 ),然后运行 。此命令解析配置并将其应用于系统。写入磁盘的配置将在两次重新启动之间保留。/etc/netplan/``.yaml``/etc/netplan/config.yaml``sudo netplan apply``/etc/netplan/
使用 DHCP 和静态寻址
要让名为“enp3s0”的接口通过 DHCP 获取地址,请使用以下内容创建 YAML 文件:
network:
version: 2
renderer: networkd
ethernets:
enp3s0:
dhcp4: true
要改为设置静态 IP 地址,请使用地址密钥,该密钥采用(IPv4 或 IPv6)、地址列表以及子网前缀长度(例如 /24)。也可以提供 DNS 信息,并且可以通过默认路由定义网关:
network:
version: 2
renderer: networkd
ethernets:
enp3s0:
addresses:
- 10.10.10.2/24
nameservers:
search: [mydomain, otherdomain]
addresses: [10.10.10.1, 1.1.1.1]
routes:
- to: default
via: 10.10.10.1
使用 DHCP 连接多个接口
许多系统现在包含多个网络接口。服务器通常需要连接到多个网络,并且可能要求到 Internet 的流量通过特定接口,尽管所有这些接口都提供有效的网关。
可以通过为通过 DHCP 检索的路由指定指标来实现所需的 DHCP 上的确切路由,这将确保某些路由优先于其他路由。在此示例中,“enred”优先于“engreen”,因为它的路由指标较低:
network:
version: 2
ethernets:
enred:
dhcp4: yes
dhcp4-overrides:
route-metric: 100
engreen:
dhcp4: yes
dhcp4-overrides:
route-metric: 200
连接到开放的无线网络
Netplan 轻松支持连接到开放的无线网络(不受密码保护的网络),只需定义接入点:
network:
version: 2
wifis:
wl0:
access-points:
opennetwork: {}
dhcp4: yes
连接到 WPA 个人无线网络
无线设备使用“wifis”密钥,并与有线以太网设备共享相同的配置选项。还应指定无线接入点名称和密码:
network:
version: 2
renderer: networkd
wifis:
wlp2s0b1:
dhcp4: no
dhcp6: no
addresses: [192.168.0.21/24]
nameservers:
addresses: [192.168.0.1, 8.8.8.8]
access-points:
"network_ssid_name":
password: "**********"
routes:
- to: default
via: 192.168.0.1
连接到 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
支持许多不同的加密模式。请参阅网络计划参考页面。
在单个界面上使用多个地址
地址键可以获取要分配给接口的地址列表:
network:
version: 2
renderer: networkd
ethernets:
enp3s0:
addresses:
- 10.100.1.37/24
- 10.100.1.38/24:
label: enp3s0:0
- 10.100.1.39/24:
label: enp3s0:some-label
routes:
- to: default
via: 10.100.1.1
将多个地址与多个网关一起使用
与上述示例类似,具有多个地址的接口可以是 配置了多个网关。
network:
version: 2
renderer: networkd
ethernets:
enp3s0:
addresses:
- 10.0.0.10/24
- 11.0.0.11/24
routes:
- to: default
via: 10.0.0.1
metric: 200
- to: default
via: 11.0.0.1
metric: 300
我们使用子网网关的地址将各个路由配置为默认值(或 0.0.0.0/0)。应调整该值,以便按预期进行路由。metric
DHCP 可用于接收接口的其中一个 IP 地址。在这种情况下,该地址的默认路由将自动配置为值 100。metric
使用网络管理器作为渲染器
Netplan支持网络和网络管理器作为后端。您可以使用密钥指定应使用哪个网络后端来配置特定设备。您还可以通过仅指定密钥将网络的所有配置委托给网络管理器本身:renderer``renderer
network:
version: 2
renderer: NetworkManager
配置接口绑定
绑定是通过声明具有物理接口列表和绑定模式的绑定接口来配置的。下面是使用 DHCP 获取地址的主动备份绑定示例:
network:
version: 2
renderer: networkd
bonds:
bond0:
dhcp4: yes
interfaces:
- enp3s0
- enp4s0
parameters:
mode: active-backup
primary: enp3s0
下面是一个充当路由器的系统示例,具有各种绑定接口和不同类型的路由器。请注意“可选:true”键声明,这些声明允许在不等待这些接口完全激活的情况下进行引导。
network:
version: 2
renderer: networkd
ethernets:
enp1s0:
dhcp4: no
enp2s0:
dhcp4: no
enp3s0:
dhcp4: no
optional: true
enp4s0:
dhcp4: no
optional: true
enp5s0:
dhcp4: no
optional: true
enp6s0:
dhcp4: no
optional: true
bonds:
bond-lan:
interfaces: [enp2s0, enp3s0]
addresses: [192.168.93.2/24]
parameters:
mode: 802.3ad
mii-monitor-interval: 1
bond-wan:
interfaces: [enp1s0, enp4s0]
addresses: [192.168.1.252/24]
nameservers:
search: [local]
addresses: [8.8.8.8, 8.8.4.4]
parameters:
mode: active-backup
mii-monitor-interval: 1
gratuitious-arp: 5
routes:
- to: default
via: 192.168.1.1
bond-conntrack:
interfaces: [enp5s0, enp6s0]
addresses: [192.168.254.2/24]
parameters:
mode: balance-rr
mii-monitor-interval: 1
配置网桥
要创建由使用 DHCP 的单个设备组成的非常简单的网桥,请编写:
network:
version: 2
renderer: networkd
ethernets:
enp3s0:
dhcp4: no
bridges:
br0:
dhcp4: yes
interfaces:
- enp3s0
一个更复杂的例子,要让libvirtd使用带有标记vlan的特定网桥,同时继续提供未标记的接口,将涉及:
network:
version: 2
renderer: networkd
ethernets:
enp0s25:
dhcp4: true
bridges:
br0:
addresses: [ 10.3.99.25/24 ]
interfaces: [ vlan15 ]
vlans:
vlan15:
accept-ra: no
id: 15
link: enp0s25
然后,通过将以下内容添加到 下的新 XML 文件中,将 libvirtd 配置为使用此桥。<网桥>标签以及<名称>中的网桥名称需要与使用 netplan 配置的网桥设备的名称匹配:/etc/libvirtd/qemu/networks/
XML br0
将 VLAN 连接到网络接口
要使用重命名的接口配置多个 VLAN:
network:
version: 2
renderer: networkd
ethernets:
mainif:
match:
macaddress: "de:ad:be:ef:ca:fe"
set-name: mainif
addresses: [ "10.3.0.5/23" ]
nameservers:
addresses: [ "8.8.8.8", "8.8.4.4" ]
search: [ example.com ]
routes:
- to: default
via: 10.3.0.1
vlans:
vlan15:
id: 15
link: mainif
addresses: [ "10.3.99.5/24" ]
vlan10:
id: 10
link: mainif
addresses: [ "10.3.98.5/24" ]
nameservers:
addresses: [ "127.0.0.1" ]
search: [ domain1.example.com, domain2.example.com ]
到达直连网关
这允许使用“on-link”关键字设置默认路由或任何路由,其中网关是直接连接到网络的 IP 地址,即使该地址与接口上配置的子网不匹配。
network:
version: 2
renderer: networkd
ethernets:
ens3:
addresses: [ "10.10.10.1/24" ]
routes:
- to: default # or 0.0.0.0/0
via: 9.9.9.9
on-link: true
对于IPv6,配置将非常相似,显着的区别是额外的作用域:需要将链路主机路由到路由器的地址:
network:
version: 2
renderer: networkd
ethernets:
ens3:
addresses: [ "2001:cafe:face:beef::dead:dead/64" ]
routes:
- to: "2001:cafe:face::1/128"
scope: link
- to: default # or "::/0"
via: "2001:cafe:face::1"
on-link: true
配置源路由
可以将路由表添加到特定接口,以允许在两个网络之间进行路由:
在下面的示例中,ens3 位于 192.168.3.0/24 网络上,ens5 位于 192.168.5.0/24 网络上。这使任一网络上的客户端能够连接到另一个网络,并允许响应来自正确的接口。
此外,默认路由仍分配给 ens5,允许任何其他流量通过它。
network:
version: 2
renderer: networkd
ethernets:
ens3:
addresses:
- 192.168.3.30/24
dhcp4: no
routes:
- to: 192.168.3.0/24
via: 192.168.3.1
table: 101
routing-policy:
- from: 192.168.3.0/24
table: 101
ens5:
addresses:
- 192.168.5.24/24
dhcp4: no
routes:
- to: default
via: 192.168.5.1
- to: 192.168.5.0/24
via: 192.168.5.1
table: 102
routing-policy:
- from: 192.168.5.0/24
table: 102
配置环路接口
Networkd 不允许创建新的环回设备,但用户可以向标准环路接口 lo 添加新地址,以便将其视为计算机上的有效地址以及自定义路由:
network:
version: 2
renderer: networkd
ethernets:
lo:
addresses: [ "127.0.0.1/8", "::1/128", "7.7.7.7/32" ]
与 Windows DHCP 服务器集成
对于由 Windows Server 使用 dhcp 标识符密钥提供 DHCP 的网络,允许互操作性:
network:
version: 2
ethernets:
enp3s0:
dhcp4: yes
dhcp-identifier: mac
连接 IP 隧道
隧道允许管理员通过配置两个端点来跨 Internet 扩展网络,这两个端点将连接一个特殊的隧道接口并执行所需的路由。Netplan 支持 SIT、GRE、IP-IN-IP (IPIP、IPIP6、IP6ip6)、IP6GRE、VTI 和 VTI6 隧道。
隧道的常见用途是在仅支持 IPv4 的网络上启用 IPv6 连接。下面的示例显示了如何配置此类隧道。
在这里,1.1.1.1 是客户端自己的 IP 地址;2.2.2.2 是远程服务器的 IPv4 地址,“2001:dead:beef::2/64”是隧道定义的客户端 IPv6 地址,“2001:dead:beef::1”是远程服务器的 IPv6 地址。
最后,“2001:café:face::1/64”是路由 IPv6 前缀内客户端的地址:
network:
version: 2
ethernets:
eth0:
addresses:
- 1.1.1.1/24
- "2001:cafe:face::1/64"
routes:
- to: default
via: 1.1.1.254
tunnels:
he-ipv6:
mode: sit
remote: 2.2.2.2
local: 1.1.1.1
addresses:
- "2001:dead:beef::2/64"
routes:
- to: default
via: "2001:dead:beef::1"
配置 SR-IOV 虚拟功能
对于 SR-IOV 网卡,可以为每个配置的物理功能动态分配虚拟功能接口。在netplan中,VF是通过具有指向父PF的链接:属性来定义的。
network:
version: 2
ethernets:
eno1:
mtu: 9000
enp1s16f1:
link: eno1
addresses : [ "10.15.98.25/24" ]
vf1:
match:
name: enp1s16f[2-3]
link: eno1
addresses : [ "10.15.99.25/24" ]