systemd-networkd
的 /etc/systemd/network/*.network
能不能一个文件配置多块网卡?不能
在 systemd-networkd 的配置中,一个 .network
文件不能直接为多块网卡配置不同的参数,但可以通过以下方式实现单文件匹配多块网卡并应用相同配置:
1. 通过 [Match]
节匹配多个网卡
在
.network
文件的[Match]
节中,使用 通配符 或 多条件组合,使同一配置文件适配多个网卡。示例:
[Match] # 匹配接口名以 "en" 开头的所有网卡(如 enp0s1、enp5s0) Name=en* # 或明确指定多个接口名(空格分隔) Name=enp0s1 enp0s2 # 或匹配多个 MAC 地址 MACAddress=11:22:33:44:55:66 aa:bb:cc:dd:ee:ff
逻辑关系:
- 同一条件(如
Name=
)中的多个值是“逻辑或”(匹配任意一个)。 - 不同条件(如
Name=
+MACAddress=
)是“逻辑与”(需同时满足)。
- 同一条件(如
2. 限制与注意事项
- 相同配置:匹配到的所有网卡将应用完全相同的配置(如相同的 IP、路由、DHCP 设置等)。
- 不同配置需分文件:若不同网卡需要不同配置(如不同 IP 地址),必须为每个网卡创建单独的
.network
文件。 - 通配符使用:
*
匹配任意字符(如en*
匹配所有以en
开头的接口)。?
匹配单个字符(如enp0s?
匹配enp0s1
、enp0s2
等)。
3. 示例:单文件配置多网卡
# /etc/systemd/network/multi-nics.network
[Match]
Name=enp0s1 enp0s2 # 匹配 enp0s1 和 enp0s2
[Network]
DHCP=yes # 同时为两个网卡启用 DHCP
DNS=8.8.8.8
4. 验证配置
# 重启 systemd-networkd 服务
sudo systemctl restart systemd-networkd
# 查看网卡状态及应用的配置
networkctl status enp0s1 enp0s2
5. 适用场景
- 多块网卡需要完全相同的网络配置(如均启用 DHCP)。
- 通过通配符批量管理相同类型的接口(如所有 USB 网卡
Name=usb*
)。
总结:
- 可以在一个
.network
文件中匹配多块网卡,但要求它们的配置完全一致。 - 若需差异化配置,必须为每个网卡创建单独的
.network
文件,并通过[Match]
节精确指定目标接口。
在/etc/systemd/network/*.network
文件里,一个文件不能直接配置多块网卡。systemd-networkd
中的.network
文件是用来为单块网络接口配置网络设置的。
.network
文件主要是借助[Match]
部分来指定适用的网络接口,而且通常一个.network
文件仅指定一个网络接口。比如:
[Match]
Name=enp0s3
[Network]
DHCP=yes
在这个例子里,[Match]
部分的Name=enp0s3
明确指出此配置仅适用于名为enp0s3
的网络接口。
要是你想配置多块网卡,就需要为每块网卡分别创建一个.network
文件。例如,若你有两块网卡enp0s3
和enp0s8
,可以创建两个文件:
/etc/systemd/network/enp0s3.network
[Match]
Name=enp0s3
[Network]
DHCP=yes
/etc/systemd/network/enp0s8.network
[Match]
Name=enp0s8
[Network]
Address=192.168.1.100/24
Gateway=192.168.1.1
DNS=8.8.8.8
如此一来,systemd-networkd
就能依据不同的.network
文件对各块网卡进行配置了。在配置完成之后,要重新加载systemd-networkd
服务,让新的配置生效:
sudo systemctl restart systemd-networkd
通过上述操作,你就可以为每块网卡单独配置网络设置了。