Linux的systemd-networkd配置:以太网(Ethernet)、绑定(Bond)、虚拟局域网(VLAN)、网桥(Bridge)笔记250712
在 systemd-networkd 中配置以太网(Ethernet)、绑定(Bond)、虚拟局域网(VLAN)和网桥(Bridge),需通过创建 .netdev
(定义虚拟设备)和 .network
(定义网络属性)配置文件实现。以下为详细配置指南,涵盖基础配置到高级拓扑(如 Bond + Bridge + VLAN),并附关键注意事项。
一、配置文件基础
-
路径 :
/etc/systemd/network/
-
文件类型 :
.netdev
:定义虚拟设备(Bond、VLAN、Bridge).network
:配置 IP 地址、路由、绑定从属接口等
-
优先级 :按文件名数字顺序生效(如
10-eth0.network
→20-bond0.netdev
)。 -
重载配置 :
bashsystemctl restart systemd-networkd
二、以太网(Ethernet)配置
仅需 .network
文件,无需 .netdev
。
示例 :为 eth0
配置静态 IP
文件:10-eth0.network
ini
[Match]
Name=eth0
[Network]
Address=192.168.1.100/24
Gateway=192.168.1.1
DNS=8.8.8.8
💡 说明:
Match
匹配物理接口名(如eth0
,enp3s0
)。- 若需 DHCP,替换为
DHCP=ipv4
。
三、绑定(Bond)配置
聚合多网卡提升带宽或冗余。
1. 创建 Bond 设备
文件:20-bond0.netdev
ini
[NetDev]
Name=bond0
Kind=bond
[Bond]
Mode=802.3ad # 常用模式:802.3ad(LACP)、active-backup(主备)
TransmitHashPolicy=layer3+4 # 流量分发策略
MIIMonitorSec=1s # 链路检测间隔
LACPTransmitRate=fast # LACP 报文速率
2. 添加从属接口
文件:20-bond0-slaves.network
ini
[Match]
Name=eth1 eth2 # 匹配多个物理接口
[Network]
Bond=bond0 # 绑定到 bond0
3. 为 Bond 配置 IP
文件:30-bond0.network
ini
[Match]
Name=bond0
[Network]
Address=10.0.0.5/24
BindCarrier=eth1 eth2 # 绑定物理接口状态
⚠️ 关键参数:
Mode
:
balance-rr
(轮询) |active-backup
(主备) |802.3ad
(动态聚合)MIIMonitorSec
:链路检测频率(建议 ≤2s)。
四、虚拟局域网(VLAN)配置
在物理接口或 Bond 上创建 VLAN 子接口。
1. 定义 VLAN 设备
文件:40-vlan10.netdev
ini
[NetDev]
Name=vlan10 # VLAN 接口名(自定义)
Kind=vlan
[VLAN]
Id=10 # VLAN ID(必需)
2. 关联父接口并配置 IP
文件:40-vlan10.network
ini
[Match]
Name=vlan10
[Network]
# 指定父接口(物理网卡或 Bond)
VLAN=eth0.10 # 或 VLAN=bond0.10
Address=192.168.10.5/24
💡 注意:
- 父接口(如
eth0
)需在.network
文件中声明VLAN=vlan10
以启用 VLAN 支持。- 避免同时使用
dev
和vlan.parent
(二者等价)。
五、网桥(Bridge)配置
用于连接虚拟机/容器或聚合多个网络接口。
1. 创建网桥设备
文件:30-br0.netdev
ini
[NetDev]
Name=br0
Kind=bridge
[Bridge]
STP=false # 禁用生成树协议(小型网络)
VLANFiltering=yes # 启用 VLAN 过滤(若需 VLAN 支持)
2. 添加桥接端口
文件:30-br0-ports.network
ini
[Match]
Name=eth3 bond0 # 支持物理接口或 Bond
[Network]
Bridge=br0 # 加入网桥
3. 为网桥配置 IP
文件:40-br0.network
ini
[Match]
Name=br0
[Network]
Address=172.16.1.100/24
# 若需在网桥上承载 VLAN
VLAN=br0.20 # 需额外定义 VLAN 设备
⚠️ 高级场景:
- VLAN-aware 网桥 :
- 启用
VLANFiltering=yes
,并在[BridgeVLAN]
段指定 VLAN 范围(如VLAN=2-4094
)。- 嵌套配置:将 Bond 加入网桥,再在网桥上创建 VLAN(见下文示例)。
六、高级拓扑示例:Bond + Bridge + VLAN
实现高可用与网络分段。
配置文件结构:
bash
/etc/systemd/network/
├── 10-bond-slaves.network # 绑定从属接口
├── 20-bond0.netdev # 定义 Bond
├── 30-bond0.network # Bond IP 配置
├── 40-br0.netdev # 定义网桥
├── 50-br0-ports.network # 将 Bond 加入网桥
├── 60-br0.network # 网桥 IP 配置
└── 70-br0-vlan20.network # 网桥上的 VLAN
关键步骤:
-
Bond 配置 (
20-bond0.netdev
):ini[NetDev] Name=bond0 Kind=bond [Bond] Mode=802.3ad
-
网桥配置 (
40-br0.netdev
):ini[NetDev] Name=br0 Kind=bridge [Bridge] VLANFiltering=true
-
将 Bond 加入网桥 (
50-br0-ports.network
):ini[Match] Name=bond0 [Network] Bridge=br0
-
在网桥上创建 VLAN (
70-br0-vlan20.network
):ini[Match] Name=br0 [Network] VLAN=br0.20
-
为 VLAN 配置 IP (新建
80-vlan20.network
):ini[Match] Name=br0.20 [Network] Address=10.20.0.5/24
💡 验证命令:
bashnetworkctl status bond0 br0 br0.20 # 查看设备状态 bridge vlan show # 检查网桥 VLAN 过滤
七、常见问题解决
-
VLAN 无法通信:
- 检查父接口的
.network
文件是否包含VLAN=vlanX
。 - 若使用网桥,确认
VLANFiltering=yes
并重启服务。
- 检查父接口的
-
Bond 模式不生效:
- 确认交换机配置匹配(如
802.3ad
需启用 LACP)。
- 确认交换机配置匹配(如
-
网桥未连接外部网络:
- 确保物理接口已加入网桥(
Bridge=br0
),且无独立 IP 配置。
- 确保物理接口已加入网桥(
最佳实践:
- 使用
systemd-analyze verify /etc/systemd/network/*
验证配置文件语法。- 复杂拓扑优先在测试环境验证,逐步叠加组件(物理接口 → Bond → 网桥 → VLAN)。
在 systemd-networkd 中配置以太网、绑定、VLAN 和网桥
systemd-networkd 是 systemd 生态系统的一部分,提供现代化的网络配置管理。下面详细介绍如何使用 systemd-networkd 配置各种网络组件。
目录结构概览
bash
/etc/systemd/network/
├── 10-ethernet.network # 基础以太网配置
├── 20-bond.netdev # 绑定接口定义
├── 20-bond-slaves.network # 绑定成员配置
├── 30-vlan.netdev # VLAN 接口定义
├── 40-bridge.netdev # 网桥接口定义
└── 40-bridge-ports.network # 网桥成员配置
一、以太网 (Ethernet) 配置
1. 基本配置 (10-ethernet.network
)
ini
[Match]
Name=eth0
[Network]
DHCP=ipv4
# 静态IP配置示例
# Address=192.168.1.100/24
# Gateway=192.168.1.1
# DNS=8.8.8.8
2. 高级选项
ini
[Match]
MACAddress=00:11:22:33:44:55
[Link]
MTUBytes=9000
RequiredForOnline=yes
[Network]
DHCP=no
Address=10.0.0.5/24
二、绑定 (Bond) 配置
1. 定义绑定接口 (20-bond.netdev
)
ini
[NetDev]
Name=bond0
Kind=bond
[Bond]
Mode=802.3ad
TransmitHashPolicy=layer3+4
MIIMonitorSec=100ms
LACPTransmitRate=fast
2. 添加绑定成员 (20-bond-slaves.network
)
ini
# 文件1: 20-bond-slave-eth1.network
[Match]
Name=eth1
[Network]
Bond=bond0
# 文件2: 20-bond-slave-eth2.network
[Match]
Name=eth2
[Network]
Bond=bond0
3. 绑定接口网络配置 (25-bond.network
)
ini
[Match]
Name=bond0
[Network]
Address=192.168.10.5/24
Gateway=192.168.10.1
DNS=192.168.10.1
三、虚拟局域网 (VLAN) 配置
1. 定义 VLAN 接口 (30-vlan.netdev
)
ini
[NetDev]
Name=vlan100
Kind=vlan
[VLAN]
Id=100
2. VLAN 网络配置 (30-vlan.network
)
ini
[Match]
Name=vlan100
[Network]
Address=10.10.100.5/24
Gateway=10.10.100.1
3. 在绑定接口上创建 VLAN
ini
# 30-vlan-on-bond.netdev
[NetDev]
Name=vlan200
Kind=vlan
[VLAN]
Id=200
Parent=bond0
四、网桥 (Bridge) 配置
1. 定义网桥接口 (40-bridge.netdev
)
ini
[NetDev]
Name=br0
Kind=bridge
[Bridge]
STP=yes
ForwardDelaySec=2
HelloTimeSec=1
MaxAgeSec=20
2. 添加网桥成员 (40-bridge-ports.network
)
ini
# 添加物理接口
[Match]
Name=eth3
[Network]
Bridge=br0
# 添加VLAN接口
[Match]
Name=vlan100
[Network]
Bridge=br0
3. 网桥网络配置 (45-bridge.network
)
ini
[Match]
Name=br0
[Network]
Address=172.16.0.10/24
DNS=172.16.0.1
# 或使用DHCP
# DHCP=ipv4
五、综合配置示例
场景:绑定 → VLAN → 网桥
ini
# 1. 绑定配置 (20-bond.netdev)
[NetDev]
Name=trunk-bond
Kind=bond
[Bond]
Mode=802.3ad
LACPTransmitRate=fast
# 2. 绑定成员 (20-bond-slaves.network)
[Match]
Name=eth1
[Network]
Bond=trunk-bond
[Match]
Name=eth2
[Network]
Bond=trunk-bond
# 3. VLAN配置 (30-vlan.netdev)
[NetDev]
Name=mgmt-vlan
Kind=vlan
[VLAN]
Id=100
Parent=trunk-bond
# 4. 网桥配置 (40-bridge.netdev)
[NetDev]
Name=br-mgmt
Kind=bridge
[Bridge]
STP=no
# 5. 添加VLAN到网桥 (40-bridge-ports.network)
[Match]
Name=mgmt-vlan
[Network]
Bridge=br-mgmt
# 6. 网桥网络配置 (45-bridge.network)
[Match]
Name=br-mgmt
[Network]
Address=10.20.30.40/24
Gateway=10.20.30.1
DNS=10.20.30.1
六、配置文件命名规则与顺序
systemd-networkd 按字典序处理配置文件,建议使用数字前缀:
bash
10-*.network # 基础接口配置
20-*.netdev # 虚拟设备定义
20-*.network # 虚拟设备成员
30-*.network # 虚拟设备网络配置
40-*.netdev # 上层虚拟设备
40-*.network # 上层设备成员
50-*.network # 最终网络配置
七、管理命令与调试
1. 启动/重启服务
bash
systemctl restart systemd-networkd
2. 查看设备状态
bash
networkctl list
networkctl status br0
3. 检查绑定状态
bash
cat /proc/net/bonding/bond0
4. 查看网桥信息
bash
bridge link
bridge fdb show
5. 检查 VLAN 配置
bash
ip -d link show
6. 日志查看
bash
journalctl -u systemd-networkd -f
八、高级配置技巧
1. 启用巨帧
ini
[Link]
MTUBytes=9000
2. VLAN 过滤
ini
# 在网桥成员上配置
[BridgePort]
VLAN=100-200
PVID=100
3. DHCP 高级选项
ini
[DHCP]
RouteMetric=100
UseDNS=yes
UseDomains=yes
4. IPv6 配置
ini
[Network]
DHCP=ipv6
Address=2001:db8::1/64
Gateway=2001:db8::fffe
5. 多地址支持
ini
[Network]
Address=192.168.1.100/24
Address=10.0.0.100/24
Address=2001:db8::100/64
九、故障排除指南
1. 接口未激活
- 检查
[Match]
部分是否正确 - 验证物理连接状态
ethtool eth0
- 查看日志
journalctl -u systemd-networkd
2. VLAN 流量不通
- 确认交换机端口配置为 trunk
- 检查 VLAN ID 是否匹配
- 验证父接口状态
3. 绑定接口故障
- 检查
/proc/net/bonding/bond0
- 确认 MIIMonitor 设置
- 验证链路聚合协议 (LACP) 配置
4. 网桥问题
- 使用
bridge fdb show
检查 MAC 表 - 验证 STP 状态
bridge stp show
- 检查端口状态
bridge link
十、完整配置示例
企业级网络拓扑
kotlin
物理接口: eth1, eth2 → 绑定接口 bond0
绑定接口 bond0 → VLAN 100 (管理), VLAN 200 (数据)
VLAN 100 → 网桥 br-mgmt
VLAN 200 → 网桥 br-data
配置文件结构
kotlin
/etc/systemd/network/
├── 10-bond-slave-eth1.network
├── 10-bond-slave-eth2.network
├── 20-bond.netdev
├── 30-vlan-mgmt.netdev
├── 30-vlan-data.netdev
├── 35-vlan-ports.network
├── 40-bridge-mgmt.netdev
├── 40-bridge-data.netdev
├── 45-bridge-mgmt.network
└── 45-bridge-data.network
文件内容
20-bond.netdev:
ini
[NetDev]
Name=bond0
Kind=bond
[Bond]
Mode=802.3ad
LACPTransmitRate=fast
MIIMonitorSec=100ms
30-vlan-mgmt.netdev:
ini
[NetDev]
Name=mgmt-vlan
Kind=vlan
[VLAN]
Id=100
Parent=bond0
40-bridge-mgmt.netdev:
ini
[NetDev]
Name=br-mgmt
Kind=bridge
[Bridge]
STP=yes
ForwardDelaySec=2
45-bridge-mgmt.network:
ini
[Match]
Name=br-mgmt
[Network]
Address=10.100.0.5/24
Gateway=10.100.0.1
DNS=10.100.0.1
十一、最佳实践建议
-
命名规范:
- 使用描述性名称 (如
br-mgmt
替代br0
) - 保持命名一致性
- 使用描述性名称 (如
-
配置顺序:
graph LR A[物理接口] --> B[绑定接口] B --> C[VLAN接口] C --> D[网桥接口] D --> E[IP配置] -
安全增强:
ini[Bridge] VLANFiltering=yes
-
性能优化:
ini[Link] MTUBytes=9000 TCPCongestionControl=bbr
-
文档化:
ini# /etc/systemd/network/README # 网络配置说明 # bond0: 聚合 eth1 和 eth2 # br-mgmt: 承载管理流量 (VLAN100) # br-data: 承载数据流量 (VLAN200)
十二、迁移与备份
1. 备份配置
bash
tar czf network-config-backup-$(date +%F).tgz /etc/systemd/network/
2. 配置重置
bash
rm /etc/systemd/network/* && systemctl restart systemd-networkd
3. 转换传统配置
bash
# 将 ifupdown 配置转换为 systemd-networkd
ifupdown2networkd -i /etc/network/interfaces
通过 systemd-networkd,您可以构建从简单到复杂的企业级网络架构,其声明式配置易于版本控制和自动化管理。
在 systemd-networkd 中配置以太网(Ethernet)、绑定(Bond)、虚拟局域网(VLAN)和网桥(Bridge),需通过创建 .netdev
(定义虚拟设备)和 .network
(定义网络属性)配置文件实现。以下为详细配置指南,涵盖基础配置到高级拓扑(如 Bond + Bridge + VLAN),并附关键注意事项。
一、配置文件基础
-
路径 :
/etc/systemd/network/
-
文件类型 :
.netdev
:定义虚拟设备(Bond、VLAN、Bridge).network
:配置 IP 地址、路由、绑定从属接口等
-
优先级 :按文件名数字顺序生效(如
10-eth0.network
→20-bond0.netdev
)。 -
重载配置 :
bashsystemctl restart systemd-networkd
二、以太网(Ethernet)配置
仅需 .network
文件,无需 .netdev
。
示例 :为 eth0
配置静态 IP
文件:10-eth0.network
ini
[Match]
Name=eth0
[Network]
Address=192.168.1.100/24
Gateway=192.168.1.1
DNS=8.8.8.8
💡 说明:
Match
匹配物理接口名(如eth0
,enp3s0
)。- 若需 DHCP,替换为
DHCP=ipv4
。
三、绑定(Bond)配置
聚合多网卡提升带宽或冗余。
1. 创建 Bond 设备
文件:20-bond0.netdev
ini
[NetDev]
Name=bond0
Kind=bond
[Bond]
Mode=802.3ad # 常用模式:802.3ad(LACP)、active-backup(主备)
TransmitHashPolicy=layer3+4 # 流量分发策略
MIIMonitorSec=1s # 链路检测间隔
LACPTransmitRate=fast # LACP 报文速率
2. 添加从属接口
文件:20-bond0-slaves.network
ini
[Match]
Name=eth1 eth2 # 匹配多个物理接口
[Network]
Bond=bond0 # 绑定到 bond0
3. 为 Bond 配置 IP
文件:30-bond0.network
ini
[Match]
Name=bond0
[Network]
Address=10.0.0.5/24
BindCarrier=eth1 eth2 # 绑定物理接口状态
⚠️ 关键参数:
Mode
:
balance-rr
(轮询) |active-backup
(主备) |802.3ad
(动态聚合)MIIMonitorSec
:链路检测频率(建议 ≤2s)。
四、虚拟局域网(VLAN)配置
在物理接口或 Bond 上创建 VLAN 子接口。
1. 定义 VLAN 设备
文件:40-vlan10.netdev
ini
[NetDev]
Name=vlan10 # VLAN 接口名(自定义)
Kind=vlan
[VLAN]
Id=10 # VLAN ID(必需)
2. 关联父接口并配置 IP
文件:40-vlan10.network
ini
[Match]
Name=vlan10
[Network]
# 指定父接口(物理网卡或 Bond)
VLAN=eth0.10 # 或 VLAN=bond0.10
Address=192.168.10.5/24
💡 注意:
- 父接口(如
eth0
)需在.network
文件中声明VLAN=vlan10
以启用 VLAN 支持。- 避免同时使用
dev
和vlan.parent
(二者等价)。
五、网桥(Bridge)配置
用于连接虚拟机/容器或聚合多个网络接口。
1. 创建网桥设备
文件:30-br0.netdev
ini
[NetDev]
Name=br0
Kind=bridge
[Bridge]
STP=false # 禁用生成树协议(小型网络)
VLANFiltering=yes # 启用 VLAN 过滤(若需 VLAN 支持)
2. 添加桥接端口
文件:30-br0-ports.network
ini
[Match]
Name=eth3 bond0 # 支持物理接口或 Bond
[Network]
Bridge=br0 # 加入网桥
3. 为网桥配置 IP
文件:40-br0.network
ini
[Match]
Name=br0
[Network]
Address=172.16.1.100/24
# 若需在网桥上承载 VLAN
VLAN=br0.20 # 需额外定义 VLAN 设备
⚠️ 高级场景:
- VLAN-aware 网桥 :
- 启用
VLANFiltering=yes
,并在[BridgeVLAN]
段指定 VLAN 范围(如VLAN=2-4094
)。- 嵌套配置:将 Bond 加入网桥,再在网桥上创建 VLAN(见下文示例)。
六、高级拓扑示例:Bond + Bridge + VLAN
实现高可用与网络分段。
配置文件结构:
bash
/etc/systemd/network/
├── 10-bond-slaves.network # 绑定从属接口
├── 20-bond0.netdev # 定义 Bond
├── 30-bond0.network # Bond IP 配置
├── 40-br0.netdev # 定义网桥
├── 50-br0-ports.network # 将 Bond 加入网桥
├── 60-br0.network # 网桥 IP 配置
└── 70-br0-vlan20.network # 网桥上的 VLAN
关键步骤:
-
Bond 配置 (
20-bond0.netdev
):ini[NetDev] Name=bond0 Kind=bond [Bond] Mode=802.3ad
-
网桥配置 (
40-br0.netdev
):ini[NetDev] Name=br0 Kind=bridge [Bridge] VLANFiltering=true
-
将 Bond 加入网桥 (
50-br0-ports.network
):ini[Match] Name=bond0 [Network] Bridge=br0
-
在网桥上创建 VLAN (
70-br0-vlan20.network
):ini[Match] Name=br0 [Network] VLAN=br0.20
-
为 VLAN 配置 IP (新建
80-vlan20.network
):ini[Match] Name=br0.20 [Network] Address=10.20.0.5/24
💡 验证命令:
bashnetworkctl status bond0 br0 br0.20 # 查看设备状态 bridge vlan show # 检查网桥 VLAN 过滤
七、常见问题解决
-
VLAN 无法通信:
- 检查父接口的
.network
文件是否包含VLAN=vlanX
。 - 若使用网桥,确认
VLANFiltering=yes
并重启服务。
- 检查父接口的
-
Bond 模式不生效:
- 确认交换机配置匹配(如
802.3ad
需启用 LACP)。
- 确认交换机配置匹配(如
-
网桥未连接外部网络:
- 确保物理接口已加入网桥(
Bridge=br0
),且无独立 IP 配置。
- 确保物理接口已加入网桥(
最佳实践:
- 使用
systemd-analyze verify /etc/systemd/network/*
验证配置文件语法。- 复杂拓扑优先在测试环境验证,逐步叠加组件(物理接口 → Bond → 网桥 → VLAN)。
使用 systemd-networkd 配置 Ethernet、Bond、VLAN 和 Bridge
systemd-networkd 是现代化的 Linux 网络管理服务,提供简单高效的网络配置方式。以下是针对不同网络组件的完整配置指南:
一、配置文件结构
bash
/etc/systemd/network/
├── 10-ethernet.network # 物理网卡配置
├── 20-bond.netdev # 绑定接口定义
├── 21-bond-slave.network # 绑定从属配置
├── 30-vlan.netdev # VLAN接口定义
├── 31-vlan.network # VLAN网络配置
├── 40-bridge.netdev # 网桥定义
└── 41-bridge-slave.network # 网桥从属配置
二、物理以太网卡 (Ethernet) 配置
示例:/etc/systemd/network/10-enp1s0.network
ini
[Match]
Name=enp1s0
[Network]
# 使用 DHCP
DHCP=ipv4
# 静态 IP 配置(可选)
# Address=192.168.1.100/24
# Gateway=192.168.1.1
# DNS=8.8.8.8
三、绑定接口 (Bond) 配置
1. 创建绑定接口:/etc/systemd/network/20-bond0.netdev
ini
[NetDev]
Name=bond0
Kind=bond
[Bond]
Mode=802.3ad
TransmitHashPolicy=layer3+4
MIIMonitorSec=100ms
LACPTransmitRate=fast
2. 配置绑定从属:/etc/systemd/network/21-bond-slaves.network
ini
# 从属接口 1
[Match]
Name=enp2s0
[Network]
Bond=bond0
# 从属接口 2
[Match]
Name=enp3s0
[Network]
Bond=bond0
3. 绑定接口网络配置:/etc/systemd/network/25-bond0.network
ini
[Match]
Name=bond0
[Network]
DHCP=ipv4
四、虚拟局域网 (VLAN) 配置
1. 创建 VLAN 接口:/etc/systemd/network/30-vlan10.netdev
ini
[NetDev]
Name=vlan10
Kind=vlan
[VLAN]
Id=10
2. VLAN 网络配置:/etc/systemd/network/31-vlan10.network
ini
[Match]
Name=vlan10
[Network]
Address=10.10.10.2/24
Gateway=10.10.10.1
DNS=10.10.10.53
五、网桥 (Bridge) 配置
1. 创建网桥:/etc/systemd/network/40-br0.netdev
ini
[NetDev]
Name=br0
Kind=bridge
[Bridge]
STP=no
ForwardDelaySec=0
HelloTimeSec=2
MaxAgeSec=20
AgeingTimeSec=300
2. 添加接口到网桥:/etc/systemd/network/41-bridge-slaves.network
ini
# 添加物理接口
[Match]
Name=enp4s0
[Network]
Bridge=br0
# 添加 VLAN 接口
[Match]
Name=vlan10
[Network]
Bridge=br0
3. 网桥网络配置:/etc/systemd/network/45-br0.network
ini
[Match]
Name=br0
[Network]
DHCP=ipv4
# 静态 IP 配置
# Address=192.168.1.200/24
# Gateway=192.168.1.1
六、高级组合配置示例
场景:Bonding + VLAN + Bridge
bash
# 绑定接口 (bond0)
/etc/systemd/network/20-bond0.netdev
/etc/systemd/network/21-bond-slaves.network
# 在绑定上创建 VLAN
/etc/systemd/network/30-vlan100.netdev:
[NetDev]
Name=vlan100
Kind=vlan
[VLAN]
Id=100
# 将 VLAN 加入网桥
/etc/systemd/network/40-br-vlan100.netdev:
[NetDev]
Name=br-vlan100
Kind=bridge
/etc/systemd/network/41-bridge-vlan100.network:
[Match]
Name=vlan100
[Network]
Bridge=br-vlan100
# 网桥 IP 配置
/etc/systemd/network/45-br-vlan100.network:
[Match]
Name=br-vlan100
[Network]
Address=10.100.0.1/24
七、配置优先级说明
文件前缀 | 配置类型 | 处理顺序 |
---|---|---|
10-* | 物理接口 | 最先处理 |
20-* | Bond/VLAN | 次级处理 |
30-* | 虚拟接口 | 再次级处理 |
40-* | 网桥 | 最后处理 |
八、管理命令
1. 启用并启动服务
bash
sudo systemctl enable --now systemd-networkd
sudo systemctl enable --now systemd-resolved # DNS 解析服务
2. 检查配置状态
bash
# 查看网络设备状态
networkctl list
# 查看特定设备详情
networkctl status br0
# 检查绑定状态
cat /proc/net/bonding/bond0
# 查看网桥信息
bridge link
3. 重载配置
bash
# 测试配置
sudo networkctl reconfigure bond0
# 完全重载
sudo systemctl restart systemd-networkd
九、故障排除
1. 查看日志
bash
journalctl -u systemd-networkd -f
2. 调试命令
bash
# 查看所有网络接口
ip -br link show
# 检查路由
ip route show
# 检查ARP表
ip neigh show
3. 常见问题解决
- 接口未激活 :检查
[Match]
部分名称是否正确 - VLAN 不通:确认交换机端口配置为 trunk 模式
- 网桥 STP 问题 :禁用 STP(
STP=no
)或调整时间参数 - 绑定模式不工作:确认网卡和交换机支持所选绑定模式
十、最佳实践
-
命名规范:
ini[Match] Name=enp* eth* # 使用通配符匹配接口
-
禁用未使用服务:
bashsudo systemctl disable --now NetworkManager
-
配置备份:
bash# 备份整个配置目录 sudo cp -r /etc/systemd/network /etc/systemd/network.bak
-
性能优化:
ini# 在 .network 文件中 [Link] RequiredForOnline=no # 避免接口延迟启动
-
安全增强:
ini[Network] IPv6AcceptRA=no # 禁用 IPv6 路由通告 LLMNR=no # 禁用链路本地多播名称解析
通过以上配置,您可以构建从简单到复杂的各种网络拓扑。systemd-networkd 的声明式配置方式提供了稳定可靠的网络管理方案,特别适合服务器和无头系统使用。
在 systemd-networkd 中配置以太网、绑定(Bond)、虚拟局域网(VLAN)和网桥(Bridge)需要创建 .netdev
(定义虚拟设备)和 .network
(配置网络参数)文件。以下是详细配置指南:
1. 以太网 (Ethernet)
配置文件 : /etc/systemd/network/20-wired.network
ini
[Match]
Name=eth0
[Network]
# 动态IP (DHCP)
DHCP=ipv4
# 或静态IP
# Address=192.168.1.10/24
# Gateway=192.168.1.1
# DNS=8.8.8.8
2. 绑定 (Bond)
将多个物理接口聚合成一个逻辑接口(如 bond0
)。
步骤 1: 创建 Bond 设备
配置文件 : /etc/systemd/network/10-bond.netdev
ini
[NetDev]
Name=bond0
Kind=bond
[Bond]
Mode=active-backup # 模式:active-backup, balance-rr, 802.3ad 等
Miimon=100 # 链路监测间隔(ms)
步骤 2: 添加从属接口
配置文件 : /etc/systemd/network/20-bond-slaves.network
ini
[Match]
Name=eth0 eth1 # 需绑定的物理接口
[Network]
Bond=bond0 # 关联到 bond0
步骤 3: 配置 Bond IP
配置文件 : /etc/systemd/network/30-bond-ip.network
ini
[Match]
Name=bond0
[Network]
DHCP=ipv4
# 或静态IP
# Address=192.168.1.10/24
# Gateway=192.168.1.1
3. 虚拟局域网 (VLAN)
在物理接口上创建 VLAN 子接口(如 eth0.100
)。
步骤 1: 创建 VLAN 设备
配置文件 : /etc/systemd/network/10-vlan100.netdev
ini
[NetDev]
Name=eth0.100
Kind=vlan
[VLAN]
Id=100 # VLAN ID
步骤 2: 配置物理接口承载 VLAN
配置文件 : /etc/systemd/network/20-vlan-host.network
ini
[Match]
Name=eth0 # 物理接口
[Network]
VLAN=eth0.100 # 承载的 VLAN 设备
步骤 3: 配置 VLAN IP
配置文件 : /etc/systemd/network/30-vlan-ip.network
ini
[Match]
Name=eth0.100
[Network]
Address=192.168.100.10/24
Gateway=192.168.100.1
4. 网桥 (Bridge)
将多个接口桥接成一个二层网络(如 br0
)。
步骤 1: 创建网桥设备
配置文件 : /etc/systemd/network/10-bridge.netdev
ini
[NetDev]
Name=br0
Kind=bridge
步骤 2: 添加桥接成员
配置文件 : /etc/systemd/network/20-bridge-slaves.network
ini
[Match]
Name=eth0 # 物理接口或 VLAN
[Network]
Bridge=br0 # 加入网桥
步骤 3: 配置网桥 IP
配置文件 : /etc/systemd/network/30-bridge-ip.network
ini
[Match]
Name=br0
[Network]
DHCP=ipv4
# 或静态IP
# Address=192.168.1.10/24
# Gateway=192.168.1.1
完整示例:组合配置
目标:
- Bond 接口
bond0
(成员eth0
,eth1
) - 在
bond0
上创建 VLANbond0.100
- 将 VLAN 加入网桥
br0
文件结构:
/etc/systemd/network/10-bond.netdev
→ 定义bond0
/etc/systemd/network/20-bond-slaves.network
→ 绑定eth0,eth1
到bond0
/etc/systemd/network/30-vlan100.netdev
→ 在bond0
上创建 VLAN 100/etc/systemd/network/40-bridge.netdev
→ 定义网桥br0
/etc/systemd/network/50-bridge-add.network
→ 将bond0.100
加入br0
/etc/systemd/network/60-bridge-ip.network
→ 为br0
配置 IP
关键命令:
bash
# 重启服务生效
sudo systemctl restart systemd-networkd
# 查看设备状态
networkctl list
# 检查网桥
bridge link
# 检查 Bond
cat /proc/net/bonding/bond0
注意事项:
- 文件名前缀数字(如
10-
,20-
)决定处理顺序。 - 物理接口(如
eth0
)无需单独配置 IP,它们作为从属设备工作。 - 使用
systemd-networkd
时,需禁用其他网络服务(如 NetworkManager)。
通过以上配置,可灵活构建复杂网络拓扑。根据实际需求调整模式(如 Bond 的负载均衡策略)和参数。
在 systemd-networkd
中配置以太网、绑定、VLAN 和网桥需要创建一系列 .netdev
和 .network
配置文件。以下是完整的配置指南,假设使用两个物理接口 eth0
和 eth1
:
网络拓扑设计
配置文件目录
所有配置文件位于 /etc/systemd/network/
,按数字前缀排序执行:
bash
/etc/systemd/network/
├── 10-eth0.network
├── 10-eth1.network
├── 20-bond0.netdev
├── 30-vlan10.netdev
├── 40-br0.netdev
├── 50-vlan10.network
└── 60-br0.network
1. 以太网接口配置
物理接口 eth0 (10-eth0.network
):
ini
[Match]
Name=eth0
[Network]
# 仅作为绑定从属,不配置IP
Bond=bond0
物理接口 eth1 (10-eth1.network
):
ini
[Match]
Name=eth1
[Network]
Bond=bond0
2. 绑定接口配置
创建绑定 bond0 (20-bond0.netdev
):
ini
[NetDev]
Name=bond0
Kind=bond
[Bond]
Mode=802.3ad # 链路聚合模式
LACPTransmitRate=fast # 快速LACP
MIIMonitorSec=100ms # 链路检测间隔
TransmitHashPolicy=layer3+4 # 流量分发策略
绑定网络参数 (可选,这里不配IP):
ini
# 无需单独.network文件,IP将在网桥配置
3. VLAN 配置
创建 VLAN 接口 (30-vlan10.netdev
):
ini
[NetDev]
Name=vlan10
Kind=vlan
[VLAN]
Id=10 # VLAN ID
Parent=bond0 # 基于绑定接口
关联 VLAN 到网桥 (50-vlan10.network
):
ini
[Match]
Name=vlan10
[Network]
Bridge=br0 # 加入网桥
4. 网桥配置
创建网桥 br0 (40-br0.netdev
):
ini
[NetDev]
Name=br0
Kind=bridge
[Bridge]
STP=on # 启用生成树
ForwardDelaySec=2 # 转发延迟
VLANFiltering=on # 启用VLAN过滤
网桥 IP 配置 (60-br0.network
):
ini
[Match]
Name=br0
[Network]
Address=192.168.10.100/24
Gateway=192.168.10.1
DNS=8.8.8.8
DNS=8.8.4.4
# 可选DHCP
# DHCP=ipv4
5. 高级配置选项
VLAN 过滤规则
在 40-br0.netdev
添加:
ini
[Bridge]
VLANFiltering=on
# 允许VLAN 10和20通过
BridgeVLAN=10
BridgeVLAN=20
网桥端口优先级
在 50-vlan10.network
添加:
ini
[Bridge]
Priority=32 # 端口优先级(0-63)
Cost=200 # 路径成本
6. 应用配置
bash
# 重启服务
sudo systemctl restart systemd-networkd
# 查看状态
networkctl list
bridge link
ip -d link show br0
7. 完整配置验证
bash
# 1. 检查绑定状态
cat /proc/net/bonding/bond0
# 2. 验证VLAN
ip -d link show vlan10 | grep vlan
# 3. 检查网桥
bridge vlan show
bridge fdb show br0
# 4. 测试连通性
ping -I br0 192.168.10.1
8. 故障排除技巧
常见问题解决:
-
绑定接口不工作:
bashjournalctl -u systemd-networkd | grep bond0 cat /sys/class/net/bond0/bonding/mode
-
VLAN 流量不通:
bashbridge vlan show # 确保物理接口允许VLAN bridge vlan add vid 10 dev eth0
-
STP 阻塞端口:
bashbridge link show | grep blocked # 调整端口优先级 bridge link set dev vlan10 priority 32
9. 持久化与启动
所有配置已在 /etc/systemd/network/
永久保存。验证重启:
bash
sudo reboot
networkctl status br0
关键点:配置文件按数字前缀顺序处理,确保依赖关系正确(先创建设备后配置网络)。
这种配置适用于:
- 服务器高可用网络
- KVM/LXC 虚拟化平台
- 复杂网络隔离环境
- 需要链路聚合+VLAN+网桥的融合场景
在 systemd-networkd 中配置以太网、绑定(Bond)、虚拟局域网(VLAN)和网桥(Bridge)需要创建 .netdev
和 .network
配置文件。以下分步骤详解配置方法:
1. 准备工作
-
配置文件位置 :
/etc/systemd/network/
-
文件命名规则 :
<优先级>-<名称>.<类型>
(如10-eth0.network
) -
启用服务 :
bashsudo systemctl enable --now systemd-networkd
2. 以太网(Ethernet)配置
示例 :为 eth0
配置静态 IP
创建文件 /etc/systemd/network/10-eth0.network
:
ini
[Match]
Name=eth0
[Network]
Address=192.168.1.10/24
Gateway=192.168.1.1
DNS=8.8.8.8
3. 绑定(Bond)配置
步骤 1:创建 Bond 设备
创建文件 /etc/systemd/network/20-bond0.netdev
:
ini
[NetDev]
Name=bond0
Kind=bond
[Bond]
Mode=active-backup # 绑定模式(如 active-backup、802.3ad)
MIIMonitorSec=1s # 链路检测间隔
PrimaryReselectPolicy=always
步骤 2:添加从属接口(如 eth1, eth2)
创建文件 /etc/systemd/network/21-eth1.network
:
ini
[Match]
Name=eth1
[Network]
Bond=bond0
创建文件 /etc/systemd/network/22-eth2.network
(类似 eth1)。
步骤 3:配置 Bond 的网络
创建文件 /etc/systemd/network/30-bond0.network
:
ini
[Match]
Name=bond0
[Network]
Address=192.168.2.10/24
Gateway=192.168.2.1
4. 虚拟局域网(VLAN)配置
步骤 1:创建 VLAN 设备
在 eth0
上创建 VLAN ID 10:
创建文件 /etc/systemd/network/40-vlan10.netdev
:
ini
[NetDev]
Name=vlan10
Kind=vlan
[VLAN]
Id=10
步骤 2:配置父接口(eth0)
修改 /etc/systemd/network/10-eth0.network
,添加:
ini
[Network]
VLAN=vlan10 # 声明父接口承载此 VLAN
步骤 3:配置 VLAN 网络
创建文件 /etc/systemd/network/50-vlan10.network
:
ini
[Match]
Name=vlan10
[Network]
Address=192.168.10.10/24
5. 网桥(Bridge)配置
步骤 1:创建网桥设备
创建文件 /etc/systemd/network/60-br0.netdev
:
ini
[NetDev]
Name=br0
Kind=bridge
[Bridge]
STP=on # 启用生成树协议
步骤 2:添加桥接接口(如 eth3)
创建文件 /etc/systemd/network/61-eth3.network
:
ini
[Match]
Name=eth3
[Network]
Bridge=br0 # 将此接口加入网桥
步骤 3:配置网桥网络
创建文件 /etc/systemd/network/70-br0.network
:
ini
[Match]
Name=br0
[Network]
Address=192.168.3.10/24
6. 应用配置
bash
sudo networkctl reload # 重新加载配置
sudo networkctl status # 检查状态
关键说明
-
文件优先级 :systemd 按文件名顺序处理配置(如
10-...
优先于20-...
)。 -
依赖关系 :
- Bond/VLAN/网桥需先定义
.netdev
,再通过.network
绑定接口。 - 父接口(如 Bond 的从属接口)不应配置 IP,由聚合接口管理。
- Bond/VLAN/网桥需先定义
-
验证工具 :
bashnetworkctl list # 列出所有设备 networkctl status bond0 # 查看 bond0 状态 ip addr show vlan10 # 检查 VLAN 接口 bridge link # 查看网桥成员
注意:若接口被其他服务管理(如 NetworkManager),需先禁用冲突服务。
在 systemd-networkd
中配置以太网(Ethernet)、绑定(Bond)、虚拟局域网(VLAN)和网桥(Bridge)需要创建 .network
、.netdev
和 .link
文件。以下是详细配置步骤:
1. 以太网 (Ethernet)
配置静态 IP :创建 /etc/systemd/network/20-wired.network
ini
[Match]
Name=eth0 # 替换为实际接口名
[Network]
Address=192.168.1.10/24
Gateway=192.168.1.1
DNS=8.8.8.8
DHCP 配置:
ini
[Match]
Name=eth0
[Network]
DHCP=ipv4
2. 绑定 (Bond)
步骤 1:创建绑定接口
创建 /etc/systemd/network/10-bond0.netdev
ini
[NetDev]
Name=bond0
Kind=bond
[Bond]
Mode=active-backup # 模式:active-backup/balance-rr/802.3ad 等
MIIMonitorSec=1s # 链路检测间隔
步骤 2:配置绑定接口网络
创建 /etc/systemd/network/20-bond0.network
ini
[Match]
Name=bond0
[Network]
Address=192.168.1.20/24
Gateway=192.168.1.1
步骤 3:添加从属接口
创建 /etc/systemd/network/30-bond-slave.network
ini
[Match]
Name=eth1 eth2 # 绑定成员接口
[Network]
Bond=bond0
3. 虚拟局域网 (VLAN)
步骤 1:创建 VLAN 接口
创建 /etc/systemd/network/10-vlan100.netdev
ini
[NetDev]
Name=vlan100
Kind=vlan
[VLAN]
Id=100 # VLAN ID
步骤 2:配置 VLAN 网络
创建 /etc/systemd/network/20-vlan100.network
ini
[Match]
Name=vlan100
[Network]
Address=192.168.100.10/24
步骤 3:绑定到物理接口
在父接口配置中启用 VLAN(如 /etc/systemd/network/30-eth0.network
):
ini
[Match]
Name=eth0
[Network]
VLAN=vlan100 # 关联 VLAN
4. 网桥 (Bridge)
步骤 1:创建网桥接口
创建 /etc/systemd/network/10-br0.netdev
ini
[NetDev]
Name=br0
Kind=bridge
[Bridge]
STP=on # 生成树协议
步骤 2:配置网桥网络
创建 /etc/systemd/network/20-br0.network
ini
[Match]
Name=br0
[Network]
Address=192.168.1.30/24
Gateway=192.168.1.1
步骤 3:添加成员接口(如 eth0)
创建 /etc/systemd/network/30-bridge-port.network
ini
[Match]
Name=eth0 # 网桥成员接口
[Network]
Bridge=br0 # 加入网桥
关键命令
-
应用配置 :
bashsudo systemctl restart systemd-networkd
-
检查状态 :
bashnetworkctl list networkctl status bond0 ip addr show vlan100
配置文件优先级
- 文件按字典序排序(如
10-name.netdev
优先于20-name.network
)。 - 使用
[Match]
部分精确匹配接口。
注意事项
-
禁用其他网络服务(如
NetworkManager
):bashsudo systemctl stop NetworkManager sudo systemctl disable NetworkManager
-
复杂场景(如绑定+VLAN)需组合配置:
- 绑定接口
bond0
→ 添加 VLANbond0.100
→ 加入网桥br0
。
- 绑定接口
通过以上配置,systemd-networkd
可实现灵活的网络拓扑管理。
在 systemd-networkd
中配置以太网(Ethernet)、绑定(Bond)、虚拟局域网(VLAN)和网桥(Bridge)需要创建 .network
和 .netdev
配置文件。以下是完整配置指南:
1. 前置准备
bash
# 停止并禁用 NetworkManager
sudo systemctl stop NetworkManager
sudo systemctl disable NetworkManager
# 启用 systemd-networkd 和 systemd-resolved(DNS)
sudo systemctl enable --now systemd-networkd
sudo systemctl enable --now systemd-resolved
sudo ln -sf /run/systemd/resolve/stub-resolv.conf /etc/resolv.conf
2. 配置文件目录
所有配置位于 /etc/systemd/network/
,文件命名规范:
.netdev
:创建虚拟设备(Bond/VLAN/Bridge).network
:配置网络接口参数(IP/DHCP 等)
3. 配置示例
(1) 以太网 (Ethernet)
bash
# /etc/systemd/network/20-wired.network
[Match]
Name=enp1s0
[Network]
DHCP=ipv4
# 静态 IP 配置示例:
# Address=192.168.1.10/24
# Gateway=192.168.1.1
# DNS=8.8.8.8
(2) 绑定 (Bond)
将多个物理网卡绑定为单一逻辑接口(高可用/负载均衡)
步骤 1:创建 Bond 设备
bash
# /etc/systemd/network/10-bond0.netdev
[NetDev]
Name=bond0
Kind=bond
[Bond]
Mode=active-backup # 模式:active-backup(1), balance-rr(0)
MIIMonitorSec=1s # 链路检测间隔
PrimaryReselectPolicy=always
步骤 2:将物理网卡加入 Bond
bash
# /etc/systemd/network/20-bond0-slave1.network
[Match]
Name=enp1s0
[Network]
Bond=bond0
bash
# /etc/systemd/network/20-bond0-slave2.network
[Match]
Name=enp2s0
[Network]
Bond=bond0
步骤 3:配置 Bond IP
bash
# /etc/systemd/network/30-bond0.network
[Match]
Name=bond0
[Network]
DHCP=ipv4
# 静态 IP:
# Address=192.168.1.20/24
# Gateway=192.168.1.1
(3) 虚拟局域网 (VLAN)
在物理接口/Bond 上创建虚拟子网
bash
# /etc/systemd/network/40-vlan100.netdev
[NetDev]
Name=vlan100
Kind=vlan
[VLAN]
Id=100 # VLAN ID
bash
# /etc/systemd/network/50-vlan100.network
[Match]
Name=vlan100
[Network]
Address=192.168.100.10/24
# 若需通过主接口路由:
# VLAN=bond0.100 # 关联到 bond0 的 VLAN
(4) 网桥 (Bridge)
连接虚拟机/容器到物理网络
步骤 1:创建网桥设备
bash
# /etc/systemd/network/60-br0.netdev
[NetDev]
Name=br0
Kind=bridge
[Bridge]
STP=off # 生成树协议
ForwardDelay=0
步骤 2:将物理接口加入网桥
bash
# /etc/systemd/network/70-br0-slave.network
[Match]
Name=bond0 # 或 enp1s0
[Network]
Bridge=br0 # 将此接口加入网桥
步骤 3:配置网桥 IP
bash
# /etc/systemd/network/80-br0.network
[Match]
Name=br0
[Network]
DHCP=ipv4
# 静态 IP:
# Address=192.168.1.30/24
# Gateway=192.168.1.1
4. 应用配置
bash
# 重启服务
sudo systemctl restart systemd-networkd
# 查看状态
networkctl list
brctl show # 查看网桥
ip addr show bond0 # 查看绑定
ip -d link show vlan100 # 查看 VLAN
5. 完整配置示例拓扑
makefile
物理网卡:
enp1s0 + enp2s0
↓ 绑定 (bond0)
↓ 添加 VLAN100 (vlan100)
↓ 加入网桥 (br0)
最终:
虚拟机/容器 → br0 → vlan100 → bond0 → 物理网络
6. 故障排除
-
检查配置文件语法 :
bashnetworkd-delta /etc/systemd/network/
-
查看日志 :
bashjournalctl -u systemd-networkd -f
-
验证网络 :
baship link show # 检查接口状态 networkctl status br0
注意 :配置文件按字母顺序处理,推荐使用数字前缀(如
10-
,20-
)控制加载顺序。
通过以上配置,您可以在纯 systemd-networkd
环境下实现复杂的网络拓扑,无需依赖传统网络管理工具。
在 systemd-networkd 中配置以太网(Ethernet)、绑定(Bond)、VLAN 和网桥(Bridge)需要创建 .netdev
(定义虚拟设备)和 .network
(配置网络参数)文件。以下是详细配置指南:
1. 以太网 (Ethernet)
配置物理接口(如 eth0
)的 IP 地址:
bash
# /etc/systemd/network/20-eth0.network
[Match]
Name=eth0
[Network]
Address=192.168.1.10/24
Gateway=192.168.1.1
DNS=8.8.8.8
2. 绑定 (Bond)
步骤 1:创建 Bond 设备
bash
# /etc/systemd/network/10-bond0.netdev
[NetDev]
Name=bond0
Kind=bond
[Bond]
Mode=active-backup # 绑定模式(如 active-backup、balance-rr)
MIIMonitorSec=1s # 链路检测间隔
步骤 2:将物理接口加入 Bond
bash
# /etc/systemd/network/20-eth-bond.network
[Match]
Name=eth1 eth2 # 从属接口列表
[Network]
Bond=bond0 # 绑定到 bond0
步骤 3:为 Bond 配置 IP
bash
# /etc/systemd/network/30-bond0.network
[Match]
Name=bond0
[Network]
Address=192.168.1.20/24
Gateway=192.168.1.1
3. VLAN
步骤 1:创建 VLAN 设备(基于 eth0
)
bash
# /etc/systemd/network/10-vlan100.netdev
[NetDev]
Name=vlan100
Kind=vlan
[VLAN]
Id=100 # VLAN ID
步骤 2:为 VLAN 配置 IP
bash
# /etc/systemd/network/20-vlan100.network
[Match]
Name=vlan100
[Network]
Address=192.168.100.10/24
4. 网桥 (Bridge)
步骤 1:创建网桥设备
bash
# /etc/systemd/network/10-br0.netdev
[NetDev]
Name=br0
Kind=bridge
步骤 2:将接口加入网桥(如 eth3
)
bash
# /etc/systemd/network/20-eth3-bridge.network
[Match]
Name=eth3
[Network]
Bridge=br0 # 加入网桥 br0(注意:此接口自身不设 IP)
步骤 3:为网桥配置 IP
bash
# /etc/systemd/network/30-br0.network
[Match]
Name=br0
[Network]
Address=192.168.1.30/24
Gateway=192.168.1.1
完整工作流示例:Bond + VLAN + Bridge
场景:创建 bond0
→ 在 bond0
上添加 VLAN vlan100
→ 将 vlan100
加入网桥 br0
-
Bond 配置 (同前文
bond0
) -
VLAN 配置 (基于
bond0
):bash# /etc/systemd/network/10-bond0-vlan100.netdev [NetDev] Name=vlan100 Kind=vlan [VLAN] Id=100
-
网桥配置 :
bash# /etc/systemd/network/10-br0.netdev [NetDev] Name=br0 Kind=bridge
-
连接 VLAN 到网桥 :
bash# /etc/systemd/network/20-vlan100-bridge.network [Match] Name=vlan100 [Network] Bridge=br0
-
为网桥分配 IP :
bash# /etc/systemd/network/30-br0.network [Match] Name=br0 [Network] Address=10.0.100.1/24
应用配置
-
所有文件保存在
/etc/systemd/network/
。 -
重启服务生效:
bashsudo systemctl restart systemd-networkd
-
检查状态:
bashnetworkctl list ip addr show # 查看接口状态
关键注意事项
- 文件命名 :按数字前缀顺序处理(如
10-*.netdev
优先于20-*.network
)。 - 依赖关系 :
- Bond/VLAN/Bridge 需先通过
.netdev
定义。 - 物理接口的
.network
文件需在虚拟设备之后加载。
- Bond/VLAN/Bridge 需先通过
- 链路检测 :Bond 模式中
MIIMonitorSec
需根据硬件调整。 - DHCP :若需 DHCP,在
[Network]
段添加DHCP=yes
。
通过组合这些配置,可构建复杂网络拓扑(如 Bond 上的 VLAN 桥接)。建议逐步测试每个组件确保链路正常。
在 systemd-networkd 中,Kind
是 .netdev
配置文件中的核心参数,用于定义虚拟网络设备的类型。该参数位于 [NetDev]
部分,指定了要创建的虚拟设备类别。以下是常见 Kind
类型及其用途的详细说明:
🔧 常见 Kind
类型及配置示例
1. bridge
(网桥)
用于连接多个网络接口,实现二层交换。
配置文件示例 (/etc/systemd/network/br0.netdev
):
ini
[NetDev]
Name=br0
Kind=bridge
高级参数(可选):
ini
[Bridge]
STP=yes # 启用生成树协议
HelloTimeSec=2 # STP Hello 时间
2. bond
(绑定)
聚合多个物理接口提升带宽或冗余。
配置文件示例 (/etc/systemd/network/bond0.netdev
):
ini
[NetDev]
Name=bond0
Kind=bond
[Bond]
Mode=802.3ad # 链路聚合模式(LACP)
LACPTransmitRate=fast
MIIMonitorSec=100ms
3. vlan
(虚拟局域网)
在父接口上划分逻辑子网。
配置文件示例 (/etc/systemd/network/vlan100.netdev
):
ini
[NetDev]
Name=vlan100
Kind=vlan
[VLAN]
Id=100 # VLAN ID(1-4094)
Parent=eth0 # 父接口
4. vxlan
(虚拟扩展局域网)
创建跨物理网络的虚拟二层网络。
配置文件示例 (/etc/systemd/network/vxlan10.netdev
):
ini
[NetDev]
Name=vxlan10
Kind=vxlan
[VXLAN]
VNI=42 # 虚拟网络标识符
Local=192.168.1.100
Remote=192.168.1.200
5. tun/tap
(隧道设备)
支持用户态网络通信(如 VPN)。
配置文件示例 (/etc/systemd/network/mytun.netdev
):
ini
[NetDev]
Name=mytun
Kind=tun # 或 Kind=tap
6. ipip/gre
(隧道协议)
用于点对点隧道连接。
GRE 示例:
ini
[NetDev]
Name=gre1
Kind=gre
[Tunnel]
Local=10.0.0.1
Remote=10.0.0.2
⚙️ 其他虚拟设备类型
Kind 类型 |
用途 | 典型场景 |
---|---|---|
veth |
创建虚拟以太网对(一端连接容器,一端连接主机) | 容器网络(如 Docker/Podman) |
sit |
IPv6-over-IPv4 隧道 | IPv6 过渡技术 |
vti |
虚拟隧道接口(IPsec 专用) | VPN 加密通信 |
dummy |
虚拟空设备,用于测试或占位 | 网络测试 |
📝 配置要点
-
文件命名与优先级
.netdev
文件需保存在/etc/systemd/network/
,按字母顺序加载。- 命名建议:
<优先级>-<设备名>.netdev
(如10-br0.netdev
)。
-
关联物理接口
虚拟设备创建后,需在
.network
文件中将物理接口绑定到虚拟设备:ini# /etc/systemd/network/enp1s0.network [Match] Name=enp1s0 [Network] Bridge=br0 # 绑定到网桥
-
IP 地址配置
在虚拟设备的
.network
文件中设置 IP:ini# /etc/systemd/network/br0.network [Match] Name=br0 [Network] Address=192.168.1.100/24 Gateway=192.168.1.1
💡 使用场景与建议
- 服务器/嵌入式系统 :优先使用
bridge
、bond
、vlan
构建高可靠网络。 - 容器网络 :
veth
或bridge
连接容器与主机。 - 跨数据中心网络 :
vxlan
实现大二层扩展。 - VPN 隧道 :
gre
/ipip
结合 IPsec 加密。
⚠️ 注意 :删除虚拟设备需手动移除
.netdev
文件并重启systemd-networkd
,残留设备需用ip link delete
清理。
🔄 完整配置流程示例(网桥 + VLAN)
-
创建网桥 (
20-br0.netdev
):ini[NetDev] Name=br0 Kind=bridge
-
添加物理接口到网桥 (
30-br0-slave.network
):ini[Match] Name=eth0 [Network] Bridge=br0
-
在网桥上创建 VLAN (
40-vlan100.netdev
):ini[NetDev] Name=br0.100 Kind=vlan [VLAN] Id=100 Parent=br0
-
配置 VLAN IP (
50-vlan100.network
):ini[Match] Name=br0.100 [Network] Address=10.100.0.1/24
重启服务生效:
bash
sudo systemctl restart systemd-networkd
在 systemd-networkd
中,Kind
是 .netdev
配置文件中的核心参数,用于定义虚拟网络设备的类型。它决定了设备的功能和行为,支持多种网络拓扑需求。以下是 Kind
的常见类型及其配置详解:
📌 Kind
的常见类型及功能
类型 | 功能描述 | 典型应用场景 | 配置文件示例 |
---|---|---|---|
bridge |
创建软件网桥,用于连接多个物理或虚拟接口,实现二层交换 | 虚拟机网络聚合、容器互联 | [NetDev] Name=br0 Kind=bridge [Bridge] STP=false |
bond |
将多个物理接口绑定为单一逻辑接口,提供冗余或负载均衡 | 网络高可用、带宽聚合 | [NetDev] Name=bond0 Kind=bond [Bond] Mode=802.3ad |
vlan |
在父接口上创建 802.1Q VLAN 子接口,实现网络隔离 | 多租户网络、流量隔离 | [NetDev] Name=vlan10 Kind=vlan [Vlan] Id=10 |
veth |
创建成对的虚拟以太网设备,用于连接不同网络命名空间(如容器) | 容器间通信、网络隔离 | [NetDev] Name=veth-a Kind=veth [Peer] Name=veth-b |
ipip /gre |
创建隧道接口(IP-over-IP/GRE),用于跨网络封装传输数据 | VPN、跨数据中心互联 | [NetDev] Name=tun0 Kind=ipip [Tunnel] Remote=203.0.113.1 |
dummy |
创建无实际硬件的虚拟接口,用于测试或占位 | 网络测试、服务依赖模拟 | [NetDev] Name=dummy0 Kind=dummy |
💡 注:
- 物理接口(如以太网)无需
.netdev
文件 ,直接通过.network
文件配置。- 所有配置文件需保存在
/etc/systemd/network/
,按文件名字典序生效。
⚙️ 详细配置说明
1. 网桥(bridge
)
-
关键参数 :
STP
:生成树协议(默认no
)VLANFiltering
:启用 VLAN 过滤(如需复杂 VLAN 拓扑)
-
绑定物理接口 :
在物理接口的.network
文件中添加Bridge=br0
。
示例 :ini# /etc/systemd/network/br0.netdev [NetDev] Name=br0 Kind=bridge [Bridge] VLANFiltering=yes
2. 绑定(bond
)
-
工作模式 (
Mode
):balance-rr
(轮询)、active-backup
(主备)、802.3ad
(LACP 聚合)
-
链路监测 :
MIIMonitorSec=1s
(毫秒级检测间隔)
示例 :ini# /etc/systemd/network/bond0.netdev [NetDev] Name=bond0 Kind=bond [Bond] Mode=802.3ad MIIMonitorSec=500ms
3. VLAN
-
必需参数 :
Id
:VLAN ID(1-4094)- 父接口需在
.network
文件中声明VLAN=vlan10
示例:
ini# /etc/systemd/network/vlan10.netdev [NetDev] Name=vlan10 Kind=vlan [Vlan] Id=10
4. 虚拟以太网(veth
)
-
成对配置 :
需指定[Peer]
段定义对端接口名称。
示例 :ini# /etc/systemd/network/veth-pair.netdev [NetDev] Name=veth-host Kind=veth [Peer] Name=veth-container
⚠️ 配置注意事项
-
依赖服务:
- 启用
systemd-networkd.service
,并禁用其他网络管理工具(如NetworkManager
)。 - 若需 DNS 解析,同时启用
systemd-resolved.service
。
- 启用
-
文件命名规则:
- 文件名前缀决定优先级(如
10-
优先于20-
)。 - 避免与系统默认配置冲突(默认配置在
/usr/lib/systemd/network/
)。
- 文件名前缀决定优先级(如
-
复杂拓扑示例(Bond + Bridge + VLAN):
bash# 绑定接口 → 加入网桥 → 创建 VLAN /etc/systemd/network/ ├── 20-bond0.netdev # 定义 bond0 ├── 30-br0.netdev # 定义网桥 br0 ├── 40-bond0-bridge.network # 绑定 bond0 到 br0 └── 50-br0-vlan20.netdev # 在 br0 上创建 VLAN 20
-
验证与调试:
- 重载配置:
systemctl restart systemd-networkd
。 - 查看设备状态:
networkctl list
或networkctl status br0
。
- 重载配置:
💎 总结
Kind
是 systemd-networkd
虚拟网络设备的类型标识,通过 .netdev
文件灵活定义网桥、绑定、VLAN 等复杂网络结构。结合 .network
文件可实现全栈网络管理,尤其适合无图形界面的服务器环境。
在 systemd-networkd
中,Kind
是 .netdev
配置文件中的核心参数,用于定义要创建的虚拟网络设备类型 。它决定了设备的底层行为和功能,通常与物理接口或更复杂的网络拓扑(如网桥、绑定、VLAN)结合使用。以下是常见 Kind
类型及其配置详解:
🔧 一、Kind
的作用与配置位置
- 配置文件类型
Kind
仅在.netdev
文件中指定,用于定义虚拟设备的类型。 - 典型取值 :
bridge
:创建网桥设备(用于聚合多个接口)bond
:创建绑定设备(链路聚合)vlan
:创建VLAN虚拟接口veth
:创建虚拟以太网对(容器间通信)tun
/tap
:创建隧道或虚拟点对点设备
- 配置文件路径
所有.netdev
文件需保存在/etc/systemd/network/
目录下,文件名格式为<前缀>-<设备名>.netdev
。
🌉 二、常见 Kind
类型及配置示例
1. 网桥(Kind=bridge
)
用途 :连接多个物理/虚拟接口(如虚拟机、容器)。
示例配置 (/etc/systemd/network/br0.netdev
):
ini
[NetDev]
Name=br0 # 网桥名称
Kind=bridge # 设备类型
[Bridge]
STP=false # 禁用生成树协议(小型网络)
VLANFiltering=yes # 启用VLAN过滤
关键选项:
STP
:生成树协议(防环)VLANFiltering
:支持基于VLAN的数据包过滤
🔗 2. 绑定(Kind=bond
)
用途 :将多个物理网卡聚合成一个逻辑接口(提升带宽或冗余)。
示例配置 (/etc/systemd/network/bond0.netdev
):
ini
[NetDev]
Name=bond0
Kind=bond
[Bond]
Mode=802.3ad # 绑定模式(LACP动态聚合)
MIIMonitorSec=1s # 链路检测间隔
LACPTransmitRate=fast # LACP报文速率
常用模式:
balance-rr
:轮询负载均衡active-backup
:主备冗余802.3ad
:LACP动态聚合(需交换机支持)
📡 3. VLAN(Kind=vlan
)
用途 :在物理接口上创建虚拟子接口(实现网络隔离)。
示例配置 (/etc/systemd/network/vlan10.netdev
):
ini
[NetDev]
Name=vlan10 # VLAN接口名
Kind=vlan
[VLAN]
Id=10 # VLAN ID(必需)
关联父接口 :
需在父接口的 .network
文件中声明 VLAN=vlan10
(见下文)。
⚙️ 三、配套 .network
文件的作用
虚拟设备创建后,需通过 .network
文件配置IP、路由等属性,并绑定物理接口:
-
将物理接口加入网桥 (
/etc/systemd/network/eth0.network
):ini[Match] Name=eth0 [Network] Bridge=br0 # 加入网桥br0
-
为VLAN接口配置IP (
/etc/systemd/network/vlan10.network
):ini[Match] Name=vlan10 [Network] Address=192.168.10.2/24 Gateway=192.168.10.1 # 指定父接口(可选) VLAN=eth0.10
⚠️ 四、注意事项
-
依赖关系 :
- 虚拟设备(如
br0
、bond0
)需先通过.netdev
创建,再在.network
文件中绑定物理接口。 - VLAN需在父接口的
.network
文件中启用(如VLAN=vlan10
)。
- 虚拟设备(如
-
服务管理 :
bashsystemctl enable --now systemd-networkd # 启用并启动服务 systemctl restart systemd-networkd # 配置变更后重启
-
冲突避免 :
-
确保无其他网络管理服务(如
NetworkManager
)运行:bashsystemctl disable --now NetworkManager
-
💎 总结:Kind
类型对比表
类型 | 配置文件 | 核心功能 | 典型应用场景 |
---|---|---|---|
bridge |
.netdev + .network |
聚合多个接口 | 虚拟机/容器网络 |
bond |
.netdev + .network |
多网卡冗余/负载均衡 | 服务器高可用链路 |
vlan |
.netdev + .network |
网络逻辑分段 | 隔离不同业务流量 |
veth |
.netdev |
成对虚拟接口 | 容器间直接通信 |
💡 通过组合不同
Kind
类型(如bond
→bridge
→vlan
),可构建复杂网络拓扑(如高可用虚拟化集群)。
在systemd-networkd中,kind
是.netdev
文件中的核心配置项,用于定义虚拟网络设备的类型。以下是主要kind
类型及其用途的详解:
🔧 一、常见kind
类型及用途
-
bridge
(网桥)-
功能:创建二层交换设备,用于连接多个物理或虚拟接口。
-
配置文件 :
br0.netdev
-
示例配置 :
ini[NetDev] Name=br0 Kind=bridge
引用自
-
-
vlan
(虚拟局域网)-
功能 :基于物理接口创建带VLAN ID的虚拟子接口(如
ens34.10
)。 -
配置文件 :
ens34.10.netdev
-
示例配置 :
ini[NetDev] Name=ens34.10 Kind=vlan [VLAN] Id=10
引用自
-
-
bond
(绑定接口)-
功能 :聚合多个物理接口提升带宽或冗余(支持模式如
802.3ad
)。 -
配置文件 :
bond0.netdev
-
示例配置 :
ini[NetDev] Name=bond0 Kind=bond [Bond] Mode=802.3ad
引用自
-
-
veth
(虚拟以太网对)- 功能:创建成对的虚拟接口,用于容器或命名空间间通信。
- 典型场景 :连接容器与宿主机网络。
引用自
-
tun/tap
(隧道/虚拟点对点)- 功能 :实现VPN或虚拟化网络(
tun
处理IP层,tap
处理以太网帧)。
引用自
- 功能 :实现VPN或虚拟化网络(
-
macvlan/ipvlan
(虚拟子接口)- 功能 :基于物理接口创建多个虚拟接口,各具独立MAC/IP地址。
引用自
- 功能 :基于物理接口创建多个虚拟接口,各具独立MAC/IP地址。
⚙️ 二、配置要点与流程
-
文件命名与位置
- 配置文件需以
.netdev
结尾,存放于/etc/systemd/network/
。 - 优先级:
/etc/
>/run/
>/usr/lib/
。
- 配置文件需以
-
启用服务
bashsudo systemctl enable --now systemd-networkd # 启动服务 sudo systemctl restart systemd-networkd # 配置生效
-
依赖关系
-
物理接口配置 :需在
.network
文件中通过Bridge=
或Bond=
绑定到虚拟设备。 -
示例(绑定网桥) :
ini[Match] Name=eth0 [Network] Bridge=br0 # 将eth0加入网桥br0
-
💡 三、典型应用场景
- 容器网络 :
veth
连接容器,bridge
管理多容器通信。 - 高可用服务器 :
bond
聚合双网卡,vlan
划分业务与管理流量。 - 虚拟机网络 :
bridge
整合物理网卡与虚拟机接口。
📝 四、完整配置示例
场景 :创建网桥br0
并绑定物理接口eth0
-
网桥定义 (
/etc/systemd/network/br0.netdev
):ini[NetDev] Name=br0 Kind=bridge
-
接口绑定 (
/etc/systemd/network/eth0.network
):ini[Match] Name=eth0 [Network] Bridge=br0
💡 注意:同一物理接口不可被多个网络管理服务(如NetworkManager)控制,需先禁用冲突服务。
总结表:kind
类型与用途
Kind类型 | 用途 | 配置文件示例 | 典型场景 |
---|---|---|---|
bridge |
二层交换设备 | br0.netdev |
连接多接口/虚拟机 |
vlan |
基于VLAN ID的子接口 | ens34.10.netdev |
网络隔离 |
bond |
聚合多物理接口 | bond0.netdev |
带宽提升/链路冗余 |
veth |
虚拟以太网对 | veth-pair.netdev |
容器间通信 |
tun/tap |
点对点隧道 | vpn-tunnel.netdev |
VPN/虚拟化网络 |
通过合理选择kind
类型,可灵活构建从简单到复杂的网络拓扑,满足服务器、容器、虚拟化等多种需求。
在 systemd-networkd 中,Kind
是 .netdev
文件中的核心配置项,用于定义要创建的虚拟网络设备类型。以下是常见 Kind
类型及其详细说明:
1. bond
- 绑定接口
聚合多个物理接口为单一逻辑接口
ini
[NetDev]
Name=bond0
Kind=bond # 关键配置
[Bond]
Mode=active-backup
Miimon=100
PrimaryReselectPolicy=always
常用参数:
Mode
: 绑定模式 (balance-rr
,active-backup
,balance-xor
,broadcast
,802.3ad
,balance-tlb
,balance-alb
)TransmitHashPolicy
: 负载均衡策略LACPTransmitRate
: LACP 报文速率 (slow
,fast
)
2. vlan
- 虚拟局域网
在物理接口上创建 802.1Q VLAN 子接口
ini
[NetDev]
Name=eth0.100
Kind=vlan # 关键配置
[VLAN]
Id=100 # VLAN ID (1-4094)
Protocol=802.1Q
特性:
- 支持
Id
(必填) 和Protocol
(可选) - 名称格式建议为
父接口.VLANID
(如 eth0.100)
3. bridge
- 网桥设备
创建二层交换设备
ini
[NetDev]
Name=br0
Kind=bridge # 关键配置
[Bridge]
STP=on # 生成树协议
VLANFiltering=yes
高级参数:
AgeingTimeSec
: MAC 地址老化时间MulticastRouter
: 组播路由 (disabled
,permanent
,temporary
)VLANProtocol
: VLAN 协议 (802.1q
,802.1ad
)
4. veth
- 虚拟以太网对
创建成对虚拟接口(常用于容器网络)
ini
[NetDev]
Name=veth-host
Kind=veth # 关键配置
[Peer]
Name=veth-container
特性:
- 必须包含
[Peer]
部分定义对端接口 - 常用于连接命名空间或容器
5. macvlan
/macvtap
基于物理接口创建虚拟克隆接口
ini
[NetDev]
Name=macvlan0
Kind=macvlan # 或 macvtap
[MACVLAN]
Mode=bridge # 模式: private, vepa, bridge, passthru
模式说明:
bridge
: 子接口可直接通信vepa
: 通过物理交换机通信private
: 禁止子接口通信
6. vxlan
- 虚拟扩展局域网
创建 overlay 网络隧道
ini
[NetDev]
Name=vxlan100
Kind=vxlan
[VXLAN]
VNI=100 # 虚拟网络标识符
Local=192.168.1.10
Port=4789
关键参数:
VNI
: 虚拟网络 ID (必填)TunnelId
: 兼容 VNI 的别名Remote
: 单播对端 IPGroup
: 组播组地址
7. ipip
/gre
/sit
- 隧道协议
ini
# IP-in-IP 隧道
[NetDev]
Name=ipip0
Kind=ipip
[Tunnel]
Local=192.168.1.10
Remote=203.0.113.20
支持类型:
ipip
: IPv4-in-IPv4sit
: IPv6-in-IPv4gre
: 通用路由封装gretap
: 带以太网头的 GREvti
: IPsec VPN 隧道接口
8. wireguard
- VPN 隧道
ini
[NetDev]
Name=wg0
Kind=wireguard
[WireGuard]
PrivateKey=base64_encoded_key
ListenPort=51820
[WireGuardPeer]
PublicKey=peer_public_key
AllowedIPs=10.8.0.0/24
Endpoint=203.0.113.30:51820
9. dummy
- 虚拟空设备
ini
[NetDev]
Name=dummy0
Kind=dummy
用途:
- 测试接口
- 服务绑定占位符
- 路由锚点
配置规则
- 文件位置 :
/etc/systemd/network/*.netdev
- 命名要求 :
- 文件名决定加载顺序 (按数字前缀)
Name=
必须与文件名无直接关联
- 依赖关系 :
- 虚拟设备需先于
.network
文件创建 - 物理接口配置需单独
.network
文件
- 虚拟设备需先于
查看已创建设备
bash
# 列出所有网络设备
networkctl list
# 查看特定设备详情
networkctl status br0
调试命令
bash
# 检查配置语法
systemd-networkd --test
# 实时日志
journalctl -u systemd-networkd -f
通过合理组合不同的 Kind
类型,可以构建复杂的网络拓扑结构,满足服务器、容器和云环境的多样化组网需求。
在 systemd-networkd
中,Kind
是用于定义虚拟网络设备类型的关键参数,通常在 .netdev
配置文件中使用。以下是 Kind
支持的主要类型及其用途和配置示例:
🔧 一、链路聚合与负载均衡类
-
bond
(网卡绑定)-
用途:将多个物理接口聚合成一个逻辑接口,提供冗余或负载均衡。
-
配置示例 :
ini[NetDev] Name=bond0 Kind=bond [Bond] Mode=802.3ad # 链路聚合模式(如 LACP) MIIMonitorSec=100ms
适用于高可用服务器网络。
-
-
team
(高级网卡绑定)-
用途 :替代
bond
,提供更灵活的负载均衡策略(如轮询、广播)。 -
示例 :
ini[NetDev] Name=team0 Kind=team [Team] Runner=loadbalance # 负载均衡模式
适用于需要复杂流量调度的场景。
-
🌐 二、隧道与覆盖网络类
-
vlan
(虚拟局域网)-
用途:基于物理接口创建 VLAN 子接口,实现网络隔离。
-
示例 :
ini[NetDev] Name=eth0.10 Kind=vlan [VLAN] Id=10 # VLAN ID
适用于多租户网络隔离。
-
-
vxlan
(虚拟扩展局域网)-
用途:构建跨物理网络的虚拟二层网络,常用于容器或云环境。
-
示例 :
ini[NetDev] Name=vxlan0 Kind=vxlan [VXLAN] VNI=100 # 虚拟网络标识符 Remote=192.168.1.1 # 目标 IP
适用于跨主机容器通信(如 Kubernetes)。
-
-
ipip
/gre
(隧道协议)-
用途:创建点对点隧道(如 IP-over-IP、通用路由封装)。
-
示例 :
ini[NetDev] Name=gre-tun Kind=gre [Tunnel] Local=192.168.1.100 Remote=203.0.113.5
适用于 VPN 或跨数据中心连接。
-
⚡ 三、虚拟化与桥接类
-
bridge
(网桥)-
用途:连接多个网络接口(物理或虚拟),实现二层交换。
-
示例 :
ini[NetDev] Name=br0 Kind=bridge [Bridge] STP=on # 启用生成树防环
适用于 KVM 虚拟机网络或容器网桥。
-
-
veth
(虚拟以太网对)-
用途:创建成对的虚拟接口,用于连接网络命名空间(如容器)。
-
示例 :
ini[NetDev] Name=veth-host Kind=veth [Peer] Name=veth-container
适用于容器网络(如 Docker)。
-
-
macvlan
/ipvlan
-
用途:为物理接口创建多个虚拟接口,共享 MAC 或 IP 地址。
-
示例 :
ini[NetDev] Name=macvlan0 Kind=macvlan [MACVLAN] Mode=bridge # 桥接模式
适用于单主机多网络隔离需求。
-
📊 四、其他类型
Kind 类型 | 用途 | 典型场景 |
---|---|---|
dummy |
创建虚拟回环接口 | 测试或占位 |
tun /tap |
用户空间网络接口(如 VPN) | OpenVPN 或虚拟机组网 |
vcan |
虚拟 CAN 总线接口 | 嵌入式设备通信 |
wireguard |
WireGuard VPN 隧道 | 加密点对点连接 |
⚠️ 五、配置注意事项
-
配置文件优先级
- 文件按字母顺序处理(如
10-bond.netdev
优先于20-vlan.netdev
)。 - 目录优先级:
/etc/systemd/network/
>/run/systemd/network/
>/usr/lib/systemd/network/
。
- 文件按字母顺序处理(如
-
依赖关系
-
物理接口需通过
.network
文件绑定到虚拟设备(如Bridge=bond0
)。 -
示例:将
eth1
加入网桥br0
:ini[Match] Name=eth1 [Network] Bridge=br0 # 关键配置
-
-
服务管理
-
修改配置后需重启服务生效:
bashsudo systemctl restart systemd-networkd
-
💎 总结
- 核心原则 :
Kind
在.netdev
文件中定义虚拟设备类型,需配套.network
文件绑定物理接口并配置 IP。 - 适用场景 :
- 服务器网络:
bond
/vlan
提升可靠性。 - 虚拟化:
bridge
/veth
支持容器和虚拟机。 - 跨网络通信:
vxlan
/gre
扩展二层网络。
- 服务器网络:
- 限制 :不支持无线网络(需配合
wpa_supplicant
)。
在 systemd-networkd
中,Kind
是 .netdev
配置文件的核心指令 ,用于定义要创建的虚拟网络设备类型。它位于 [NetDev]
部分中,决定了设备的行为和功能。以下是常见的 Kind
类型及其用途详解:
常见 Kind
类型及用途
Kind 值 |
设备类型 | 用途 | 配置文件要求 |
---|---|---|---|
bond |
绑定设备 | 聚合多个物理接口提供冗余/负载均衡 | 需 [Bond] 部分配置模式参数 |
vlan |
VLAN 设备 | 在物理接口上创建 802.1Q 虚拟子接口 | 需 [VLAN] 部分指定 Id |
bridge |
网桥设备 | 连接多个接口实现二层交换(常用于虚拟机/容器网络) | 需 [Bridge] 部分配置 STP 等参数 |
veth |
虚拟以太网对 | 创建成对虚拟接口(一端发送另一端接收,用于容器间通信) | 需 [Peer] 部分定义对端接口名 |
macvlan /ipvlan |
MACVLAN/IPVLAN | 基于物理接口创建虚拟接口(共享 MAC 或独立 MAC) | 需 [MACVLAN] /[IPVLAN] 配置模式 |
vxlan |
VXLAN 隧道 | 构建跨三层网络的虚拟二层覆盖网络 | 需 [VXLAN] 部分配置 VNI/端口等 |
tun /tap |
TUN/TAP 设备 | 用户空间网络隧道(VPN/虚拟化场景) | 需 [Tun] 部分配置 Owner/Group |
dummy |
虚拟空设备 | 无实际硬件的逻辑接口(用于测试或固定 IP 绑定) | 无需额外配置 |
wireguard |
WireGuard VPN | 创建加密 VPN 隧道接口 | 需 [WireGuard] 配置密钥/对端 |
配置语法示例
1. 定义设备类型(基础结构)
ini
[NetDev]
Name=my-device # 设备名称
Kind=xxx # 设备类型 (bond/vlan/bridge等)
2. 类型专属配置部分
每种 Kind
需要特定的配置部分:
bond
→[Bond]
vlan
→[VLAN]
bridge
→[Bridge]
wireguard
→[WireGuard]
示例:创建 VLAN 设备
ini
[NetDev]
Name=vlan20
Kind=vlan # 指定为 VLAN 类型
[VLAN]
Id=20 # VLAN ID (必需)
关键注意事项
-
.netdev
vs.network
.netdev
:仅负责创建设备 (使用Kind
定义类型).network
:配置设备属性(IP 地址、路由、DNS 等)
-
依赖关系
虚拟设备(如
bond0
,br0
)必须在物理接口的.network
文件之前加载(通过文件名前缀控制优先级):bash/etc/systemd/network/ ├── 10-bond.netdev # 先创建 bond 设备 ├── 20-slave1.network # 再将 eth1 加入 bond ├── 21-slave2.network └── 30-bond.network # 最后配置 bond 的 IP
-
查看已创建设备
bashnetworkctl list # 输出示例: # IDX NAME TYPE OPERATIONAL SETUP # 1 eth0 ether configured configured # 2 bond0 bond configured configured # 3 vlan10 vlan configured configured
完整工作流示例:创建网桥
步骤 1:定义网桥设备 (br0.netdev
)
ini
[NetDev]
Name=br0
Kind=bridge # 关键类型声明
[Bridge]
STP=on # 启用生成树协议
ForwardDelaySec=2
步骤 2:将物理接口加入网桥 (eth0.network
)
ini
[Match]
Name=eth0
[Network]
Bridge=br0 # 加入网桥(非 IP 配置)
步骤 3:为网桥配置网络 (br0.network
)
ini
[Match]
Name=br0
[Network]
Address=192.168.1.100/24
Gateway=192.168.1.1
高级 Kind
应用:WireGuard VPN
ini
# 文件:/etc/systemd/network/05-wg0.netdev
[NetDev]
Name=wg0
Kind=wireguard # 声明为 WireGuard 类型
[WireGuard]
PrivateKey=base64_encoded_key
ListenPort=51820
# 添加对端
[WireGuardPeer]
PublicKey=peer_public_key
AllowedIPs=10.8.0.0/24
Endpoint=203.0.113.1:51820
调试技巧
-
检查配置错误:
bashnetworkctl status <设备名>
-
查看内核设备信息:
baship link show bond0 # 检查绑定接口 bridge link # 查看网桥成员
-
重载配置:
bashnetworkctl reload && networkctl reconfigure <设备名>
通过正确使用 Kind
,您可以灵活构建复杂的网络拓扑(如 Bond+VLAN+Bridge 组合),满足服务器、容器和虚拟化环境的需求。
在 systemd-networkd
中,.netdev
文件中的 Kind=
指令用于定义网络设备的类型。以下是常见 Kind
类型及其用途的详细说明:
主要 Kind
类型
1. ethernet
-
用途:物理以太网接口(默认类型,通常无需显式声明)
-
配置文件 :仅需
.network
文件(无需.netdev
) -
示例 :
ini# /etc/systemd/network/20-eth0.network [Match] Name=eth0 [Network] Address=192.168.1.10/24
2. bond
-
用途:链路聚合(将多个物理接口绑定为单一逻辑接口)
-
关键参数 :
ini[Bond] Mode=active-backup # 绑定模式(balance-rr, active-backup, 802.3ad 等) MIIMonitorSec=1s # 链路检测间隔 TransmitHashPolicy=layer2 # 负载均衡策略
-
完整示例 :
ini# /etc/systemd/network/10-bond0.netdev [NetDev] Name=bond0 Kind=bond [Bond] Mode=802.3ad
3. vlan
-
用途:创建 802.1Q VLAN 虚拟接口
-
关键参数 :
ini[VLAN] Id=100 # VLAN ID (1-4094)
-
完整示例 :
ini# /etc/systemd/network/10-vlan100.netdev [NetDev] Name=vlan100 Kind=vlan [VLAN] Id=100
4. bridge
-
用途:创建二层网桥(连接多个接口)
-
关键参数 :
ini[Bridge] STP=yes # 生成树协议 HelloTimeSec=2 # STP 参数
-
完整示例 :
ini# /etc/systemd/network/10-br0.netdev [NetDev] Name=br0 Kind=bridge [Bridge] STP=yes
高级 Kind
类型
5. vxlan
-
用途:创建 VXLAN 隧道
-
关键参数 :
ini[VXLAN] VNI=42 # 虚拟网络标识符 Local=192.168.1.1 # 本地 IP Group=239.1.1.1 # 组播地址(可选)
6. macvlan
-
用途:基于 MAC 地址的虚拟接口
-
模式 :
ini[MACVLAN] Mode=bridge # 其他模式:private, vepa, passthru
7. ipvlan
-
用途:基于 IP 的虚拟接口
-
模式 :
ini[IPVLAN] Mode=l2 # 或 l3
8. wireguard
-
用途:创建 WireGuard VPN 隧道
-
关键参数 :
ini[WireGuard] PrivateKey=base64_key # 私钥 ListenPort=51820
特殊 Kind
类型
9. tun
/tap
-
用途 :用户空间网络设备(如 VPN)
ini[NetDev] Name=tun0 Kind=tun
10. vrf
-
用途 :虚拟路由转发(网络隔离)
ini[NetDev] Name=vrf-blue Kind=vrf [VRF] Table=1000 # 路由表 ID
11. dummy
-
用途 :虚拟空设备(占位或测试)
ini[NetDev] Name=dummy0 Kind=dummy
配置规则
- 文件位置 :所有
.netdev
文件放在/etc/systemd/network/
- 依赖关系 :
- 虚拟设备(bond/bridge/vlan)需先通过
.netdev
定义 - 物理接口的
.network
文件引用虚拟设备
- 虚拟设备(bond/bridge/vlan)需先通过
- 命名顺序 :文件按字典序处理(建议用数字前缀如
10-*.netdev
)
完整工作流示例:Bond + VLAN
bash
# 1. 创建 bond0
# /etc/systemd/network/10-bond0.netdev
[NetDev]
Name=bond0
Kind=bond
[Bond]
Mode=802.3ad
# 2. 将 eth1,eth2 加入 bond0
# /etc/systemd/network/20-slaves.network
[Match]
Name=eth1 eth2
[Network]
Bond=bond0
# 3. 在 bond0 上创建 VLAN
# /etc/systemd/network/30-vlan100.netdev
[NetDev]
Name=vlan100
Kind=vlan
[VLAN]
Id=100
# 4. 为 VLAN 分配 IP
# /etc/systemd/network/40-vlan100.network
[Match]
Name=vlan100
[Network]
Address=10.0.100.1/24
查看设备信息
bash
# 列出所有设备
networkctl list
# 查看设备详情
networkctl status bond0
# 验证内核设备
ip link show type bond # 查看所有 bond 设备
ip -d link show vlan100 # 查看 VLAN 详细信息
掌握这些 Kind
类型后,您可以根据需求组合构建复杂网络拓扑(如 Bond→VLAN→Bridge)。
在 systemd-networkd
中,Kind
是 .netdev
配置文件中的核心参数,用于定义虚拟网络设备的类型。它位于 [NetDev]
小节,指定要创建的设备类型(如网桥、绑定、VLAN 等)。以下是支持的 Kind
类型及其配置详解:
📦 一、.netdev
文件支持的 Kind
类型
类型 | 说明 | 典型应用场景 |
---|---|---|
bridge |
创建网桥设备,用于连接多个物理或虚拟接口(如虚拟机网络)。 | 虚拟机网络、容器网络桥接。 |
bond |
绑定多个物理接口(如 eth0 + eth1 ),支持负载均衡或故障切换模式(如 active-backup )。 |
网络高可用、带宽聚合。 |
vlan |
基于父接口(如 eth0 )创建 VLAN 子接口(如 eth0.10 )。 |
网络隔离、多租户环境。 |
veth |
创建成对的虚拟以太网设备(一端连接容器,一端连接主机)。 | 容器网络命名空间互通。 |
tun /tap |
用户态网络隧道设备(tun 处理 IP 层,tap 处理以太网帧)。 |
VPN、虚拟化网络。 |
ipip /gre |
IP-over-IP 隧道或通用路由封装隧道(需指定远程 IP)。 | 跨公网的点对点连接。 |
vxlan |
虚拟扩展 LAN(基于 UDP 封装二层帧)。 | 跨数据中心的 overlay 网络。 |
wireguard |
创建 WireGuard VPN 隧道接口。 | 加密的点对点或站点间通信。 |
vcan |
虚拟 CAN 总线设备(用于工业控制协议)。 | 车载网络、工业自动化。 |
⚙️ 二、配置示例
1. 创建网桥(bridge
)
ini
# /etc/systemd/network/br0.netdev
[NetDev]
Name=br0
Kind=bridge # 指定类型为网桥
[Bridge]
STP=off # 关闭生成树协议
关联物理接口:
ini
# /etc/systemd/network/eth0.network
[Match]
Name=eth0
[Network]
Bridge=br0 # 将 eth0 加入网桥
2. 创建 VLAN(vlan
)
ini
# /etc/systemd/network/vlan100.netdev
[NetDev]
Name=eth0.100
Kind=vlan # 指定类型为 VLAN
[VLAN]
Id=100 # VLAN ID
为 VLAN 配置 IP:
ini
# /etc/systemd/network/vlan100.network
[Match]
Name=eth0.100
[Network]
Address=192.168.100.10/24
3. 创建绑定(bond
)
ini
# /etc/systemd/network/bond0.netdev
[NetDev]
Name=bond0
Kind=bond # 指定类型为绑定
[Bond]
Mode=active-backup # 故障切换模式
添加从属接口:
ini
# /etc/systemd/network/slave1.network
[Match]
Name=eth1
[Network]
Bond=bond0
⚠️ 三、关键注意事项
-
配置文件优先级
- 配置文件按文件名字典序处理(如
10-
优先于20-
)。 - 目录优先级:
/etc/systemd/network
>/run/systemd/network
>/usr/lib/systemd/network
。
- 配置文件按文件名字典序处理(如
-
依赖服务
-
需启用
systemd-networkd.service
和systemd-resolved.service
(DNS 解析):bashsudo systemctl enable --now systemd-networkd systemd-resolved
-
-
物理接口配置
- 加入网桥或绑定的物理接口 不能 单独配置 IP(需通过网桥或绑定设备配置)。
-
设备删除
-
删除
.netdev
文件后需手动移除设备:bashnetworkctl delete br0 # 删除网桥设备
-
💎 四、与 NetworkManager 的对比
特性 | systemd-networkd | NetworkManager |
---|---|---|
定位 | 轻量级,适合服务器/嵌入式系统。 | 面向桌面/移动设备,支持动态网络切换。 |
无线网络 | 需配合 wpa_supplicant 。 |
原生支持 Wi-Fi 和 VPN。 |
配置方式 | 静态配置文件(.network /.netdev )。 |
动态连接管理(.nmconnection )。 |
🔧 五、故障排查
-
检查设备状态:
bashnetworkctl list # 列出所有接口 ip link show br0 # 查看网桥详情
-
查看日志:
bashjournalctl -u systemd-networkd -f # 实时监控日志
通过合理选择 Kind
类型并配置 .netdev
文件,可构建复杂的网络拓扑(如 网桥+VLAN 或 绑定+隧道),满足服务器、容器及虚拟化环境的网络需求。
以下是使用 systemd-networkd
配置以太网、绑定(Bond)、虚拟局域网(VLAN)和网桥(Bridge)的详细步骤和示例:
1. 以太网(Ethernet)配置
场景 :为物理网卡(如 eth0
)配置静态IP或DHCP。
步骤:
-
创建
.network
配置文件文件路径:
/etc/systemd/network/10-eth0.network
ini[Match] Name=eth0 [Network] DHCP=yes # 或静态IP配置: # Address=192.168.1.10/24 # Gateway=192.168.1.1 # DNS=8.8.8.8
-
重启服务:
bashsudo systemctl restart systemd-networkd
-
验证:
bashnetworkctl status eth0
2. 绑定(Bond)配置
场景 :将两个物理网卡(如 eth0
和 eth1
)绑定为一个逻辑接口(如 bond0
),使用 active-backup
模式。
步骤:
-
创建
.netdev
文件文件路径:
/etc/systemd/network/10-bond0.netdev
ini[NetDev] Name=bond0 Kind=bond [Bond] Mode=active-backup MIIStatus=true MIIInterval=5
-
创建
.network
文件文件路径:
/etc/systemd/network/20-bond0.network
ini[Match] Name=bond0 [Network] Address=192.168.1.100/24 Gateway=192.168.1.1 DNS=8.8.8.8
-
创建从属接口配置
文件路径:
/etc/systemd/network/30-eth0-slave.network
和/etc/systemd/network/30-eth1-slave.network
ini[Match] Name=eth0,eth1 [Network] Bond=bond0
-
重启服务:
bashsudo systemctl restart systemd-networkd
-
验证:
baship link show bond0 networkctl status bond0
3. 虚拟局域网(VLAN)配置
场景 :在物理接口 eth0
上创建 VLAN 子接口 eth0.100
,并为其分配IP。
步骤:
-
创建
.netdev
文件文件路径:
/etc/systemd/network/10-eth0.100.netdev
ini[NetDev] Name=eth0.100 Kind=vlan [VLAN] Id=100
-
创建
.network
文件文件路径:
/etc/systemd/network/20-eth0.100.network
ini[Match] Name=eth0.100 [Network] Address=192.168.100.10/24 Gateway=192.168.100.1 DNS=8.8.8.8
-
重启服务:
bashsudo systemctl restart systemd-networkd
-
验证:
baship -d link show eth0.100 ip addr show eth0.100
4. 网桥(Bridge)配置
场景 :创建网桥 br0
,并将物理接口 eth0
添加到网桥中。
步骤:
-
创建
.netdev
文件文件路径:
/etc/systemd/network/10-br0.netdev
ini[NetDev] Name=br0 Kind=bridge
-
创建
.network
文件文件路径:
/etc/systemd/network/20-br0.network
ini[Match] Name=br0 [Network] Address=192.168.1.200/24 Gateway=192.168.1.1 DNS=8.8.8.8
-
创建从属接口配置
文件路径:
/etc/systemd/network/30-eth0-slave.network
ini[Match] Name=eth0 [Network] Bridge=br0
-
重启服务:
bashsudo systemctl restart systemd-networkd
-
验证:
bashbrctl show br0 networkctl status br0
注意事项
-
文件优先级:
- 配置文件名以数字开头(如
10-xxx.network
),数字越小优先级越高。 /etc/systemd/network/
的优先级高于/usr/lib/systemd/network/
。
- 配置文件名以数字开头(如
-
语法检查 :
使用以下命令检查配置文件语法:
bashsystemd-analyze verify /etc/systemd/network/*.network
-
服务状态 :
检查服务状态确保配置生效:
bashsystemctl status systemd-networkd
-
依赖关系:
- VLAN 和 Bond 需要内核支持(如加载
8021q
和bonding
模块)。 - 网桥需要安装
bridge-utils
工具(用于验证)。
- VLAN 和 Bond 需要内核支持(如加载
总结
- 以太网:直接配置物理接口。
- 绑定(Bond) :通过
.netdev
定义 Bond 设备,并绑定物理接口。 - VLAN :通过
.netdev
定义 VLAN 子接口,并配置 IP。 - 网桥 :通过
.netdev
定义 Bridge 设备,并添加从属接口。
以上配置完成后,系统会自动应用网络设置。如果遇到问题,可以通过 journalctl -u systemd-networkd
查看日志排查错误。
systemd-networkd 是 Linux 系统中用于管理网络设备和配置的系统服务,通过 /etc/systemd/network/
目录下的 .netdev
(定义虚拟设备)和 .network
(配置网络参数)文件实现配置。以下是以太网、Bond(绑定)、VLAN、Bridge 的详细配置示例。
基础说明
.netdev
文件:用于定义虚拟网络设备(如 bond、vlan、bridge),需指定设备类型和关键参数。.network
文件:用于配置设备的网络参数(如 IP、网关、DNS),需关联具体设备(物理或虚拟)。- 配置文件按文件名字母/数字顺序 加载,建议用数字前缀(如
10-eth0.network
)确保顺序正确。 - 生效命令:
systemctl restart systemd-networkd
;检查状态:networkctl status
或ip addr
。
1. 以太网(Ethernet)配置
假设物理网卡名为 eth0
,配置静态 IP 或 DHCP。
示例:静态 IP 配置(10-eth0.network
)
ini
[Match]
Name=eth0 # 匹配网卡名称
[Network]
Address=192.168.1.10/24 # 静态IP及子网掩码
Gateway=192.168.1.1 # 网关
DNS=114.114.114.114 # DNS服务器
DNS=8.8.8.8
示例:DHCP 配置(10-eth0.network
)
ini
[Match]
Name=eth0
[Network]
DHCP=yes # 启用DHCP(ipv4)
# DHCP=ipv6 # 如需ipv6
2. 绑定(Bond)配置(网卡冗余/负载均衡)
将 eth0
和 eth1
绑定为 bond0
,支持多种模式(如 active-backup
主备模式、balance-rr
轮询负载均衡)。
步骤1:定义 bond 设备(20-bond0.netdev
)
ini
[NetDev]
Name=bond0 # bond设备名称
Kind=bond # 设备类型为bond
[Bond]
Mode=active-backup # 绑定模式(常用:active-backup/balance-rr)
MIIMonitorSec=1s # 链路检测间隔
步骤2:将物理网卡加入 bond(30-eth0-bond.network
和 30-eth1-bond.network
)
物理网卡自身不配置 IP,仅作为 bond 的从设备。
30-eth0-bond.network
:
ini
[Match]
Name=eth0
[Network]
Bond=bond0 # 加入bond0
30-eth1-bond.network
:
ini
[Match]
Name=eth1
[Network]
Bond=bond0 # 加入bond0
步骤3:配置 bond 设备的网络参数(40-bond0.network
)
ini
[Match]
Name=bond0
[Network]
Address=192.168.1.20/24 # bond设备的静态IP
Gateway=192.168.1.1
DNS=114.114.114.114
3. 虚拟局域网(VLAN)配置
在 bond0
上创建 VLAN 设备(如 VLAN ID=10),独立配置网络。
步骤1:定义 VLAN 设备(50-vlan10.netdev
)
ini
[NetDev]
Name=vlan10 # VLAN设备名称(建议包含ID)
Kind=vlan # 设备类型为vlan
[VLAN]
Id=10 # VLAN ID(1-4094)
Parent=bond0 # 父接口(可是物理网卡、bond、bridge)
步骤2:配置 VLAN 设备的网络参数(60-vlan10.network
)
ini
[Match]
Name=vlan10
[Network]
Address=192.168.10.10/24 # VLAN 10的子网IP
Gateway=192.168.10.1 # VLAN 10的网关(如存在)
DNS=223.5.5.5
4. 网桥(Bridge)配置
创建网桥 br0
,将 bond0
加入网桥(常用于虚拟机网络桥接)。
步骤1:定义网桥设备(70-br0.netdev
)
ini
[NetDev]
Name=br0 # 网桥名称
Kind=bridge # 设备类型为bridge
[Bridge]
STP=yes # 启用生成树协议(防止环路)
ForwardDelay=2 # 转发延迟(秒,默认2)
步骤2:将 bond0 加入网桥(修改 40-bond0.network
)
原 bond0 的 .network
文件需移除 IP 配置,改为加入网桥:
ini
[Match]
Name=bond0
[Network]
Bridge=br0 # 加入网桥br0(不再配置IP)
步骤3:配置网桥的网络参数(80-br0.network
)
网桥自身作为逻辑接口,配置 IP:
ini
[Match]
Name=br0
[Network]
Address=192.168.2.10/24 # 网桥的IP
Gateway=192.168.2.1
DNS=114.114.114.114
完整配置关系示例
假设场景:eth0
+ eth1
绑定为 bond0
→ bond0
加入网桥 br0
→ 同时在 bond0
上创建 vlan10
。
配置文件顺序:
20-bond0.netdev
(定义bond)30-eth0-bond.network
、30-eth1-bond.network
(物理网卡加入bond)70-br0.netdev
(定义网桥)40-bond0.network
(bond加入网桥)50-vlan10.netdev
(定义vlan,父接口为bond0)60-vlan10.network
(vlan配置IP)80-br0.network
(网桥配置IP)
验证与管理
- 查看设备状态:
networkctl list
- 查看IP配置:
ip addr
- 重启服务:
systemctl restart systemd-networkd
- 禁用其他网络管理工具(如NetworkManager):
systemctl disable --now NetworkManager
通过以上配置,可灵活实现以太网、绑定、VLAN和网桥的组合应用,满足不同网络场景需求。
以下是基于systemd-networkd的以太网、绑定、VLAN和网桥配置的完整方案,结合官方文档与实际案例整理而成:
一、配置前准备
-
确保内核支持
bashmodprobe bonding # 加载绑定模块 lsmod | grep bonding # 验证模块已加载
-
配置文件目录
所有文件需放置在
/etc/systemd/network/
目录下,建议文件名以数字开头(如10-
、20-
)以确保加载顺序。
二、绑定接口(Bond)配置
1. 创建绑定接口的.netdev文件
ini
# /etc/systemd/network/10-bond0.netdev
[NetDev]
Name=bond0
Kind=bond
[Bond]
Mode=802.3ad # 动态链路聚合模式
MIIMonitorSec=100ms # 链路监测间隔
LACPTransmitRate=fast # 快速LACP协商
UpDelaySec=100ms # 链路启动延迟
DownDelaySec=100ms # 链路故障延迟
2. 绑定物理网卡
为每个物理网卡创建.network文件:
ini
# /etc/systemd/network/20-eth0.network
[Match]
Name=eth0
[Network]
Bond=bond0
# /etc/systemd/network/20-eth1.network
[Match]
Name=eth1
[Network]
Bond=bond0
3. 配置绑定接口的IP
ini
# /etc/systemd/network/30-bond0.network
[Match]
Name=bond0
[Network]
Address=192.168.1.100/24
Gateway=192.168.1.1
DNS=8.8.8.8
三、VLAN配置
1. 创建VLAN接口的.netdev文件
ini
# /etc/systemd/network/40-vlan10.netdev
[NetDev]
Name=vlan10
Kind=vlan
[VLAN]
Id=10 # VLAN ID
VLANDev=bond0 # 父接口为bond0
2. 配置VLAN接口的IP
ini
# /etc/systemd/network/50-vlan10.network
[Match]
Name=vlan10
[Network]
Address=192.168.2.100/24
四、网桥(Bridge)配置
1. 创建网桥接口的.netdev文件
ini
# /etc/systemd/network/60-br0.netdev
[NetDev]
Name=br0
Kind=bridge
[Bridge]
BridgeInterfaces=vlan10 # 添加VLAN接口为成员
2. 配置网桥接口的IP
ini
# /etc/systemd/network/70-br0.network
[Match]
Name=br0
[Network]
Address=192.168.3.100/24
五、生效与验证
-
重启服务
bashsystemctl restart systemd-networkd
-
验证接口状态
bashnetworkctl status # 查看所有接口状态 ip link show bond0 # 检查绑定接口状态 ip link show vlan10 # 检查VLAN状态 ip link show br0 # 检查网桥状态
-
测试连通性
bashping 192.168.3.1 # 测试网桥IP连通性 ping 8.8.8.8 # 测试DNS解析
六、高级配置示例
1. 绑定接口使用active-backup模式
ini
# /etc/systemd/network/10-bond0.netdev
[Bond]
Mode=active-backup
PrimaryReselectPolicy=always # 主接口故障后立即切换
2. 网桥添加多个成员接口
ini
# /etc/systemd/network/60-br0.netdev
[Bridge]
BridgeInterfaces=vlan10 vlan20 # 添加多个VLAN接口
七、常见问题解决
-
配置不生效
- 检查文件权限:
ls -l /etc/systemd/network/
- 查看日志:
journalctl -u systemd-networkd
- 验证语法:
systemd-analyze verify /etc/systemd/network/*.network
- 检查文件权限:
-
链路切换延迟
调整
MIIMonitorSec
和LACPTransmitRate
参数,例如:iniMIIMonitorSec=50ms LACPTransmitRate=fast
-
VLAN不通
- 确认交换机已配置对应VLAN
- 检查父接口(如bond0)是否已正确配置并激活
通过以上步骤,可实现基于systemd-networkd的高可用网络配置,支持绑定、VLAN和网桥的灵活组合。
配置 systemd-networkd 实现以太网+绑定+VLAN+网桥
以下是完整的配置步骤,通过 systemd-networkd 实现以下拓扑:
scss
物理接口 (enp3s0f0, enp3s0f1) → 绑定接口 (bond0) → VLAN 接口 (vlan10) → 网桥接口 (br0)
1. 配置物理以太网接口
创建配置文件 /etc/systemd/network/10-physical.network
:
ini
[Match]
Name=enp3s0f0 enp3s0f1 # 物理网卡名称
[Network]
Bond=bond0 # 加入绑定组
2. 创建绑定接口 (Bond)
创建配置文件 /etc/systemd/network/20-bond.netdev
:
ini
[NetDev]
Name=bond0
Kind=bond
[Bond]
Mode=802.3ad # 常用绑定模式
TransmitHashPolicy=layer3+4
MIIMonitorSec=1s
支持模式:
balance-rr
(轮询)、active-backup
(主备)、802.3ad
(LACP聚合)
3. 配置绑定接口网络
创建配置文件 /etc/systemd/network/30-bond.network
:
ini
[Match]
Name=bond0
[Network]
VLAN=vlan10 # 指定承载的VLAN
4. 创建 VLAN 接口
创建配置文件 /etc/systemd/network/40-vlan10.netdev
:
ini
[NetDev]
Name=vlan10
Kind=vlan
[VLAN]
Id=10 # VLAN ID
5. 配置 VLAN 接口网络
创建配置文件 /etc/systemd/network/50-vlan10.network
:
ini
[Match]
Name=vlan10
[Network]
Bridge=br0 # 加入网桥
6. 创建网桥接口 (Bridge)
创建配置文件 /etc/systemd/network/60-br0.netdev
:
ini
[NetDev]
Name=br0
Kind=bridge
7. 配置网桥网络
创建配置文件 /etc/systemd/network/70-br0.network
:
ini
[Match]
Name=br0
[Network]
Address=192.168.1.100/24 # 网桥IP
Gateway=192.168.1.1
DNS=8.8.8.8
8. 启用并重启服务
bash
sudo systemctl enable systemd-networkd
sudo systemctl restart systemd-networkd
9. 验证配置
bash
# 查看接口状态
networkctl list
# 检查绑定状态
networkctl status bond0
# 查看VLAN配置
cat /proc/net/vlan/config
# 检查网桥
bridge link show br0
输出应显示:
ini
bond0: bond (802.3ad) [slaves: enp3s0f0, enp3s0f1]
vlan10@bond0: vlan [id 10]
br0: bridge [vlan10]
关键配置说明
-
绑定模式选择:
802.3ad
:需交换机支持LACPactive-backup
:简单主备模式- 使用
MIIMonitorSec
设置链路检测间隔
-
VLAN隔离:
- 每个VLAN需要独立的
.netdev
文件 - VLAN ID在
[VLAN]
段定义
- 每个VLAN需要独立的
-
网桥优势:
- 支持STP(需额外配置)
- 可连接虚拟机/容器
- IP地址配置在网桥而非物理接口
-
配置依赖顺序:
graph LR A[物理接口] --> B[绑定接口] B --> C[VLAN接口] C --> D[网桥接口]
注意:所有配置文件需按数字前缀顺序加载,确保依赖关系正确。
以下是使用 systemd-networkd
配置以太网(Ethernet)、绑定(Bond)、虚拟局域网(VLAN)和网桥(Bridge)的详细指南,结合配置文件示例和操作步骤:
一、以太网(Ethernet)基础配置
1. 启用 systemd-networkd
服务
bash
sudo systemctl enable systemd-networkd
sudo systemctl start systemd-networkd
需禁用其他网络管理工具(如 NetworkManager):
bash
sudo systemctl disable NetworkManager
2. 配置静态 IP 或 DHCP
-
静态 IP 配置 (
/etc/systemd/network/10-eth0.network
):ini[Match] Name=eth0 [Network] Address=192.168.1.100/24 Gateway=192.168.1.1 DNS=8.8.8.8
-
DHCP 配置 :
ini[Match] Name=eth0 [Network] DHCP=yes
验证:
bash
networkctl reload # 重新加载配置
networkctl status eth0 # 查看接口状态
二、绑定(Bond)配置
1. 创建绑定接口(.netdev
文件)
bash
# /etc/systemd/network/10-bond0.netdev
[NetDev]
Name=bond0
Kind=bond
[Bond]
Mode=802.3ad # 负载均衡模式(可选:active-backup, balance-rr 等)
MIIMonitorSec=1s # MII 监控间隔
2. 绑定物理接口
bash
# /etc/systemd/network/20-eth0.network
[Match]
Name=eth0
[Network]
Bond=bond0
bash
# /etc/systemd/network/20-eth1.network
[Match]
Name=eth1
[Network]
Bond=bond0
3. 配置绑定接口 IP
bash
# /etc/systemd/network/30-bond0.network
[Match]
Name=bond0
[Network]
Address=192.168.1.200/24
Gateway=192.168.1.1
DNS=8.8.8.8
验证:
bash
cat /sys/class/net/bond0/bonding/mode # 查看绑定模式
ip link show bond0 # 检查接口状态
三、虚拟局域网(VLAN)配置
1. 创建 VLAN 子接口(.netdev
文件)
bash
# /etc/systemd/network/10-vlan100.netdev
[NetDev]
Name=eth0.100
Kind=vlan
[VLAN]
Id=100 # VLAN ID
2. 配置 VLAN 接口
bash
# /etc/systemd/network/20-vlan100.network
[Match]
Name=eth0.100
[Network]
Address=192.168.100.10/24
Gateway=192.168.100.1
DNS=8.8.8.8
验证:
bash
ip link show eth0.100 # 检查 VLAN 接口
ping 192.168.100.1 # 测试连通性
四、网桥(Bridge)配置
1. 创建网桥设备(.netdev
文件)
bash
# /etc/systemd/network/10-br0.netdev
[NetDev]
Name=br0
Kind=bridge
2. 将物理接口加入网桥
bash
# /etc/systemd/network/20-eth0.network
[Match]
Name=eth0
[Network]
Bridge=br0
3. 配置网桥 IP
bash
# /etc/systemd/network/30-br0.network
[Match]
Name=br0
[Network]
Address=192.168.1.100/24
Gateway=192.168.1.1
DNS=8.8.8.8
验证:
bash
bridge link show # 查看网桥拓扑
ip addr show br0 # 检查网桥 IP
五、高级场景
1. VLAN 桥接
bash
# /etc/systemd/network/10-br0.netdev
[NetDev]
Name=br0
Kind=bridge
# /etc/systemd/network/20-vlan100.netdev
[NetDev]
Name=eth0.100
Kind=vlan
[VLAN]
Id=100
# /etc/systemd/network/30-br0.network
[Match]
Name=br0
[Network]
Bridge=br0
# /etc/systemd/network/40-vlan100.network
[Match]
Name=eth0.100
[Network]
Bridge=br0
2. 多 IP 地址配置
ini
[Network]
Address=192.168.1.100/24
Address=10.0.0.10/8 # 支持多 IP
Gateway=192.168.1.1
六、常见问题排查
-
配置未生效:
- 检查文件名优先级(如
10-eth0.network
优先级高于20-eth0.network
)。 - 使用
systemd-analyze verify /etc/systemd/network/*.network
验证语法。
- 检查文件名优先级(如
-
接口未匹配:
- 确认
[Match]
中的条件(如Name=eth0
)与实际接口名一致。 - 使用
networkctl list
查看接口状态。
- 确认
-
DHCP 失败:
- 检查防火墙是否放行 UDP 67/68 端口。
- 查看日志:
journalctl -u systemd-networkd -f
。
七、配置文件管理建议
-
文件组织 :
bash/etc/systemd/network/ ├── 10-bond0.netdev # 绑定设备定义 ├── 20-eth0.network # 物理接口绑定到 bond0 ├── 10-br0.netdev # 网桥设备定义 └── 30-br0.network # 网桥 IP 配置
-
服务依赖 :
bash[Install] WantedBy=multi-user.target # 确保服务开机启动
通过以上配置,可灵活实现复杂网络拓扑。更多细节可参考 man systemd.network
或官方网页 。
在 systemd-networkd 中配置以太网(Ethernet)、绑定(Bond)、虚拟局域网(VLAN)和网桥(Bridge)需通过创建 .netdev
和 .network
配置文件(路径为 /etc/systemd/network/
),优先级按文件名数字升序生效。以下是详细配置方法及示例:
🔧 一、以太网(Ethernet)配置
适用场景:服务器静态 IP 或 DHCP 动态获取。
-
静态 IP 配置 :
ini# /etc/systemd/network/10-eth0.network [Match] Name=eth0 # 匹配接口名 [Network] Address=192.168.1.100/24 # IPv4 地址 Gateway=192.168.1.1 # 网关 DNS=8.8.8.8 # DNS 服务器
-
DHCP 配置 :
ini[Network] DHCP=yes # 启用 DHCP
生效命令:
bash
sudo systemctl restart systemd-networkd
🔗 二、绑定(Bond)接口配置
适用场景:多网卡冗余或负载均衡(需交换机支持 LACP)。
-
创建 Bond 设备 :
ini# /etc/systemd/network/10-bond0.netdev [NetDev] Name=bond0 # 绑定接口名 Kind=bond # 类型为绑定 [Bond] Mode=802.3ad # 绑定模式(LACP) MIIMonitorSec=1s # 链路检测间隔
-
将物理网卡加入 Bond :
ini# /etc/systemd/network/20-eth0.network [Match] Name=eth0 [Network] Bond=bond0 # 绑定到 bond0
-
配置 Bond 接口 IP :
ini# /etc/systemd/network/30-bond0.network [Match] Name=bond0 [Network] Address=192.168.1.100/24 Gateway=192.168.1.1
🌐 三、虚拟局域网(VLAN)配置
适用场景:网络逻辑隔离(需交换机配置 Trunk 口)。
-
创建 VLAN 子接口 :
ini# /etc/systemd/network/10-vlan10.netdev [NetDev] Name=eth0.10 # VLAN 接口名 Kind=vlan # 类型为 VLAN [VLAN] Id=10 # VLAN ID
-
配置 VLAN IP :
ini# /etc/systemd/network/20-vlan10.network [Match] Name=eth0.10 [Network] Address=192.168.10.10/24
🌉 四、网桥(Bridge)配置
适用场景:虚拟化或容器网络(如 KVM、Docker)。
-
创建网桥设备 :
ini# /etc/systemd/network/10-br0.netdev [NetDev] Name=br0 # 网桥名 Kind=bridge # 类型为网桥
-
将物理接口加入网桥 :
ini# /etc/systemd/network/20-eth0.network [Match] Name=eth0 [Network] Bridge=br0 # 绑定到网桥
-
配置网桥 IP :
ini# /etc/systemd/network/30-br0.network [Match] Name=br0 [Network] DHCP=yes # 或静态 IP
⚠️ 五、关键注意事项
-
配置文件优先级:
- 文件名格式为
数字-名称.network
(如10-eth.network
),数字越小优先级越高。 - 目录优先级:
/etc/systemd/network/
>/run/systemd/network/
>/usr/lib/systemd/network/
。
- 文件名格式为
-
服务管理命令:
bashsystemctl restart systemd-networkd # 重启服务 networkctl status eth0 # 检查接口状态 journalctl -u systemd-networkd # 查看日志
-
冲突处理:
-
禁用其他网络管理工具(如 NetworkManager):
bashsudo systemctl disable --now NetworkManager
-
-
高级调试:
- 检查配置语法:
systemd-analyze verify /etc/systemd/network/*.network
。 - 验证 VLAN Trunk 支持:加载
8021q
内核模块并配置交换机端。
- 检查配置语法:
📊 六、配置对比与适用场景
网络类型 | 配置文件 | 核心参数 | 典型场景 |
---|---|---|---|
以太网 | .network |
Address , DHCP |
服务器静态 IP/DHCP |
绑定(Bond) | .netdev +.network |
Mode=802.3ad |
网卡冗余/负载均衡 |
VLAN | .netdev +.network |
Kind=vlan , Id=10 |
网络逻辑隔离 |
网桥 | .netdev +.network |
Kind=bridge |
虚拟机/容器网络 |
🔍 七、故障排查
- IP 未生效 :检查
[Match]
条件是否匹配接口名(如eth0
vsenp0s3
)。 - DHCP 失败 :确保防火墙放行 UDP 67/68 端口,并确认
DHCP=yes
已启用。 - VLAN 未识别:验证物理接口已启用且交换机 Trunk 配置正确。
通过以上配置,可高效管理服务器网络拓扑。对于动态网络(如笔记本无线切换),仍推荐 NetworkManager;而服务器静态环境,systemd-networkd 凭借轻量与集成优势是更优选择。
以下是使用 systemd-networkd 配置以太网(Ethernet)、绑定(Bond)、虚拟局域网(VLAN)和网桥(Bridge)的详细指南,基于最新实践整理:
🔧 一、以太网(Ethernet)
1. 静态 IP 配置
创建配置文件 /etc/systemd/network/20-eth0.network
:
ini
[Match]
Name=eth0 # 网卡名称(通过 `ip a` 查询)
[Network]
Address=192.168.1.100/24 # 主 IPv4 地址
Address=192.168.1.101/24 # 附加 IPv4 地址
Gateway=192.168.1.1 # IPv4 网关
DNS=8.8.8.8 # DNS 服务器
DHCP=no # 关闭 DHCP
2. DHCP 动态 IP 配置
ini
[Match]
Name=eth0
[Network]
DHCP=yes # 启用 IPv4 DHCP
验证命令:
networkctl status eth0
:检查接口状态和配置ip a show eth0
:查看分配的 IP 地址
🔗 二、绑定(Bond)
绑定用于链路聚合,提升带宽或冗余性。
1. 创建 Bond 接口
配置文件 /etc/systemd/network/10-bond0.netdev
:
ini
[NetDev]
Name=bond0
Kind=bond
[Bond]
Mode=active-backup # 模式:主备冗余
PrimaryReselectPolicy=always
MIIMonitorSec=1s # 链路检测间隔
2. 配置 Bond 从属接口
配置文件 /etc/systemd/network/20-bond0-slave.network
:
ini
[Match]
Name=eth1 # 从属接口1
[Network]
Bond=bond0 # 绑定到 bond0
3. 为 Bond 接口分配 IP
配置文件 /etc/systemd/network/30-bond0.network
:
ini
[Match]
Name=bond0
[Network]
Address=10.0.0.10/24
Gateway=10.0.0.1
常用 Bond 模式:
模式 作用 适用场景 active-backup
主备冗余 高可用性 balance-rr
轮询负载均衡 带宽聚合 802.3ad
LACP 动态聚合 交换机支持时
🌐 三、虚拟局域网(VLAN)
1. 创建 VLAN 子接口
配置文件 /etc/systemd/network/10-vlan100.netdev
:
ini
[NetDev]
Name=vlan100
Kind=vlan
[VLAN]
Id=100 # VLAN ID(必须与交换机一致)
2. 绑定 VLAN 到物理接口
配置文件 /etc/systemd/network/20-vlan100.network
:
ini
[Match]
Name=eth0 # 物理父接口
[Network]
VLAN=vlan100 # 关联 VLAN
3. 为 VLAN 分配 IP
配置文件 /etc/systemd/network/30-vlan100.network
:
ini
[Match]
Name=vlan100
[Network]
Address=192.168.100.10/24
关键点:
- 确保物理接口支持 VLAN(加载
8021q
模块:sudo modprobe 8021q
)- 交换机端口需配置为 Trunk 模式
🌉 四、网桥(Bridge)
网桥用于连接多个网络段(如虚拟机网络)。
1. 创建网桥设备
配置文件 /etc/systemd/network/10-br0.netdev
:
ini
[NetDev]
Name=br0
Kind=bridge
[Bridge]
STP=on # 生成树协议防环
2. 绑定物理接口到网桥
配置文件 /etc/systemd/network/20-br0-slave.network
:
ini
[Match]
Name=eth0 # 物理接口
[Network]
Bridge=br0 # 加入网桥
3. 为网桥分配 IP
配置文件 /etc/systemd/network/30-br0.network
:
ini
[Match]
Name=br0
[Network]
Address=192.168.10.1/24
DHCP=no
典型场景:
- 虚拟机网络(KVM/QEMU)通过网桥连接外部网络
- 容器网络隔离
⚙️ 五、服务管理与验证
-
启用服务:
bashsudo systemctl enable --now systemd-networkd sudo systemctl restart systemd-networkd # 应用配置变更
-
验证工具:
networkctl list
:查看所有接口状态(含 Bond/VLAN/Bridge)networkctl status bond0
:检查绑定接口细节bridge link show
:查看网桥绑定端口
⚠️ 六、注意事项
- 配置文件优先级 :
/etc/systemd/network/
>/run/systemd/network/
>/usr/lib/systemd/network/
- 服务冲突 :
禁用 NetworkManager:sudo systemctl disable --now NetworkManager
- 接口命名 :
使用ip a
确认物理接口名称(如enp0s3
)
通过组合上述配置,可实现复杂网络拓扑(如 Bond+VLAN 或 Bridge+VLAN)。详细参数参考
man systemd.network
和man systemd.netdev
。
以下是使用 systemd-networkd
配置以太网、Bond、VLAN 和 Bridge 的详细步骤和示例配置:
1. 以太网(Ethernet)基础配置
假设物理接口名为 enp1s0
,启用 DHCP:
ini
# /etc/systemd/network/10-enp1s0.network
[Match]
Name=enp1s0
[Network]
DHCP=yes
2. Bond(绑定)配置
2.1 创建 Bond 接口 bond0
(模式为 active-backup
):
ini
# /etc/systemd/network/20-bond0.netdev
[NetDev]
Name=bond0
Kind=bond
[Bond]
Mode=active-backup
PrimaryReselectPolicy=always
MIIMonitorSec=1s
ini
# /etc/systemd/network/20-bond0.network
[Match]
Name=bond0
[Network]
# 静态 IP 示例:
Address=192.168.1.10/24
Gateway=192.168.1.1
DNS=8.8.8.8
# 或使用 DHCP:
# DHCP=yes
2.2 将 enp1s0
和 enp2s0
加入 Bond
ini
# /etc/systemd/network/10-enp1s0.network
[Match]
Name=enp1s0
[Network]
Bond=bond0
# /etc/systemd/network/10-enp2s0.network(同上)
[Match]
Name=enp2s0
[Network]
Bond=bond0
3. VLAN 配置
在 bond0
上创建 VLAN ID 为 100
的接口:
ini
# /etc/systemd/network/30-bond0.100.netdev
[NetDev]
Name=bond0.100
Kind=vlan
[VLAN]
Id=100
ini
# /etc/systemd/network/30-bond0.100.network
[Match]
Name=bond0.100
[Network]
Address=10.0.100.2/24
4. Bridge(网桥)配置
创建网桥 br0
,并将 bond0.100
加入桥接:
ini
# /etc/systemd/network/40-br0.netdev
[NetDev]
Name=br0
Kind=bridge
[Bridge]
ForwardDelaySec=0
STP=no
ini
# /etc/systemd/network/40-br0.network
[Match]
Name=br0
[Network]
Address=10.0.100.1/24
ini
# /etc/systemd/network/30-bond0.100.network(修改)
[Match]
Name=bond0.100
[Network]
Bridge=br0 # 仅作为桥接端口,无需配置 IP
配置生效
-
重载配置 :
bashsystemctl restart systemd-networkd
-
验证状态 :
bashnetworkctl status ip link show # 查看接口状态 bridge link # 查看桥接端口
注意事项
- 依赖顺序 :文件名按
00-*.netdev
、10-*.network
的顺序命名,确保配置按依赖关系加载。 - DHCP 冲突:确保同一网络内只有单个接口启用 DHCP。
- VLAN 父接口 :VLAN 的父接口(如
bond0
)必须存在且已配置。
调整参数(如 Bond 模式、VLAN ID、IP 地址)即可适配具体场景。
以下是针对 Linux 系统 systemd-networkd
的网络配置指南,涵盖 以太网、绑定(Bonding)、VLAN、网桥 的典型场景配置方法。所有配置均基于 .network
和 .netdev
配置文件。
1. 以太网(Ethernet)配置
场景 : 直接配置物理网卡(如 eth0
)的 IP 地址。
配置文件:
- 文件名 :
/etc/systemd/network/20-eth0.network
ini
[Match]
Name=eth0
[Network]
DHCP=yes # 启用 DHCP
# 或手动指定静态 IP
# Address=192.168.1.100/24
# Gateway=192.168.1.1
# DNS=8.8.8.8
2. 绑定(Bonding)配置
场景 : 将多个物理网卡(如 eth0
和 eth1
)绑定为一个逻辑接口(bond0
),提升带宽或冗余。
步骤 1: 创建 Bond 接口
- 文件名 :
/etc/systemd/network/10-bond0.netdev
ini
[NetDev]
Name=bond0
Kind=bond
[Bond]
Mode=active-backup # 可选模式:balance-rr, active-backup, 802.3ad 等
PrimaryReselectPolicy=always
MIIMonitorSec=1s # 链路检测间隔
步骤 2: 将物理网卡加入 Bond
- 文件名 :
/etc/systemd/network/20-eth0-bond.network
ini
[Match]
Name=eth0
[Network]
Bond=bond0
- 文件名 :
/etc/systemd/network/20-eth1-bond.network
ini
[Match]
Name=eth1
[Network]
Bond=bond0
步骤 3: 配置 Bond 接口的 IP
- 文件名 :
/etc/systemd/network/30-bond0.network
ini
[Match]
Name=bond0
[Network]
DHCP=yes
# 或静态 IP
# Address=192.168.1.100/24
# Gateway=192.168.1.1
3. VLAN 配置
场景 : 在物理接口(如 eth0
)上创建 VLAN 子接口(如 vlan10
)。
步骤 1: 创建 VLAN 接口
- 文件名 :
/etc/systemd/network/10-vlan10.netdev
ini
[NetDev]
Name=vlan10
Kind=vlan
[VLAN]
Id=10 # VLAN ID
步骤 2: 配置 VLAN 接口的父接口
- 文件名 :
/etc/systemd/network/20-eth0-vlan.network
ini
[Match]
Name=eth0
[Network]
VLAN=vlan10
步骤 3: 配置 VLAN 的 IP
- 文件名 :
/etc/systemd/network/30-vlan10.network
ini
[Match]
Name=vlan10
[Network]
Address=192.168.10.100/24
Gateway=192.168.10.1
DNS=8.8.8.8
4. 网桥(Bridge)配置
场景 : 创建一个网桥(br0
),将物理接口(如 eth0
)或其他虚拟接口加入网桥。
步骤 1: 创建网桥接口
- 文件名 :
/etc/systemd/network/10-br0.netdev
ini
[NetDev]
Name=br0
Kind=bridge
[Bridge]
STP=on # 生成树协议(可选)
步骤 2: 将物理接口加入网桥
- 文件名 :
/etc/systemd/network/20-eth0-bridge.network
ini
[Match]
Name=eth0
[Network]
Bridge=br0
步骤 3: 配置网桥的 IP
- 文件名 :
/etc/systemd/network/30-br0.network
ini
[Match]
Name=br0
[Network]
DHCP=yes
# 或静态 IP
# Address=192.168.1.100/24
# Gateway=192.168.1.1
关键操作命令
-
重启服务 :
bashsystemctl restart systemd-networkd
-
查看网络状态 :
bashnetworkctl list networkctl status bond0 # 检查指定接口状态
-
调试日志 :
bashjournalctl -u systemd-networkd -f
注意事项
- 文件命名顺序 :
systemd-networkd
按文件名顺序加载配置(如10-
优先于20-
)。 - 多网卡场景: Bond、VLAN、Bridge 可组合使用(例如:在 Bond 上创建 VLAN,再接入 Bridge)。
- 防火墙 : 确保防火墙(如
iptables
或nftables
)允许相关流量。
如果有更具体的需求(如高级 Bonding 模式或 IPv6 配置),请提供详细信息!