Linux-systemd-networkd-服务

systemd-networkd 服务介绍

systemd-networkd 是一个系统守护进程, 其负责在 Linux 系统上配置和管理网络接口. 它是 systemd 系统管理器的一部分, 可以处理静态或动态 IP 地址配置, 并支持各种网络配置选项.

在 Archlinux 上, systemd-networkd 似乎没有启用, 此时是由 NetworkManager, iwd 等在进行网络管理.

systemd-networkd 服务启用

1
sudo systemctl enable --now systemd-networkd

systemd-networkd 服务管理

可以用 networkctl 命令控制和查看 systemd-networkd 服务.

/etc/systemd/network 目录下的文件

/etc/systemd/network 目录是用于存储网络配置的地方. 这个目录是 systemd 网络管理服务 systemd-networkd (一个在系统启动时自动配置网络连接的守护进程.) 的一部分

扩展名约定

这个目录下的文件通常有 .network, .netdev, .link 等扩展名, 每种扩展名的文件都有其特定的作用:

  • .network: 该类文件用于配置网络接口, 可以定义 IP 地址, 路由, DNS 设置等
  • .netdev: 该类文件用于创建网络设备, 例如桥接, 绑定, VLAN 等
  • .link: 这种文件用于定义物理设备的属性, 例如 MAC 地址, MTU 等

文件名约定

文件名也有一定的要求, 一般是两个部分组成: 一个 “数字” 和一个 “描述性名称”, 且两部分用 “-“ 分隔, 如 10-eth0.network.

  • “数字” 部分被用来决定加载配置文件的顺序, 数字越小, 文件越早被读取. 如果有多个文件匹配同一个设备, 那么最后被读取的文件将覆盖先前的设置

.network 文件示例

1
2
3
4
5
6
7
[Match]
Name=enp3s0

[Network]
Address=192.168.1.100/24
Gateway=192.168.1.1
DNS=8.8.8.8

[Match] section, 用:

  • Name= 指定该配置应用于哪一个网络接口.

[Network] Section, 用:

  • Address= 指定静态 IP
  • Gateway= 指定网关地址
  • DNS= 指定 DNS 服务器

.netdev 文件

1
2
3
[NetDev]
Name=br0
Kind=bridge

[NetDev] section 用:

  • Name= 用于指定要创建的网络设备名
  • Kind= 指定网络设备的类型
1
2
3
4
5
[Match]
MACAddress=00:11:22:33:44:55

[Link]
Name=eth0

[Match] section 用:

  • MACAddress=, 通过 MAC 地址指定该配置用于哪个网络接口

[Link] section 用:

  • Name=, 设置网络接口名称

添加一个 bridge network device

依赖安装

安装 bridge-utils 软件包:

1
sudo pacman -S bridge-utils

bridge 配置文件

创建网络配置文件, 在 /etc/systemd/network 目录下, 创建两个文件 br0.netdevbr0.network.

br0.netdev 文件定义了桥接设备:

1
2
3
[NetDev]
Name=br0
Kind=bridge

br0.network 文件定义了桥接网络:

1
2
3
4
5
[Match]
Name=br0

[Network]
DHCP=yes

physical 接口配置文件

之后创建 eth0.network 文件 (eth0 替换为实际的物理网络接口名):

1
2
3
4
5
[Match]
Name=eth0

[Network]
Bridge=br0

重启 systemd-networkd 服务

1
sudo systemctl restart systemd-networkd

Linux-systemd-networkd-服务
http://example.com/2024/04/28/Linux-systemd-networkd-服务/
作者
Jie
发布于
2024年4月28日
许可协议