1、systemd-networkd简介
systemd-networkd是systemd 的一部分 ,负责 systemd 生态中的网络配置部分(systemd-networkd.service, systemd-resolved.service)。使用 systemd-networkd,你可以为网络设备配置基础的 DHCP/静态IP网络等,还可以配置虚拟网络功能,例如网桥、隧道和 VLAN等等。systemd-networkd 与wpa_supplicant 服务配合可以支持配置WIFI无线适配器。具体见Linux网络管理工具systemd-networkd简介
2、NetworkManager简介
NetworkManager是一项后端服务(networkmanager.service),是一个用于控制Ubuntu操作系统上的网络接口图形化界面的工具。NetworkManager和systemd-networked可以理解为相互替代关系,一个是基于图形化界面的工具,另外一个是基于命令行界面的工具。因此,用户可以根据自己的需求,决定使用networkmanager还是systemd-netword。 因此,如果要禁用NetworkManager,则应启用systemd-networkd,而在systemd-networkd运行时最好禁用networkmanager。
3、Netplan简介
Netplan是Canonical(Ubuntu)开发的做为某些 Linux 发行版(主力为ubuntu Linux发行版)上默认的网络配置命令行工具。Netplan 使用 YAML 描述文件来配置网络,然后,通过这些描述为任何给定的底层呈现工具(主要就是systemd-networkd和networkmanager二种工具)生成必要的配置选项。
如下图所示,我们可以看到Netplan读取/etc/netplan下的描述网络用的各个yaml文件,生成backend config后端配置项。将这些后端配置项通过yaml文件里指定的renderers渲染器(systemd-networkd或者networkmanager)将配置下发到Linux内核中。
3.1、Netplan 目前支持的网络管理工具:
- NetworkManager
- Systemd-networkd
3.2、/etc/netplan下面有哪些东西
这个目录下,放的就是netplan配置网络所要用到的配置文件,默认当所有网络接口都采用dhcp且无其它配置时,则就是看到的默认的配置文件 01-network-manager-all.yaml, 这个文件内没有多少内容,只是简单的指定了renderer是NetworkManager,其它的全部使用默认配置。
xxx@xxx-pc:~$ ls -l /etc/netplan
总计 4
-rw-r--r-- 1 root root 104 8月 9 2022 01-network-manager-all.yaml
xxx@xxx-pc:~$ cat /etc/netplan/01-network-manager-all.yaml
# Let NetworkManager manage all devices on this system
network:
version: 2
renderer: NetworkManager
3.3、netplan提供的命令
- netplan generate
以/etc/netplan 配置为输入为renderer指定的底层网络管理工具生成配置文件。 - netplan apply
应用配置,使配置生效。 - netplan try
试用配置,然后等待用户的确认;如果网络中断或没有给出确认,就自动回滚。
3.4、一个配置的例子
这是一台有4张网卡的主机,分别是enp2s0、enp3s0、 enp4s0、 eno1,我们准备把这4张网卡加入同一个网桥br0, 关闭所有网卡的DHCP请求功能,并开启这个网桥通过DHCP自动获取IP地址的功能
第一步,我们在/etc/netplan目录下增加一个br0.yaml文件,用于描述这个网桥,及关闭各个网卡的dhcp获取IP地址功能。
xxx@xxx-HP-PC:~$ ls -l /etc/netplan/
总计 8
-rw-r--r-- 1 root root 104 8月 9 2022 01-network-manager-all.yaml
-rw-r--r-- 1 root root 594 4月 21 21:43 br0.yaml
- 用vi打开这个文件,
vi /etc/netplan/br0.yaml
- 把以下内容加入到这个文件中。
# Let NetworkManager manage all devices on this system
network:
version: 2
renderer: NetworkManager
meihualing@xx-HP-PC:~$ cat /etc/netplan/br0.yaml
network:
version: 2
renderer: NetworkManager
ethernets:
eno1:
dhcp4: no
dhcp6: no
enp2s0:
dhcp4: no
dhcp6: no
enp3s0:
dhcp4: no
dhcp6: no
enp4s0:
dhcp4: no
dhcp6: no
bridges:
br0:
interfaces:
- enp2s0
- enp3s0
- enp4s0
- eno1
dhcp4: yes
dhcp6: yes
#addresses:
# - 192.168.3.166/24
#routes:
# - to: default
# via: 192.168.3.1
#nameservers:
# addresses: [192.168.3.1, 8.8.8.8]
parameters:
stp: false
- 使用netplan apply命令让网桥生效
sudo netplan apply
- 生效后,通过ip addr show和brctl show可以看到以下网络配置结果
- 生成了一个br0网桥
- 4个网卡都加入了br0网桥
- 网桥接口br0通过DHCP请求,从上上游DHCP SERVER请求到了IP地址192.168.3.122
xxx@xxx-HP-PC:~$ ip addr show
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: enp2s0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc mq state DOWN group default qlen 1000
link/ether a0:36:9f:56:98:45 brd ff:ff:ff:ff:ff:ff
3: enp3s0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc mq state DOWN group default qlen 1000
link/ether a0:36:9f:56:95:be brd ff:ff:ff:ff:ff:ff
4: enp4s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq master br0 state UP group default qlen 1000
link/ether a0:36:9f:57:18:d2 brd ff:ff:ff:ff:ff:ff
5: eno1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel master br0 state UP group default qlen 1000
link/ether 8c:dc:d4:41:8b:ac brd ff:ff:ff:ff:ff:ff
altname enp0s25
7: br0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
link/ether 82:61:84:35:97:fb brd ff:ff:ff:ff:ff:ff
inet 192.168.3.112/24 brd 192.168.3.255 scope global dynamic noprefixroute br0
valid_lft 604763sec preferred_lft 604763sec
inet6 fe80::8061:84ff:fe35:97fb/64 scope link noprefixroute
valid_lft forever preferred_lft forever
xxx@xxx-HP-PC:~$ brctl show
bridge name bridge id STP enabled interfaces
br0 8000.8261843597fb no eno1
enp2s0
enp3s0
enp4s0
3.5、注意点
注意在/etc/netplan目录下,有多个yaml文件存在,netplan是根据字母表排序,挨个生效的,后面的yaml指定的配置会覆盖前面的yaml指定的配置。