Linux的NetworkManager的nmcli配置网桥(bridge) 笔记250712
要使用 nmcli
配置 NetworkManager 管理的网桥(bridge),请按以下步骤操作:
1. 创建网桥接口
bash
# 创建名为 br0 的网桥接口
sudo nmcli connection add type bridge con-name br0 ifname br0
2. 配置网桥的 IP 地址
静态 IP 配置示例:
bash
sudo nmcli connection modify br0 \
ipv4.addresses 192.168.1.100/24 \
ipv4.gateway 192.168.1.1 \
ipv4.dns "8.8.8.8" \
ipv4.method manual
DHCP 配置示例:
bash
sudo nmcli connection modify br0 ipv4.method auto
3. 将物理接口(如 eth0)添加到网桥
bash
# 创建 bridge-slave 连接,将 eth0 绑定到 br0
sudo nmcli connection add type bridge-slave \
con-name bridge-slave-eth0 \
ifname eth0 \
master br0
注意:
如果
eth0
已有连接(如Wired connection 1
),需先删除或停用 原连接:
bashsudo nmcli connection delete "Wired connection 1" # 删除 # 或 sudo nmcli connection down "Wired connection 1" # 临时停用
4. 激活网桥配置
bash
# 激活从属接口(eth0)
sudo nmcli connection up bridge-slave-eth0
# 激活网桥 br0
sudo nmcli connection up br0
5. 验证配置
bash
# 检查网桥状态
nmcli connection show br0
# 查看网桥详细信息
bridge link show br0
# 检查 IP 地址
ip addr show br0
完整命令示例(静态 IP 配置)
bash
# 创建网桥
sudo nmcli con add type bridge con-name br0 ifname br0
# 配置静态 IP
sudo nmcli con mod br0 ipv4.addresses 192.168.1.100/24
sudo nmcli con mod br0 ipv4.gateway 192.168.1.1
sudo nmcli con mod br0 ipv4.dns "8.8.8.8"
sudo nmcli con mod br0 ipv4.method manual
# 绑定 eth0 到网桥
sudo nmcli con add type bridge-slave con-name slave-eth0 ifname eth0 master br0
# 激活配置
sudo nmcli con up slave-eth0
sudo nmcli con up br0
关键说明
-
物理接口无需独立 IP :
绑定到网桥的接口(如
eth0
)不再需要配置 IP ,所有流量通过网桥br0
处理。 -
连接名称(con-name):
br0
:网桥的逻辑名称(可自定义)。bridge-slave-eth0
:从属接口的逻辑名称(可自定义)。
-
NetworkManager 持久化 :
配置会自动保存到
/etc/NetworkManager/system-connections/
,重启后生效。 -
故障排查:
- 检查服务状态:
systemctl status NetworkManager
- 查看日志:
journalctl -u NetworkManager
- 检查服务状态:
通过以上步骤,您即可成功创建并管理网桥接口。
使用 NetworkManager 的 nmcli
配置网桥 (Bridge)
在 Linux 中使用 NetworkManager 的 nmcli
命令配置网桥是管理网络连接的现代方式。以下是详细指南,涵盖基础配置到高级场景:
基础网桥配置
1. 创建网桥接口
bash
sudo nmcli con add type bridge con-name br0 ifname br0
2. 添加物理接口到网桥
bash
sudo nmcli con add type bridge-slave con-name br0-port1 ifname enp1s0 master br0
3. 配置网桥 IP 地址
DHCP 配置:
bash
sudo nmcli con mod br0 ipv4.method auto
静态 IP 配置:
bash
sudo nmcli con mod br0 \
ipv4.addresses 192.168.1.10/24 \
ipv4.gateway 192.168.1.1 \
ipv4.dns "8.8.8.8,8.8.4.4" \
ipv4.method manual
4. 激活配置
bash
sudo nmcli con up br0
sudo nmcli con up br0-port1
高级配置选项
生成树协议 (STP) 配置
bash
sudo nmcli con mod br0 \
bridge.stp yes \
bridge.priority 16384 \
bridge.forward-delay 2 \
bridge.hello-time 1 \
bridge.max-age 10
添加多个端口
bash
# 添加第二个端口
sudo nmcli con add type bridge-slave con-name br0-port2 ifname enp2s0 master br0
# 添加第三个端口
sudo nmcli con add type bridge-slave con-name br0-port3 ifname enp3s0 master br0
配置 MAC 地址老化时间
bash
sudo nmcli con mod br0 bridge.ageing-time 300
组合配置示例
场景:网桥 + VLAN
bash
# 1. 创建 VLAN 接口
sudo nmcli con add type vlan con-name vlan100 ifname vlan100 dev enp4s0 id 100
# 2. 创建网桥
sudo nmcli con add type bridge con-name br-vlan100 ifname br-vlan100
# 3. 添加 VLAN 接口到网桥
sudo nmcli con add type bridge-slave con-name br-vlan100-port ifname vlan100 master br-vlan100
# 4. 配置网桥 IP
sudo nmcli con mod br-vlan100 \
ipv4.addresses 10.100.0.1/24 \
ipv4.method manual
# 5. 激活所有连接
sudo nmcli con up vlan100
sudo nmcli con up br-vlan100
sudo nmcli con up br-vlan100-port
场景:绑定 (Bond) + 网桥
bash
# 1. 创建绑定接口
sudo nmcli con add type bond con-name bond0 ifname bond0 mode=802.3ad
# 2. 添加从属网卡
sudo nmcli con add type ethernet con-name bond0-slave1 ifname enp5s0 master bond0
sudo nmcli con add type ethernet con-name bond0-slave2 ifname enp6s0 master bond0
# 3. 创建网桥
sudo nmcli con add type bridge con-name br-bond ifname br-bond
# 4. 添加绑定到网桥
sudo nmcli con add type bridge-slave con-name br-bond-port ifname bond0 master br-bond
# 5. 配置网桥 IP
sudo nmcli con mod br-bond ipv4.method auto
# 6. 激活所有连接
sudo nmcli con up bond0
sudo nmcli con up bond0-slave1
sudo nmcli con up bond0-slave2
sudo nmcli con up br-bond
sudo nmcli con up br-bond-port
管理命令
查看网桥状态
bash
# 查看所有连接
nmcli con show
# 查看设备状态
nmcli dev status
# 查看网桥详细信息
nmcli -p con show br0
# 查看系统网桥信息
bridge link
修改配置
bash
# 修改网桥 IP
sudo nmcli con mod br0 ipv4.addresses 192.168.2.10/24
# 添加额外 DNS 服务器
sudo nmcli con mod br0 +ipv4.dns 1.1.1.1
# 更改 STP 设置
sudo nmcli con mod br0 bridge.stp no
删除网桥
bash
# 先删除从属接口
sudo nmcli con delete br0-port1
sudo nmcli con delete br0-port2
# 再删除网桥
sudo nmcli con delete br0
故障排查
常见问题解决
-
网桥未激活:
bashsudo nmcli con up br0 sudo systemctl restart NetworkManager
-
端口未加入网桥:
bash# 检查端口连接状态 nmcli con show br0-port1 # 重新激活端口 sudo nmcli con down br0-port1 && sudo nmcli con up br0-port1
-
IP 地址冲突:
bash# 检查 IP 地址 ip addr show br0 # 修改 IP sudo nmcli con mod br0 ipv4.addresses 192.168.1.20/24
-
STP 问题:
bash# 查看 STP 状态 bridge link # 临时禁用 STP sudo nmcli con mod br0 bridge.stp no sudo nmcli con down br0 && sudo nmcli con up br0
持久化配置文件
所有配置保存在 /etc/NetworkManager/system-connections/
目录:
bash
ls -l /etc/NetworkManager/system-connections/
# 典型文件:
# - br0.nmconnection
# - br0-port1.nmconnection
示例配置文件 (br0.nmconnection)
ini
[connection]
id=br0
type=bridge
interface-name=br0
[bridge]
stp=true
priority=16384
[ipv4]
address1=192.168.1.10/24,192.168.1.1
dns=8.8.8.8;8.8.4.4;
method=manual
[ipv6]
method=ignore
最佳实践
-
命名规范:
bash# 使用描述性名称 nmcli con add type bridge con-name "mgmt-bridge" ifname br-mgmt
-
防火墙集成:
bash# 允许网桥流量通过防火墙 sudo firewall-cmd --add-interface=br0 --zone=trusted --permanent sudo firewall-cmd --reload
-
虚拟化支持:
bash# 允许 KVM 使用网桥 sudo usermod -aG libvirt $USER sudo virsh net-define /dev/stdin <<EOF <network> <name>br0-net</name> <forward mode="bridge"/> <bridge name="br0"/> </EOF
-
备份配置:
bash# 备份所有 NetworkManager 配置 sudo cp -r /etc/NetworkManager/system-connections/ ~/nm-backup
-
性能优化:
bash# 禁用不需要的功能 sudo nmcli con mod br0 bridge.multicast-snooping no sudo nmcli con mod br0 bridge.vlan-filtering yes
通过 nmcli
配置网桥提供了灵活的网络管理能力,特别适合服务器虚拟化、容器网络和复杂网络拓扑场景。
使用 nmcli
配置 NetworkManager 网桥 (Bridge) 完整指南
通过 nmcli
配置网桥是 NetworkManager 中最灵活高效的方式,适用于 RHEL/CentOS 8+、Ubuntu 18.04+ 等现代 Linux 发行版。以下是详细步骤:
1. 基础网桥配置
创建网桥并添加物理接口
bash
# 创建网桥设备
sudo nmcli con add type bridge con-name br0 ifname br0
# 添加物理接口作为从属设备
sudo nmcli con add type bridge-slave con-name br0-eth0 ifname eth0 master br0
sudo nmcli con add type bridge-slave con-name br0-eth1 ifname eth1 master br0
# 激活网桥
sudo nmcli con up br0
配置 IP 地址 (可选)
bash
# 静态 IP 配置
sudo nmcli con modify br0 ipv4.method manual \
ipv4.addresses 192.168.1.100/24 \
ipv4.gateway 192.168.1.1 \
ipv4.dns "8.8.8.8 8.8.4.4"
# 或 DHCP 配置
sudo nmcli con modify br0 ipv4.method auto
# 应用更改
sudo nmcli con down br0 && sudo nmcli con up br0
2. 高级配置参数
STP 与性能优化
bash
# 禁用生成树协议 (小型网络)
sudo nmcli con modify br0 bridge.stp no
# 调整转发延迟 (毫秒)
sudo nmcli con modify br0 bridge.forward-delay 0
# 设置最大等待时间 (秒)
sudo nmcli con modify br0 bridge.max-age 10
网桥优先级与端口设置
bash
# 设置网桥优先级 (0-65535)
sudo nmcli con modify br0 bridge.priority 16384
# 设置从属端口优先级 (0-63)
sudo nmcli con modify br0-eth0 bridge.port.priority 32
3. VLAN 集成配置
在网桥上创建 VLAN 接口
bash
# 创建 VLAN 接口
sudo nmcli con add type vlan con-name br0.10 dev br0 id 10
# 配置 VLAN IP
sudo nmcli con modify br0.10 ipv4.method manual \
ipv4.addresses 192.168.10.100/24
# 激活 VLAN
sudo nmcli con up br0.10
4. 绑定接口 + 网桥配置
bash
# 创建绑定接口
sudo nmcli con add type bond con-name bond0 ifname bond0 \
bond.options "mode=802.3ad,miimon=100"
# 添加物理接口到绑定
sudo nmcli con add type bond-slave ifname eth0 master bond0
sudo nmcli con add type bond-slave ifname eth1 master bond0
# 创建基于绑定的网桥
sudo nmcli con add type bridge con-name br-bond ifname br-bond master bond0
# 配置网桥IP
sudo nmcli con modify br-bond ipv4.method manual \
ipv4.addresses 10.0.0.100/24
5. 虚拟化集成 (KVM)
bash
# 创建桥接网络XML
cat > br0.xml <<EOF
<network>
<name>br0-net</name>
<forward mode="bridge"/>
<bridge name="br0"/>
</network>
EOF
# 定义并激活网络
virsh net-define br0.xml
virsh net-start br0-net
virsh net-autostart br0-net
# 虚拟机使用桥接网络
virt-install \
--network network=br0-net \
...
6. 状态查看与验证
bash
# 查看所有连接
nmcli con show
# 查看网桥详细信息
nmcli -f bridge con show br0
# 检查网桥状态
bridge link
bridge vlan show
# 测试连通性
ping -I br0 8.8.8.8
7. 故障排除技巧
bash
# 查看NetworkManager日志
journalctl -u NetworkManager -f
# 检查设备状态
nmcli device status
# 重置网桥配置
sudo nmcli con down br0
sudo nmcli con del br0
sudo nmcli con del br0-eth0
# 重新扫描设备
sudo nmcli device reapply br0
8. 永久生效机制
所有配置自动保存在以下位置:
/etc/NetworkManager/system-connections/
├── br0.nmconnection
├── br0-eth0.nmconnection
└── br0.10.nmconnection
重启验证:
bash
sudo reboot
nmcli con show --active | grep br0
9. 完整配置示例
创建带 VLAN 过滤的网桥:
bash
# 创建基础网桥
sudo nmcli con add type bridge con-name br-vlan ifname br-vlan \
bridge.stp yes \
bridge.vlan-filtering yes
# 添加物理接口
sudo nmcli con add type bridge-slave ifname eth2 master br-vlan
# 配置VLAN过滤
sudo nmcli con modify br-vlan \
bridge.vlan-default-pvid 1 \
bridge.vlan-stable-sec 300
# 添加允许的VLAN
sudo nmcli con modify br-vlan-slave-eth2 \
bridge-port.vlans "1-10,20 pvid 1 untagged"
# 激活配置
sudo nmcli con up br-vlan
提示:生产环境建议分阶段测试:
- 临时
nmcli
命令测试- 验证后添加持久参数
- 保存到配置文件
- 系统重启验证
此配置方案适用于:
- 服务器虚拟化 (KVM, LXC)
- 容器网络 (Docker, Podman)
- 复杂网络隔离环境
- 高可用网络架构
使用 NetworkManager 配置网桥 (Bridge)
在 NetworkManager 中配置网桥是连接多个网络接口或为虚拟机/容器提供网络连接的有效方式。以下是使用 nmcli
命令行工具配置网桥的详细指南:
基本概念
- 网桥作用:创建二层交换域,连接多个物理/虚拟接口
- 典型应用 :
- 虚拟机网络连接 (KVM, VirtualBox)
- 容器网络
- 聚合多个物理接口
- 关键组件 :
- 网桥接口 (主设备)
- 网桥从属接口 (物理/虚拟接口)
配置步骤
1. 创建网桥设备
bash
# 创建名为 br0 的网桥
nmcli con add type bridge con-name br0 ifname br0
2. 添加物理接口到网桥
bash
# 将 eth0 添加到 br0
nmcli con add type bridge-slave con-name br0-eth0 ifname eth0 master br0
# 将 eth1 添加到 br0 (可选)
nmcli con add type bridge-slave con-name br0-eth1 ifname eth1 master br0
3. 配置网桥 IP 地址
DHCP 配置:
bash
nmcli con mod br0 ipv4.method auto
静态 IP 配置:
bash
nmcli con mod br0 \
ipv4.addresses "192.168.1.100/24" \
ipv4.gateway "192.168.1.1" \
ipv4.dns "8.8.8.8" \
ipv4.method manual
4. 激活所有连接
bash
nmcli con up br0-eth0
nmcli con up br0-eth1 # 如果添加了第二个接口
nmcli con up br0
高级配置选项
1. 启用生成树协议 (STP)
bash
nmcli con mod br0 bridge.stp yes
2. 设置网桥优先级
bash
# 值越小优先级越高 (0-65535)
nmcli con mod br0 bridge.priority 16384
3. 配置 VLAN 过滤
bash
# 启用 VLAN 过滤
nmcli con mod br0 bridge.vlan-filtering yes
4. 设置网桥转发延迟
bash
# 单位秒 (默认 2 秒)
nmcli con mod br0 bridge.forward-delay 15
验证配置
1. 检查连接状态
bash
nmcli con show
2. 查看设备状态
bash
nmcli device status
3. 检查网桥详细信息
bash
bridge link show
4. 查看 STP 信息
bash
bridge stp show
完整配置示例(静态 IP)
bash
# 创建网桥
nmcli con add type bridge con-name br0 ifname br0
# 添加物理接口
nmcli con add type bridge-slave con-name br0-eth0 ifname eth0 master br0
nmcli con add type bridge-slave con-name br0-eth1 ifname eth1 master br0
# 配置静态 IP
nmcli con mod br0 \
ipv4.addresses "10.0.0.100/24" \
ipv4.gateway "10.0.0.1" \
ipv4.dns "8.8.8.8" \
ipv4.method manual
# 启用 STP
nmcli con mod br0 bridge.stp yes
# 设置优先级
nmcli con mod br0 bridge.priority 4096
# 激活所有连接
nmcli con up br0-eth0
nmcli con up br0-eth1
nmcli con up br0
常见问题解决
1. 物理接口未激活
现象 :网桥已启动但无网络连接
解决:
bash
nmcli con up br0-eth0
nmcli con up br0-eth1
2. IP 冲突
现象 :物理接口和网桥都有 IP 地址
解决:确保物理接口没有独立 IP 配置
bash
nmcli con show | grep eth0
# 如果存在 eth0 的直接连接,删除它
nmcli con delete "Wired connection 1"
3. VLAN 过滤不工作
现象 :VLAN 流量未正确隔离
解决:
-
启用 VLAN 过滤:
bashnmcli con mod br0 bridge.vlan-filtering yes
-
重启网桥:
bashnmcli con down br0 && nmcli con up br0
管理命令参考
命令 | 功能 |
---|---|
nmcli con show |
列出所有连接 |
nmcli con up <name> |
激活连接 |
nmcli con down <name> |
停用连接 |
nmcli con mod <name> <参数> |
修改连接配置 |
nmcli con del <name> |
删除连接 |
nmcli dev status |
查看设备状态 |
持久化与启动
所有配置自动保存到 /etc/NetworkManager/system-connections/
,重启后仍有效。
要确保网桥在启动时自动激活:
bash
nmcli con mod br0 connection.autoconnect yes
对于服务器环境,建议禁用 NetworkManager 的设备托管:
bash
nmcli dev set eth0 managed no
nmcli dev set eth1 managed no
最佳实践
-
命名规范 :使用有意义的名称(如
prod-bridge
) -
接口管理:确保物理接口设置为 "unmanaged" 状态
-
STP 配置 :
- 小型网络:禁用 STP (
bridge.stp no
) - 复杂拓扑:启用 STP 并调整优先级
- 小型网络:禁用 STP (
-
安全考虑 :在公共接口上禁用 MAC 学习
bashnmcli con mod br0 bridge.hello-time 2 bridge.max-age 20
-
性能优化 :禁用不需要的功能
bashnmcli con mod br0 bridge.multicast-snooping no
通过以上步骤,您可以创建高效、稳定的网桥配置,满足从简单虚拟机连接到复杂网络拓扑的各种需求。
使用 NetworkManager 的 nmcli
配置网桥 (Bridge) 详解
在 NetworkManager 中,nmcli
是配置网络的强大命令行工具。下面我将详细介绍如何使用 nmcli
创建和管理网桥,包括基本配置、高级选项和实际场景应用。
一、网桥配置核心命令
1. 创建基础网桥
bash
# 创建网桥设备
nmcli con add type bridge con-name br0 ifname br0
# 添加物理接口到网桥
nmcli con add type bridge-slave con-name br0-eth0 ifname eth0 master br0
# 配置网桥IP(静态)
nmcli con modify br0 ipv4.addresses 192.168.1.100/24
nmcli con modify br0 ipv4.gateway 192.168.1.1
nmcli con modify br0 ipv4.dns "8.8.8.8"
nmcli con modify br0 ipv4.method manual
# 或配置DHCP
nmcli con modify br0 ipv4.method auto
# 启动网桥
nmcli con up br0
2. 完整命令解析
参数 | 说明 | 示例 |
---|---|---|
type bridge |
指定创建网桥类型 | 必需 |
con-name |
连接名称(逻辑标识) | con-name server-bridge |
ifname |
网桥接口名 | ifname br0 |
type bridge-slave |
创建网桥成员 | 必需 |
master |
指定所属网桥 | master br0 |
ipv4.method |
IP获取方式 (manual/auto/disabled) | ipv4.method manual |
ipv4.addresses |
静态IP地址 (CIDR格式) | 192.168.1.100/24 |
二、高级网桥配置
1. STP (生成树协议) 配置
bash
# 启用STP并设置参数
nmcli con modify br0 \
bridge.stp yes \
bridge.priority 16384 \
bridge.hello-time 2 \
bridge.forward-delay 15 \
bridge.max-age 20
2. VLAN 过滤配置
bash
# 启用VLAN过滤
nmcli con modify br0 bridge.vlan-filtering yes
# 配置端口VLAN成员
nmcli con modify br0-eth0 bridge-port.vlans "10-20,30" # 允许VLAN 10-20和30
nmcli con modify br0-eth1 bridge-port.pvid 100 # 设置默认VLAN
3. 其他高级选项
bash
# 设置MAC地址
nmcli con modify br0 ethernet.cloned-mac-address 00:11:22:33:44:55
# 配置MTU
nmcli con modify br0 ethernet.mtu 9000
# 禁用IPv6
nmcli con modify br0 ipv6.method ignore
三、多接口网桥配置
添加多个成员接口
bash
# 添加第一个成员
nmcli con add type bridge-slave con-name br0-eth0 ifname eth0 master br0
# 添加第二个成员
nmcli con add type bridge-slave con-name br0-eth1 ifname eth1 master br0
# 添加无线接口(需要特殊配置)
nmcli con add type bridge-slave con-name br0-wlan0 ifname wlan0 master br0
四、网桥管理命令
1. 查看网桥状态
bash
# 查看所有连接
nmcli con show
# 查看网桥详情
nmcli con show br0
# 查看设备状态
nmcli device status
# 查看STP信息
bridge stp show br0
2. 修改配置
bash
# 添加额外IP
nmcli con modify br0 +ipv4.addresses 10.0.0.100/24
# 更改DNS
nmcli con modify br0 ipv4.dns "1.1.1.1 8.8.8.8"
# 禁用自动连接
nmcli con modify br0 connection.autoconnect no
3. 删除网桥
bash
# 先禁用连接
nmcli con down br0
# 删除网桥和成员
nmcli con delete br0
nmcli con delete br0-eth0
五、实际应用场景
场景1:KVM虚拟化网络
bash
# 创建专用网桥
nmcli con add type bridge con-name br-kvm ifname br-kvm
nmcli con add type bridge-slave con-name br-kvm-eth0 ifname eth0 master br-kvm
# 配置静态IP
nmcli con modify br-kvm ipv4.addresses 192.168.100.1/24
nmcli con modify br-kvm ipv4.method manual
# 在KVM中使用
virt-install --network bridge=br-kvm ...
场景2:容器网络
bash
# 创建容器网桥
nmcli con add type bridge con-name br-docker ifname br-docker
nmcli con modify br-docker ipv4.addresses 172.17.0.1/16
nmcli con modify br-docker ipv4.method manual
# Docker使用该网桥
dockerd --bridge=br-docker ...
场景3:带VLAN的网桥
bash
# 创建VLAN接口
nmcli con add type vlan con-name eth0.100 dev eth0 id 100
# 创建网桥
nmcli con add type bridge con-name br-vlan100 ifname br-vlan100
# 添加VLAN到网桥
nmcli con add type bridge-slave con-name br-vlan100-port ifname eth0.100 master br-vlan100
# 配置网桥IP
nmcli con modify br-vlan100 ipv4.addresses 10.10.10.1/24
六、故障排除
常见问题1:网桥无法启动
bash
# 查看详细错误
journalctl -u NetworkManager -f
# 检查冲突连接
nmcli con show --active
# 常见解决方案
sudo systemctl restart NetworkManager
nmcli con reload
常见问题2:成员接口不工作
bash
# 检查接口状态
ip link show eth0
# 重新连接成员
nmcli con down br0-eth0 && nmcli con up br0-eth0
# 检查物理连接
ethtool eth0
常见问题3:VLAN过滤异常
bash
# 查看VLAN配置
bridge vlan show
# 重置过滤设置
nmcli con modify br0 bridge.vlan-filtering no
nmcli con up br0
nmcli con modify br0 bridge.vlan-filtering yes
nmcli con up br0
七、持久化与备份
1. 备份配置
bash
# 备份所有连接配置
mkdir ~/nm-backup
cp /etc/NetworkManager/system-connections/*.nmconnection ~/nm-backup
2. 导出单个配置
bash
nmcli con export br0 > br0-backup.nmconnection
3. 导入配置
bash
nmcli con import type bridge file br0-backup.nmconnection
八、图形界面配置(可选)
在 GNOME 桌面环境中:
- 打开"设置" → "网络"
- 点击右下角⚙️图标 → "添加配置文件"
- 选择"网桥"
- 配置:
- 名称:输入连接名称
- 网桥接口名:如
br0
- 添加接口:点击"+"添加物理接口
- IP设置:配置IPv4/IPv6
- 点击"应用"
九、最佳实践建议
-
命名规范:
- 使用描述性名称:
br-mgmt
,br-vlan100
- 避免通用名:
br0
,bridge1
- 使用描述性名称:
-
安全配置:
bash# 禁用不需要的服务 nmcli con modify br0 ipv6.method ignore # 启用MAC过滤 nmcli con modify br0 bridge.mac-address-ageing-time 300
-
性能优化:
bash# 单接口网桥禁用STP nmcli con modify br0 bridge.stp no # 调整缓存大小 echo 16384 > /sys/class/net/br0/bridge/hash_max
-
文档记录:
bash# 添加连接描述 nmcli con modify br0 connection.id "Main Server Bridge"
通过 nmcli
配置网桥,您可以构建从简单到复杂的企业级网络架构,所有配置都能在重启后保持持久化。对于生产环境,建议将配置命令写入脚本以便自动化部署。
使用 NetworkManager 的 nmcli 配置网桥 (Bridge)
在 NetworkManager 中使用 nmcli
配置网桥是一个高效的方式,特别适合服务器环境或需要稳定网络配置的场景。以下是详细的配置指南:
基础概念
- 网桥 (Bridge):虚拟网络设备,连接多个物理/虚拟接口,形成单一逻辑网络段
- 主连接 (Bridge Master):网桥设备本身
- 从属连接 (Bridge Slave):加入网桥的物理/虚拟接口
完整配置流程
1. 创建网桥设备 (Bridge Master)
bash
# 创建名为 br0 的网桥(使用 DHCP)
nmcli con add type bridge \
con-name br0 \
ifname br0 \
ipv4.method auto
# 创建带静态 IP 的网桥
nmcli con add type bridge \
con-name br0 \
ifname br0 \
ipv4.method manual \
ipv4.addresses 192.168.1.100/24 \
ipv4.gateway 192.168.1.1 \
ipv4.dns "8.8.8.8 1.1.1.1"
2. 添加物理接口到网桥 (Bridge Slave)
bash
# 添加 eth0 到网桥
nmcli con add type bridge-slave \
con-name br0-port1 \
ifname eth0 \
master br0
# 添加 eth1 到网桥
nmcli con add type bridge-slave \
con-name br0-port2 \
ifname eth1 \
master br0
3. 激活连接
bash
# 激活从属接口
nmcli con up br0-port1
nmcli con up br0-port2
# 激活网桥
nmcli con up br0
高级配置选项
配置 STP (生成树协议)
bash
nmcli con mod br0 bridge.stp yes
nmcli con mod br0 bridge.priority 16384 # 优先级 (0-65535)
配置 VLAN 过滤
bash
nmcli con mod br0 bridge.vlan-filtering yes
设置 MAC 地址老化时间
bash
nmcli con mod br0 bridge.ageing-time 300 # 秒 (默认 300)
查看和管理配置
查看网桥状态
bash
# 查看所有连接
nmcli con show
# 查看网桥详细信息
nmcli -p con show br0
# 查看实际接口状态
bridge link show
修改现有配置
bash
# 修改 IP 地址
nmcli con mod br0 ipv4.addresses "10.0.0.100/24"
# 添加额外 DNS
nmcli con mod br0 +ipv4.dns "9.9.9.9"
# 禁用 STP
nmcli con mod br0 bridge.stp no
删除网桥配置
bash
# 先删除从属连接
nmcli con del br0-port1
nmcli con del br0-port2
# 再删除网桥
nmcli con del br0
完整配置示例(静态IP + STP)
bash
# 1. 创建网桥
nmcli con add type bridge con-name br0 ifname br0 \
ipv4.method manual \
ipv4.addresses "192.168.1.100/24" \
ipv4.gateway "192.168.1.1" \
ipv4.dns "8.8.8.8" \
bridge.stp yes \
bridge.priority 16384
# 2. 添加物理接口
nmcli con add type bridge-slave con-name br0-eth0 ifname eth0 master br0
nmcli con add type bridge-slave con-name br0-eth1 ifname eth1 master br0
# 3. 激活连接
nmcli con up br0-eth0
nmcli con up br0-eth1
nmcli con up br0
# 4. 验证配置
bridge link show
ip addr show br0
重要注意事项
-
接口占用:
- 添加物理接口到网桥时,该接口原有的网络配置会被覆盖
- 确保物理接口没有其他活跃连接
-
激活顺序:
- 先激活从属接口 (
bridge-slave
),再激活网桥 (bridge
) - 错误的顺序可能导致网络中断
- 先激活从属接口 (
-
配置文件位置:
- 所有配置存储在
/etc/NetworkManager/system-connections/
- 修改后无需重启服务,
nmcli con up
即可生效
- 所有配置存储在
-
与其他服务集成:
- 虚拟机 (KVM/QEMU):将虚拟网卡加入网桥
- 容器 (Docker/Podman):使用
--network=bridge
选项 - VLAN:可在网桥上创建 VLAN 接口
故障排查
常见问题及解决
问题 | 检查命令 | 解决方案 |
---|---|---|
网桥未激活 | nmcli con show br0 |
检查物理接口状态 nmcli con up br0-port1 |
无网络连接 | ip addr show br0 bridge link |
验证IP配置 检查物理接口是否加入网桥 |
STP 阻塞端口 | bridge link show |
检查物理链路状态 调整STP优先级 |
VLAN 不工作 | nmcli -p con show br0 |
启用 bridge.vlan-filtering=yes |
日志查看
bash
journalctl -u NetworkManager -f
通过 nmcli
配置网桥提供了一种高效、可脚本化的网络管理方式,特别适合自动化部署和服务器环境。配置完成后,您的物理接口将作为网桥端口工作,所有网络流量将通过网桥接口进行交换。
使用 NetworkManager 的 nmcli
配置网桥 (Bridge) 详解
NetworkManager 的 nmcli
命令提供了强大而灵活的方式来配置网桥。以下是完整的配置指南,涵盖基础配置、高级参数及管理技巧。
bridge-slave IP配置 物理网卡 网桥接口 网络访问
一、基础网桥配置步骤
1. 创建网桥接口
bash
sudo nmcli con add type bridge con-name br0 ifname br0
2. 添加物理接口到网桥
bash
sudo nmcli con add type bridge-slave con-name br0-slave ifname enp1s0 master br0
3. 配置网桥 IP
-
DHCP 方式 :
bashsudo nmcli con modify br0 ipv4.method auto
-
静态 IP 方式 :
bashsudo nmcli con modify br0 \ ipv4.addresses 192.168.1.100/24 \ ipv4.gateway 192.168.1.1 \ ipv4.dns "8.8.8.8" \ ipv4.method manual
4. 激活配置
bash
sudo nmcli con up br0
二、高级网桥参数配置
1. 网桥性能优化
bash
sudo nmcli con modify br0 \
bridge.stp no \ # 禁用STP(小型网络)
bridge.forward-delay 0 \ # 无转发延迟
bridge.ageing-time 300 # MAC地址老化时间
2. 多接口网桥
bash
# 添加第二个物理接口
sudo nmcli con add type bridge-slave con-name br0-slave2 ifname enp2s0 master br0
3. VLAN 感知网桥
bash
# 在网桥上创建VLAN接口
sudo nmcli con add type vlan con-name br0-vlan10 ifname vlan10 dev br0 id 10
4. 安全设置
bash
sudo nmcli con modify br0 \
ipv6.accept-ra no \ # 禁用IPv6路由器通告
connection.permissions "user:admin" # 限制管理用户
三、完整配置示例
企业级网桥配置
bash
# 创建网桥
sudo nmcli con add type bridge con-name br-corp ifname br-corp \
bridge.stp yes \ # 启用STP(大型网络)
bridge.priority 16384 \ # 设置网桥优先级
bridge.hello-time 2 # STP Hello包间隔
# 添加物理接口
sudo nmcli con add type bridge-slave con-name br-corp-slave1 ifname enp3s0 master br-corp
sudo nmcli con add type bridge-slave con-name br-corp-slave2 ifname enp4s0 master br-corp
# 配置静态IP
sudo nmcli con modify br-corp \
ipv4.addresses "10.10.0.1/24" \
ipv4.gateway "10.10.0.254" \
ipv4.dns "10.10.0.53" \
ipv4.method manual
# 添加管理VLAN
sudo nmcli con add type vlan con-name br-corp-mgmt ifname vlan100 dev br-corp id 100
sudo nmcli con modify br-corp-mgmt ipv4.addresses "192.168.100.2/24" ipv4.method manual
# 激活配置
sudo nmcli con up br-corp
四、网桥管理命令
1. 查看网桥状态
bash
# 查看所有连接
nmcli con show
# 查看网桥详细信息
nmcli -p con show br-corp
# 检查物理连接状态
bridge link
2. 修改配置
bash
# 添加新接口
sudo nmcli con add type bridge-slave ifname enp5s0 master br-corp
# 修改IP地址
sudo nmcli con mod br-corp ipv4.addresses "10.10.0.2/24"
# 禁用STP
sudo nmcli con mod br-corp bridge.stp no
3. 删除网桥
bash
# 删除网桥连接
sudo nmcli con delete br-corp
# 自动删除所有从属连接
五、故障排除技巧
常见问题及解决
问题现象 | 可能原因 | 解决方案 |
---|---|---|
网桥未激活 | 物理接口未释放IP | 检查物理接口是否设置为自动连接 |
网络不通 | STP阻塞端口 | 临时禁用STP:sudo nmcli con mod br0 bridge.stp no |
IP地址冲突 | DHCP分配冲突 | 设置静态MAC地址:sudo nmcli con mod br0 ethernet.cloned-mac-address 52:54:00:12:34:56 |
性能低下 | 转发延迟过高 | 设置bridge.forward-delay=0 |
诊断命令
bash
# 查看详细日志
journalctl -u NetworkManager -f
# 检查网桥状态
bridge fdb show br0
# 测试连通性
ping -c 4 8.8.8.8 -I br0
六、最佳实践指南
1. 命名规范
bash
# 网桥:br-<用途> (br-corp, br-dmz)
# 从属接口:<网桥名>-slave<序号> (br-corp-slave1)
2. 配置备份与恢复
bash
# 导出所有配置
nmcli con export > nm_backup.nmconnection
# 恢复配置
nmcli con import < nm_backup.nmconnection
3. 安全增强
bash
# 禁用IPv6
sudo nmcli con mod br0 ipv6.method ignore
# 启用防火墙
sudo nmcli con mod br0 connection.zone trusted
4. 性能优化
bash
# 调整网桥参数
sudo nmcli con mod br0 \
bridge.multicast-snooping 0 \ # 禁用多播探测
bridge.vlan-filtering yes # 启用VLAN过滤
七、不同场景配置示例
1. KVM 虚拟化网桥
bash
# 创建隔离网桥
sudo nmcli con add type bridge con-name br-vm ifname br-vm
sudo nmcli con add type bridge-slave ifname enp5s0 master br-vm
# 禁用IP配置
sudo nmcli con mod br-vm ipv4.method disabled ipv6.method ignore
2. Docker 容器网络
bash
# 创建专用网桥
sudo nmcli con add type bridge con-name br-docker ifname br-docker
sudo nmcli con modify br-docker ipv4.address 172.17.0.1/16
# 启动Docker使用该网桥
echo '{"bridge":"br-docker"}' > /etc/docker/daemon.json
systemctl restart docker
3. 高可用双网桥
bash
# 主网桥
sudo nmcli con add type bridge con-name br-primary ifname br-primary
# 备用网桥
sudo nmcli con add type bridge con-name br-backup ifname br-backup
# 配置故障切换
sudo nmcli con add type bond con-name bond0 ifname bond0 bond.options "mode=active-backup"
sudo nmcli con add type bridge-slave con-name br-primary-slave ifname bond0 master br-primary
八、与传统配置对比
特性 | nmcli | 传统文件配置 |
---|---|---|
配置速度 | ⚡ 实时生效 | 需重启服务 |
复杂度 | 单命令完成 | 多文件编辑 |
持久性 | 自动保存 | 需手动保存 |
灵活性 | 动态修改 | 静态配置 |
适用场景 | 桌面/服务器 | 无GUI服务器 |
通过掌握这些 nmcli
配置技巧,您可以高效地创建和管理网桥,满足从简单家庭网络到复杂企业环境的各种需求。
使用 NetworkManager 的 nmcli
配置网桥(Bridge)是一种高效的方式,特别适合桌面和服务器环境。以下是完整的配置指南:
📌 1. 创建网桥设备
bash
# 创建名为 br0 的网桥设备
sudo nmcli con add type bridge ifname br0 con-name br0
关键参数说明:
type bridge
:指定连接类型为网桥ifname br0
:设置设备名称为 br0con-name br0
:设置连接名称为 br0(可自定义)
🌉 2. 添加物理接口到网桥
bash
# 将物理接口 enp1s0 添加为网桥的从属接口
sudo nmcli con add type bridge-slave ifname enp1s0 master br0
关键参数说明:
type bridge-slave
:指定为网桥从属接口ifname enp1s0
:要绑定的物理接口master br0
:指定所属的主网桥
注意:重复此命令可添加多个接口到网桥
⚙️ 3. 配置网桥参数
基本配置:
bash
# 设置网桥为手动配置模式(静态IP)
sudo nmcli con modify br0 ipv4.method manual
# 设置静态IP和网关
sudo nmcli con modify br0 ipv4.addresses 192.168.1.100/24
sudo nmcli con modify br0 ipv4.gateway 192.168.1.1
sudo nmcli con modify br0 ipv4.dns "8.8.8.8,8.8.4.4"
# 启用连接自启动
sudo nmcli con modify br0 connection.autoconnect yes
DHCP 配置:
bash
sudo nmcli con modify br0 ipv4.method auto
高级参数(可选):
bash
# 禁用 STP(生成树协议)
sudo nmcli con modify br0 bridge.stp no
# 设置转发延迟(单位秒)
sudo nmcli con modify br0 bridge.forward-delay 0
🚀 4. 激活配置
bash
# 先停用物理接口
sudo nmcli con down "Wired connection 1" # 使用实际连接名
# 激活网桥
sudo nmcli con up br0
# 检查状态
nmcli con show --active
🔍 5. 验证网桥配置
bash
# 查看网桥详细信息
nmcli con show br0
# 检查网桥状态
bridge link show
预期输出:
plaintext
3: enp1s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 master br0 state forwarding
🧩 6. 完整配置示例(单命令版)
bash
# 一步创建带从属接口的网桥
sudo nmcli con add type bridge ifname br0 con-name br0 \
ipv4.method manual \
ipv4.addresses 192.168.1.100/24 \
ipv4.gateway 192.168.1.1 \
ipv4.dns "8.8.8.8" \
bridge.stp no \
&& \
sudo nmcli con add type bridge-slave ifname enp1s0 master br0 \
&& \
sudo nmcli con up br0
⚠️ 7. 故障排除
问题1:物理接口无法加入网桥
bash
# 检查接口是否被其他连接占用
nmcli device status
# 删除旧连接
sudo nmcli con delete "Wired connection 1"
问题2:网桥无IP地址
bash
# 检查DHCP服务
sudo nmcli con modify br0 ipv4.method auto
sudo nmcli con down br0 && sudo nmcli con up br0
# 查看日志
journalctl -u NetworkManager -f
问题3:虚拟机无法通过网桥联网
bash
# 允许网桥流量通过防火墙
sudo firewall-cmd --permanent --zone=trusted --add-interface=br0
sudo firewall-cmd --reload
🔄 8. 删除网桥配置
bash
# 删除网桥连接
sudo nmcli con delete br0
# 删除从属接口连接(自动生成名称为 bridge-slave-enp1s0)
sudo nmcli con delete bridge-slave-enp1s0
# 恢复物理接口
sudo nmcli con add type ethernet ifname enp1s0 con-name enp1s0
sudo nmcli con up enp1s0
📊 nmcli 网桥管理常用命令速查
命令 | 功能 |
---|---|
nmcli con show |
查看所有连接配置 |
nmcli con show br0 |
查看网桥详细配置 |
nmcli con up br0 |
激活网桥 |
nmcli con mod br0 bridge.stp yes |
启用STP协议 |
nmcli con mod br0 +ipv4.addresses "10.0.0.1/24" |
添加额外IP地址 |
nmcli dev set br0 managed yes |
确保设备被管理 |
通过 nmcli
配置网桥,您可以获得:
- 持久化配置 - 重启后自动生效
- 图形界面支持 - 在GNOME/KDE等桌面环境中可见
- 动态管理 - 无需重启网络服务即可修改配置
对于虚拟机网络(KVM/QEMU),在virt-manager中选择网桥时指定 br0
接口即可让虚拟机直接接入物理网络。
要在 NetworkManager 中使用 nmcli
配置网桥(bridge),请按以下步骤操作:
1. 创建网桥接口
bash
nmcli connection add type bridge con-name br0 ifname br0
con-name br0
:连接名称(可自定义)ifname br0
:网桥接口名称(可自定义)
2. 添加物理接口到网桥
将物理网卡(如 eth0
)作为从属接口加入网桥:
bash
nmcli connection add type bridge-slave con-name br0-slave-eth0 ifname eth0 master br0
ifname eth0
:物理网卡名称(根据实际情况修改)master br0
:指定主网桥连接名称
3. 配置网桥的 IP 地址
静态 IP 配置:
bash
nmcli connection modify br0 \
ipv4.addresses 192.168.1.100/24 \
ipv4.gateway 192.168.1.1 \
ipv4.dns "8.8.8.8" \
ipv4.method manual
DHCP 配置:
bash
nmcli connection modify br0 ipv4.method auto
4. 激活连接
bash
nmcli connection up br0 # 启用网桥
nmcli connection up br0-slave-eth0 # 启用从属接口
5. 验证配置
bash
nmcli connection show br0 # 查看网桥配置
ip addr show br0 # 检查网桥 IP
bridge link show # 查看网桥下属接口
完整示例(静态 IP)
bash
# 创建网桥
nmcli con add type bridge con-name br0 ifname br0
# 添加物理接口 eth0 到网桥
nmcli con add type bridge-slave con-name br0-port1 ifname eth0 master br0
# 配置静态 IP
nmcli con mod br0 ipv4.addresses '192.168.1.100/24'
nmcli con mod br0 ipv4.gateway '192.168.1.1'
nmcli con mod br0 ipv4.dns '8.8.8.8'
nmcli con mod br0 ipv4.method manual
# 启用连接
nmcli con up br0
nmcli con up br0-port1
关键说明
- 物理网卡要求 :
添加到网桥的物理接口(如eth0
)不能有自己的 IP 地址,它仅作为网桥的数据通道。 - 连接名称 :
con-name
是 NetworkManager 中连接的标识符,可自定义(如my-bridge
)。 - 网桥接口名 :
ifname
是实际生成的网络接口名(如br0
)。 - 服务重启 :
配置会持久化,无需重启 NetworkManager。
删除网桥
bash
nmcli connection delete br0 # 删除网桥
nmcli connection delete br0-port1 # 删除从属接口
通过以上步骤,您已成功使用 nmcli
配置了一个网桥。
要使用 nmcli
配置网桥(bridge),请按以下步骤操作:
1. 创建网桥接口
bash
# 创建名为 br0 的网桥(自动生成配置文件)
sudo nmcli connection add type bridge con-name br0 ifname br0
2. 配置网桥的 IP 地址
静态 IP 配置
bash
sudo nmcli connection modify br0 \
ipv4.addresses 192.168.1.10/24 \
ipv4.gateway 192.168.1.1 \
ipv4.dns "8.8.8.8" \
ipv4.method manual
DHCP 配置
bash
sudo nmcli connection modify br0 ipv4.method auto
3. 添加物理接口到网桥
将物理接口(如 eth0
)绑定为网桥的从属:
bash
# 为 eth0 创建从属连接(绑定到 br0)
sudo nmcli connection add type ethernet \
con-name bridge-slave-eth0 \
ifname eth0 \
master br0
注意 :重复此步骤可添加更多接口(如
eth1
)。
4. 激活连接
bash
# 激活网桥和从属接口
sudo nmcli connection up br0
sudo nmcli connection up bridge-slave-eth0
5. 验证配置
bash
# 检查网桥状态
nmcli connection show br0
nmcli device status
# 查看网桥详情
bridge link
ip addr show br0
关键命令说明
命令 | 作用 |
---|---|
nmcli connection add type bridge ... |
创建网桥 |
nmcli connection modify |
修改连接参数(IP/DNS等) |
nmcli connection add type ethernet master br0 |
将物理接口绑定到网桥 |
nmcli connection up <name> |
激活连接 |
注意事项
-
接口占用 :
添加为从属的物理接口(如
eth0
)不再需要独立 IP,其原有连接需停用或删除:bashnmcli connection down "原有连接名" # 停用 nmcli connection delete "原有连接名" # 删除
-
服务重启 :
配置永久有效,无需额外保存。
-
故障排查:
- 检查 NetworkManager 状态:
systemctl status NetworkManager
- 日志查看:
journalctl -u NetworkManager
- 检查 NetworkManager 状态:
完整示例(静态 IP 网桥)
bash
# 创建网桥
sudo nmcli con add type bridge con-name br0 ifname br0
# 配置静态 IP
sudo nmcli con mod br0 ipv4.addresses 10.0.0.100/24
sudo nmcli con mod br0 ipv4.gateway 10.0.0.1
sudo nmcli con mod br0 ipv4.dns "10.0.0.53"
sudo nmcli con mod br0 ipv4.method manual
# 绑定 eth0 到网桥
sudo nmcli con add type ethernet con-name bridge-slave-eth0 ifname eth0 master br0
# 激活
sudo nmcli con up br0
sudo nmcli con up bridge-slave-eth0
通过以上步骤,您已成功创建并激活了一个网桥接口。
在Linux中使用NetworkManager的nmcli
工具配置网桥(bridge)的步骤如下:
1. 创建网桥设备
bash
sudo nmcli connection add type bridge ifname br0 con-name br0
type bridge
: 指定连接类型为网桥ifname br0
: 网桥接口名称con-name br0
: 连接配置名称
2. 配置网桥参数(可选)
bash
sudo nmcli connection modify br0 bridge.stp no # 禁用生成树协议(可选)
sudo nmcli connection modify br0 ipv4.method auto # 通过DHCP获取IP(或手动配置)
3. 将物理接口加入网桥
假设要将物理接口 eth0
加入网桥:
bash
sudo nmcli connection add type bridge-slave ifname eth0 master br0 con-name br0-eth0
type bridge-slave
: 指定为网桥从属接口master br0
: 指定所属的网桥
4. 禁用物理接口的独立配置
bash
sudo nmcli connection down "Wired connection 1" # 停用原eth0的独立连接
(名称需替换为实际连接名,通过 nmcli connection show
查看)
5. 启动网桥
bash
sudo nmcli connection up br0
6. 验证配置
bash
nmcli connection show # 查看连接状态
ip addr show br0 # 检查网桥IP
bridge link show # 查看网桥成员接口
完整示例(静态IP配置)
bash
# 创建网桥并配置静态IP
sudo nmcli connection add type bridge ifname br0 con-name br0 \
ipv4.method manual ipv4.addresses 192.168.1.100/24 \
ipv4.gateway 192.168.1.1 ipv4.dns "8.8.8.8,8.8.4.4"
# 添加物理接口
sudo nmcli connection add type bridge-slave ifname eth0 master br0
# 启用网桥
sudo nmcli connection up br0
注意事项
-
物理接口要求 :加入网桥的接口(如
eth0
)不应配置独立IP。 -
虚拟化场景 :网桥常用于连接虚拟机(如KVM/QEMU),需在虚拟机配置中指定
br0
。 -
防火墙规则 :若启用防火墙(如
firewalld
),需允许网桥流量:bashsudo firewall-cmd --permanent --zone=trusted --add-interface=br0 sudo firewall-cmd --reload
通过以上步骤,您可以使用 nmcli
快速配置网桥并管理网络连接。
在Linux中使用nmcli
(NetworkManager的命令行工具)配置网桥(bridge)的步骤如下:
1. 创建网桥接口
bash
sudo nmcli connection add type bridge ifname br0 con-name br0
br0
:网桥接口名称(可自定义)。- 此命令会创建一个名为
br0
的网桥,但尚未启用。
2. (可选)配置网桥的IP地址
静态IP
bash
sudo nmcli connection modify br0 ipv4.addresses 192.168.1.100/24 ipv4.gateway 192.168.1.1 ipv4.dns 8.8.8.8 ipv4.method manual
DHCP
bash
sudo nmcli connection modify br0 ipv4.method auto
3. 将物理网卡加入网桥
假设物理网卡为eth0
:
bash
sudo nmcli connection add type bridge-slave ifname eth0 master br0 con-name eth0-bridge
eth0
:要加入网桥的物理网卡名称。- 此命令会禁用
eth0
的独立配置,将其作为网桥的从属接口。
4. 禁用原物理网卡的独立配置
如果物理网卡之前有独立连接配置,需禁用:
bash
sudo nmcli connection down "Wired Connection 1" # 替换为实际的连接名称
5. 启用网桥
bash
sudo nmcli connection up br0
6. 验证网桥状态
bash
nmcli connection show # 查看连接列表
ip addr show br0 # 检查网桥IP
bridge link show # 查看网桥成员接口
7. 其他常用操作
删除网桥
bash
sudo nmcli connection down br0
sudo nmcli connection delete br0 eth0-bridge
修改网桥配置(如STP)
bash
sudo nmcli connection modify br0 bridge.stp no # 禁用STP(根据需求)
添加多个从属接口
bash
sudo nmcli connection add type bridge-slave ifname eth1 master br0 con-name eth1-bridge
注意事项
- NetworkManager版本:确保版本支持网桥(较新版本均支持)。
- 防火墙/路由 :若网桥用于虚拟机或容器,需调整防火墙规则(如
firewalld
或iptables
)。 - 持久化 :
nmcli
的配置默认持久化,重启后仍有效。 - 冲突避免 :确保物理网卡未被其他工具(如
systemd-networkd
)管理。
完整示例(静态IP网桥)
bash
# 创建网桥
sudo nmcli con add type bridge ifname br0 con-name br0
# 配置静态IP
sudo nmcli con modify br0 ipv4.addresses 192.168.1.100/24 ipv4.gateway 192.168.1.1 ipv4.dns 8.8.8.8 ipv4.method manual
# 添加物理网卡到网桥
sudo nmcli con add type bridge-slave ifname eth0 master br0 con-name eth0-bridge
# 启用网桥
sudo nmcli con up br0
通过以上步骤,您可以使用nmcli
高效管理Linux网桥。
在 Linux 系统中,使用 NetworkManager 的 nmcli
命令可以非常方便地配置和管理网络桥接(Bridge)。网桥(bridge)是一种将多个网络接口连接到同一个逻辑二层网络的虚拟设备,常用于虚拟化场景(如 KVM/QEMU)、容器网络或简化物理网络拓扑。
🧱 一、基本概念
名称 | 说明 |
---|---|
bridge |
网桥主设备,是一个虚拟接口,用来连接其他从属接口(如 eth0 或 VLAN 接口) |
bridge-slave |
桥接的从属接口,通常是物理网卡或 VLAN 接口 |
✅ 二、创建网桥的基本步骤
1. 创建一个网桥主设备(bridge)
bash
nmcli con add type bridge con-name br0 ifname br0
con-name br0
:设置连接名称为br0
ifname br0
:设置网桥接口名称为br0
2. 给网桥分配 IP 地址(可选)
你可以根据需要设置静态 IP 或 DHCP:
静态 IP 示例:
bash
nmcli con modify br0 ipv4.addresses 192.168.1.100/24 \
ipv4.gateway 192.168.1.1 \
ipv4.dns 8.8.8.8 \
ipv4.method manual
DHCP 示例:
bash
nmcli con modify br0 ipv4.method auto
3. 将物理网卡加入网桥(作为从属接口)
假设你的物理网卡是 enp1s0
:
bash
nmcli con add type bridge-slave con-name enp1s0-master ifname enp1s0 master br0
type bridge-slave
:表示这是桥接从属设备master br0
:指定该接口属于哪个网桥
4. 启用所有相关连接
bash
nmcli con up br0
nmcli con up enp1s0-master
⚠️ 注意:执行后原来的
enp1s0
连接会被禁用,IP 地址会转移到br0
上。
🔁 三、完整示例(带静态 IP)
bash
# 创建网桥
nmcli con add type bridge con-name br0 ifname br0
# 设置网桥静态 IP
nmcli con modify br0 ipv4.addresses 192.168.1.100/24 \
ipv4.gateway 192.168.1.1 \
ipv4.dns 8.8.8.8 \
ipv4.method manual
# 添加物理网卡到网桥
nmcli con add type bridge-slave con-name enp1s0-master ifname enp1s0 master br0
# 启动连接
nmcli con up br0
nmcli con up enp1s0-master
📋 四、常用命令汇总
功能 | 命令 |
---|---|
查看所有连接 | nmcli con show |
查看当前活动连接 | nmcli con show --active |
查看网桥状态 | nmcli device show br0 |
删除网桥 | nmcli con delete br0 |
删除从属接口 | nmcli con delete enp1s0-master |
重启网桥连接 | nmcli con down br0 && nmcli con up br0 |
💡 五、高级配置(可选)
1. 添加多个从属接口
bash
nmcli con add type bridge-slave con-name enp2s0-master ifname enp2s0 master br0
nmcli con up enp2s0-master
2. 添加 VLAN 到网桥
先创建 VLAN 接口并加入网桥:
bash
nmcli con add type vlan con-name vlan10 dev enp1s0 id 10
nmcli con add type bridge-slave con-name vlan10-master ifname vlan10 master br0
nmcli con up vlan10
nmcli con up vlan10-master
❌ 六、常见问题及解决方法
Q: 创建网桥失败,提示 device is already enslaved
A: 表示该设备已经被加入某个网桥或 bond。你需要先删除旧的连接:
bash
nmcli con delete <旧连接名>
Q: 网桥无法获取 IP?
A: 检查是否设置了正确的 ipv4.method
,比如:
bash
nmcli con modify br0 ipv4.method auto # 使用 DHCP
或者检查静态地址是否正确:
bash
nmcli con modify br0 ipv4.addresses 192.168.1.100/24
📖 七、总结
步骤 | 命令 |
---|---|
创建网桥 | nmcli con add type bridge con-name br0 ifname br0 |
设置 IP | nmcli con modify br0 ipv4.method manual/auto ... |
添加从属接口 | nmcli con add type bridge-slave master br0 ... |
启用连接 | nmcli con up br0 和 nmcli con up <slave> |
如果你有更具体的场景(如配合 KVM、Docker、VLAN、bonding 等),也可以告诉我,我可以提供对应的配置示例。
在 Linux 中使用 NetworkManager 配置网桥(bridge
)时,可以通过 nmcli
命令行工具完成。网桥常用于虚拟化场景(如 KVM/QEMU),将虚拟机连接到物理网络。
🧱 一、基本概念
- Bridge(网桥):一种软件交换机,让多个网络接口(包括物理接口和虚拟接口)共享同一个二层网络。
- Bridge Slave(网桥从属接口):加入网桥的接口,例如一个物理网卡或 VLAN 接口。
- Bridge Master(网桥主接口) :即网桥本身(如
br0
),它负责管理所有从属接口。
🛠️ 二、配置网桥的步骤(以 eth0
为例)
✅ 场景说明:
我们希望创建一个名为 br0
的网桥,并把物理接口 eth0
加入其中,然后为网桥分配 IP 地址。
🔧 步骤 1:删除原有连接(如有)
bash
nmcli con delete eth0
🔧 步骤 2:创建网桥主接口 br0
bash
nmcli con add type bridge ifname br0 con-name br0
🔧 步骤 3:添加物理接口 eth0
作为网桥从属接口
bash
nmcli con add type bridge-slave ifname eth0 master br0
⚠️ 注意:此时
eth0
不应有 IP 地址,因为它的流量会通过网桥br0
处理。
🔧 步骤 4:为网桥设置 IP 地址(例如静态 IP)
bash
nmcli con modify br0 ipv4.addresses 192.168.1.100/24 \
ipv4.gateway 192.168.1.1 \
ipv4.dns 8.8.8.8 \
ipv4.method manual
或者使用 DHCP:
bash
nmcli con modify br0 ipv4.method auto
🔧 步骤 5:启用网桥连接
bash
nmcli con up br0
这会自动激活网桥及其从属接口
eth0
。
✅ 检查状态
bash
nmcli con show
ip addr show br0
📌 三、常见参数说明(nmcli
网桥相关)
参数名 | 含义 |
---|---|
type bridge |
创建网桥主接口 |
type bridge-slave |
创建网桥从属接口 |
ifname |
接口名称(如 br0 , eth0 ) |
master |
指定从属接口所属的网桥 |
ipv4.method |
IPv4 分配方式(manual / auto / disabled) |
ipv4.addresses |
设置静态 IP 地址和子网掩码 |
ipv4.gateway |
设置默认网关 |
ipv4.dns |
设置 DNS 服务器 |
💡 四、其他用法示例
示例 1:带 VLAN 的网桥结构
bash
# 创建 VLAN 接口 vlan10(基于 eth0,VLAN ID 10)
nmcli con add type vlan con-name vlan10 ifname eth0.10 dev eth0 id 10
# 创建网桥 br0
nmcli con add type bridge ifname br0 con-name br0
# 将 VLAN 接口加入网桥
nmcli con add type bridge-slave ifname eth0.10 master br0
# 设置网桥 IP
nmcli con modify br0 ipv4.addresses 192.168.10.100/24 ipv4.method manual
# 启动网桥
nmcli con up br0
示例 2:桥接 + 虚拟机使用
在 KVM 虚拟化中,通常这样配置:
bash
# 创建 br0 网桥并加入 eth0
nmcli con add type bridge ifname br0 con-name br0
nmcli con add type bridge-slave ifname eth0 master br0
nmcli con modify br0 ipv4.method auto
nmcli con up br0
然后在虚拟机配置中指定 br0
作为虚拟 NIC 的桥接设备即可。
🧪 五、查看当前网桥信息
bash
nmcli con show
nmcli device show
bridge link
📝 六、注意事项
- 网桥的 IP 地址应该设置在
bridge
接口上,而不是物理接口。 - 物理接口不能有自己的 IP 地址(除非你明确知道要做什么)。
- 如果你在远程服务器操作,请确保不会断网(建议测试前保留原始连接或使用临时连接)。
- 使用
nmcli con reload
可重新加载配置文件。 - 删除网桥前请先删除其从属接口。
✅ 总结
操作 | 命令示例 |
---|---|
创建网桥 | nmcli con add type bridge ifname br0 |
添加从属接口 | nmcli con add type bridge-slave master br0 ifname eth0 |
设置 IP | nmcli con modify br0 ipv4.addresses x.x.x.x/xx ... |
启用网桥 | nmcli con up br0 |
查看网桥状态 | bridge link 或 ip link |
如需进一步配置 STP(生成树协议)、设置混杂模式等高级功能,可以使用 nmcli
的更多选项或编辑 /etc/NetworkManager/system-connections/
下的 .nmconnection
文件。
如果你需要我帮你写一个完整的配置脚本或排查问题,请告诉我你的实际环境!
NetworkManager 的 nmcli
配置网桥详解
网桥(Bridge)是一种将多个网络接口连接为单个逻辑网络的设备。在 Linux 中,使用 NetworkManager 的 nmcli
工具可以方便地配置网桥。
一、基本网桥配置
1. 创建网桥接口
bash
# 创建名为 br0 的网桥,禁用 STP(生成树协议)
nmcli connection add type bridge con-name br0 ifname br0 \
bridge.stp no \
ipv4.addresses 192.168.1.10/24 \
ipv4.gateway 192.168.1.1 \
ipv4.dns "8.8.8.8 1.1.1.1" \
ipv4.method manual
2. 添加物理网卡到网桥
bash
# 将 eth0 添加到网桥 br0
nmcli connection add type ethernet con-name br0-port1 ifname eth0 \
master br0 slave-type bridge
3. 激活配置
bash
# 启动网桥和端口连接
nmcli connection up br0
nmcli connection up br0-port1
二、高级配置选项
1. 配置网桥参数
bash
# 设置 STP(生成树协议)和转发延迟
nmcli connection modify br0 \
bridge.stp yes \
bridge.forward-delay 15 \
bridge.hello-time 2 \
bridge.max-age 20
2. 添加多个端口
bash
# 添加 eth1 作为网桥端口
nmcli connection add type ethernet con-name br0-port2 ifname eth1 \
master br0 slave-type bridge
3. 配置 VLAN 过滤
bash
# 允许 br0 处理 VLAN 100 和 200
nmcli connection modify br0 \
bridge.vlan-filtering yes \
bridge.vlans "100 eth0:100 200 eth1:200"
三、验证网桥配置
1. 查看网桥状态
bash
# 显示网桥信息
bridge link show
# 查看网桥端口
bridge port show br0
# 检查网络连接
nmcli connection show
2. 验证 IP 配置
bash
ip addr show br0
ping 192.168.1.1 # 测试网关连通性
四、删除网桥配置
bash
# 停用并删除网桥连接
nmcli connection down br0
nmcli connection delete br0
# 删除所有网桥端口连接
nmcli connection delete br0-port1
nmcli connection delete br0-port2
五、网桥与 VLAN 结合配置
1. 创建带 VLAN 子接口的网桥
bash
# 创建基于 eth0 的 VLAN 100 子接口
nmcli connection add type vlan con-name eth0.100 ifname eth0.100 \
dev eth0 id 100
# 将 VLAN 子接口添加到网桥
nmcli connection add type ethernet con-name br0-vlan100 ifname eth0.100 \
master br0 slave-type bridge
2. 配置跨网段网桥
bash
# 创建网桥 br1 用于 VLAN 200
nmcli connection add type bridge con-name br1 ifname br1 \
ipv4.addresses 192.168.2.1/24 \
ipv4.method manual
# 添加 VLAN 200 子接口到 br1
nmcli connection add type vlan con-name eth0.200 ifname eth0.200 \
dev eth0 id 200 master br1 slave-type bridge
六、常见问题排查
1. 网桥不转发流量
- 检查物理网卡是否正常工作:
ip link show eth0
- 确认 STP 是否阻塞了端口:
bridge link show
- 检查防火墙规则是否阻止流量:
iptables -L
或firewall-cmd --list-all
2. VLAN 配置不生效
- 确认交换机端口已正确配置为 Trunk 模式
- 使用
bridge vlan show
检查 VLAN 过滤配置 - 重启 NetworkManager 服务:
systemctl restart NetworkManager
七、网桥参数说明
参数 | 作用 | 示例值 |
---|---|---|
bridge.stp |
启用/禁用生成树协议 | yes /no |
bridge.priority |
网桥优先级(影响根桥选举) | 0-65535 |
bridge.forward-delay |
转发延迟时间(秒) | 15 |
bridge.hello-time |
HELLO 消息发送间隔(秒) | 2 |
bridge.max-age |
BPDU 消息最大存活时间(秒) | 20 |
bridge.vlan-filtering |
启用 VLAN 过滤功能 | yes /no |
bridge.vlans |
VLAN 过滤规则 | 100-200 eth0:100 |
通过上述命令,你可以灵活配置 Linux 网桥,满足不同的网络需求。
NetworkManager的nmcli
配置网桥(bridge)详解
网桥(bridge)是一种将多个网络接口连接为一个逻辑网络的设备,常用于虚拟化环境或多网卡聚合场景。以下是使用nmcli
配置网桥的完整指南:
一、基本网桥配置
1. 创建网桥接口
bash
# 创建名为br0的网桥连接
nmcli connection add type bridge con-name br0 ifname br0 \
bridge.stp no \ # 禁用生成树协议(STP)
bridge.forward-delay 0 \ # 转发延迟为0ms
ipv4.addresses 192.168.1.10/24 \
ipv4.gateway 192.168.1.1 \
ipv4.dns 8.8.8.8 \
ipv4.method manual
2. 添加物理网卡到网桥
bash
# 将eth0添加为br0的端口
nmcli connection add type bridge-slave con-name br0-port1 ifname eth0 master br0
3. 激活网桥和端口
bash
nmcli connection up br0
nmcli connection up br0-port1
二、高级网桥配置选项
1. 启用生成树协议(STP)
bash
nmcli connection modify br0 bridge.stp yes
nmcli connection modify br0 bridge.priority 32768 # 设置网桥优先级
2. 配置端口参数
bash
# 设置eth0端口为混杂模式
nmcli connection modify br0-port1 802-3-ethernet.flags 4 # 4表示混杂模式
# 设置端口路径开销(仅STP启用时有效)
nmcli connection modify br0-port1 bridge.path-cost 100
3. 多网卡绑定到网桥
bash
# 创建bond0接口(模式4=802.3ad链路聚合)
nmcli connection add type bond con-name bond0 ifname bond0 mode 802.3ad \
bond.options "miimon=100 lacp_rate=fast"
# 将eth0和eth1添加到bond0
nmcli connection add type bond-slave con-name bond0-port1 ifname eth0 master bond0
nmcli connection add type bond-slave con-name bond0-port2 ifname eth1 master bond0
# 将bond0添加到网桥
nmcli connection add type bridge-slave con-name br0-bond0 ifname bond0 master br0
三、验证网桥配置
1. 查看网桥状态
bash
# 显示网桥信息
bridge link show
# 输出示例:
4: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 master br0 state forwarding ...
2. 检查IP配置
bash
ip addr show br0
# 输出示例:
3: br0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
inet 192.168.1.10/24 brd 192.168.1.255 scope global br0
valid_lft forever preferred_lft forever
3. 测试网络连通性
bash
ping 192.168.1.1 # 测试网关连通性
ping 8.8.8.8 # 测试外网连通性
四、VLAN-aware网桥配置
1. 创建VLAN-aware网桥
bash
nmcli connection add type bridge con-name br0 ifname br0 \
bridge.vlan-filtering yes \ # 启用VLAN过滤
bridge.vlan-default-pvid 1 \ # 默认PVID为1
ipv4.method manual
2. 配置端口VLAN
bash
# 配置eth0端口允许VLAN 10和20通过
nmcli connection modify br0-port1 bridge.vlans "10 untagged, 20 tagged"
# 配置eth1为trunk端口
nmcli connection modify br0-port2 bridge.vlans "1-4094 tagged"
五、常见问题与解决方案
1. 网桥无法激活
bash
# 检查日志
journalctl -u NetworkManager -f
# 可能原因:
# 1. 物理网卡被其他连接占用
# 2. STP收敛时间过长(尝试禁用STP)
2. VLAN通信异常
bash
# 检查VLAN配置
bridge vlan show
# 确保交换机端口配置与网桥一致
# 例如: 接入端口(PVID)与native VLAN匹配
3. 删除网桥连接
bash
nmcli connection delete br0
nmcli connection delete br0-port1 # 删除所有端口连接
六、性能优化建议
-
禁用不必要的服务:
bashnmcli connection modify br0 802-1q-in-802-1q no # 禁用QinQ封装
-
调整MTU:
bashnmcli connection modify br0 802-3-ethernet.mtu 9000 # 设置为巨型帧
-
CPU亲和性:
bash# 配置网卡中断绑定到特定CPU核心 echo 1 > /proc/irq/$(cat /sys/class/net/eth0/device/irq)/smp_affinity_list
通过以上配置,你可以灵活部署基于NetworkManager的网桥网络,支持单网卡、多网卡绑定、VLAN隔离等多种场景。
以下是使用 NetworkManager 的 nmcli
工具配置网桥(Bridge)的完整指南,结合多篇权威资料整理而成:
🔧 一、基础网桥配置步骤
1. 创建网桥设备
bash
sudo nmcli con add type bridge con-name br0 ifname br0
- 参数说明 :
con-name
:网桥配置名称(逻辑标识)
ifname
:系统中网桥接口名称(如br0
)
2. 添加物理接口到网桥
bash
sudo nmcli con add type bridge-slave con-name br0-eth0 ifname eth0 master br0
- 关键点 :
ifname eth0
:物理网卡名称(需通过nmcli device status
确认)master br0
:绑定到目标网桥
3. 配置网桥 IP 地址(可选)
-
静态 IP 配置 :
bashsudo nmcli con modify br0 ipv4.addresses 192.168.1.100/24 sudo nmcli con modify br0 ipv4.gateway 192.168.1.1 sudo nmcli con modify br0 ipv4.dns "8.8.8.8" sudo nmcli con modify br0 ipv4.method manual
-
DHCP 配置 :
bashsudo nmcli con modify br0 ipv4.method auto
4. 激活网桥
bash
sudo nmcli con down "有线连接 1" # 关闭原物理接口连接(通过 `nmcli con show` 查询名称)
sudo nmcli con up br0 # 启用网桥
sudo nmcli con up br0-eth0 # 启用从属连接
⚠️ 必须关闭原物理接口连接,否则会导致 IP 冲突
⚙️ 二、高级参数调优
1. 禁用生成树协议(STP)
bash
sudo nmcli con modify br0 bridge.stp no # 小型网络建议关闭以减少延迟
2. 关键网桥参数
参数 | 作用 | 示例命令 |
---|---|---|
bridge.priority |
设置网桥优先级(值越小优先级越高) | sudo nmcli con modify br0 bridge.priority 4096 |
bridge.forward-delay |
端口状态切换延迟(秒) | sudo nmcli con modify br0 bridge.forward-delay 5 |
bridge.hello-time |
STP 协议包发送间隔(秒) | sudo nmcli con modify br0 bridge.hello-time 1 |
🖥️ 三、虚拟化集成(KVM/virt-manager)
-
创建网桥后 ,在 virt-manager 中配置虚拟机:
- 网络源 → Bridge device
- 设备名称 → br0
- 设备模型 → virtio(高性能驱动)
-
验证虚拟机网络 :
bashbridge link show br0 # 检查网桥是否绑定物理接口和虚拟机虚拟网卡
🔍 四、验证与故障排除
1. 检查网桥状态
bash
nmcli con show br0 # 查看网桥配置详情
bridge -c link show br0 # 实时监控网桥端口状态(需安装 `bridge-utils`)
ip addr show br0 # 验证 IP 分配
2. 常见问题解决
-
物理接口未释放 IP :
bashsudo nmcli con down "原连接名" # 再次关闭原连接 sudo ip addr flush dev eth0 # 清除残留 IP
-
网桥未转发流量 :
bashsudo sysctl -w net.bridge.bridge-nf-call-iptables=0 # 关闭防火墙过滤
-
VLAN 支持问题 :
bashsudo modprobe 8021q # 加载 VLAN 内核模块
💾 五、持久化与备份
-
配置文件位置 :
/etc/NetworkManager/system-connections/br0.nmconnection
-
备份与恢复 :
bashsudo cp -r /etc/NetworkManager/system-connections/ ~/nm-backup # 备份 sudo cp ~/nm-backup/* /etc/NetworkManager/system-connections/ # 恢复 sudo nmcli con reload # 重载配置
-
权限要求 :
bashsudo chmod 600 /etc/NetworkManager/system-connections/* # 确保配置文件权限
📊 配置流程图解
创建网桥 br0 添加物理接口 eth0 配置 IP/静态/DHCP 关闭原物理连接 启用 br0 及从属连接 虚拟机绑定 br0
💡 通过此流程,可实现宿主机与虚拟机共享物理网络,适用于 KVM、Docker 等场景。完整命令参考 https://developer.gnome.org/NetworkManager/stable/nmcli.html。
以下是使用 NetworkManager 的 nmcli
工具配置网桥(Bridge)的完整指南,结合多篇权威资料整理的关键步骤和注意事项:
🔧 一、创建网桥并绑定物理接口
-
创建网桥设备
bashsudo nmcli connection add type bridge ifname br0 con-name br0
br0
:网桥名称(可自定义)。- 此命令自动创建网桥,无需手动加载内核模块。
-
将物理网卡加入网桥
bashsudo nmcli connection add type bridge-slave ifname eth0 master br0 con-name br0-port
eth0
:需替换为实际物理网卡名(如ens192
)。- 关键提示 :
-
物理网卡必须释放原有 IP 配置(如 DHCP 或静态 IP),否则会导致冲突。
-
若物理网卡已有连接(如 "有线连接 1"),需先关闭:
bashsudo nmcli connection down "Wired connection 1"
-
⚙️ 二、配置网桥网络参数
-
静态 IP 配置
bashsudo nmcli connection modify br0 ipv4.method manual \ ipv4.addresses 192.168.1.100/24 \ ipv4.gateway 192.168.1.1 \ ipv4.dns "8.8.8.8 8.8.4.4"
-
DHCP 自动获取 IP
bashsudo nmcli connection modify br0 ipv4.method auto
-
启用网桥及端口
bashsudo nmcli connection up br0 # 启动网桥 sudo nmcli connection up br0-port # 启动从属接口
🚀 三、优化网桥性能(可选)
-
禁用生成树协议(STP)
bashsudo nmcli connection modify br0 bridge.stp no
- 适用于小型局域网,避免 STP 延迟(默认开启)。
-
调整转发延迟
bashsudo nmcli connection modify br0 bridge.forward-delay 0
- 设为
0
秒可提升数据传输效率。
- 设为
✅ 四、验证配置与持久化
-
检查网桥状态
bashnmcli connection show br0 # 查看连接配置 ip addr show br0 # 检查 IP 分配 bridge link show br0 # 查看绑定的物理接口
-
确保配置持久化
-
nmcli
修改会自动保存至/etc/NetworkManager/system-connections/br0.nmconnection
。 -
重启后生效验证:
bashsudo systemctl reboot nmcli connection show | grep br0 # 应显示为 ACTIVE
-
⚠️ 五、常见问题解决
-
物理接口未加入网桥
检查是否被其他连接占用:
nmcli connection show
,关闭冲突连接后再激活网桥。 -
网络重启后配置丢失
确保保存配置并重启服务:
bashnmcli connection save sudo systemctl restart NetworkManager
-
防火墙拦截流量
开放网桥流量转发:
bashsudo firewall-cmd --zone=trusted --add-interface=br0 --permanent sudo firewall-cmd --reload
-
KVM 虚拟机桥接支持
虚拟机需配置为桥接模式(示例
virsh
配置):xml<network> <name>br0</name> <forward mode="bridge"/> <bridge name="br0"/> </network>
💡 应用场景示例
-
KVM 虚拟机网络
创建专用于虚拟机的网桥
br-kvm
,绑定物理网卡后,在virt-install
命令中指定--network bridge=br-kvm
。 -
容器网络隔离
结合 VLAN 与网桥,为 Docker 创建隔离网络:
bashnmcli connection add type vlan con-name eth0.200 dev eth0 id 200 nmcli connection add type bridge con-name br-container ifname br-container nmcli connection add type bridge-slave ifname eth0.200 master br-container docker network create -d macvlan --subnet=10.20.0.0/24 -o parent=br-container
📌 关键注意事项
- 依赖关系:先创建物理接口/VLAN,再创建网桥。
- WiFi 桥接限制:标准 WiFi 不支持直接桥接,需启用 WDS 或 4 地址模式。
- 云环境配置:AWS/Azure 等云平台需额外启用"允许转发"选项。
通过
nmcli
配置的网桥具备持久化特性,适合生产环境自动化部署。建议首次配置后在测试环境中验证,再应用于关键业务。
在 Linux 中使用 NetworkManager 的 nmcli
配置网桥(Bridge)的完整步骤如下:
一、基础配置流程
1. 创建网桥接口
bash
# 创建名为 br0 的网桥
sudo nmcli con add type bridge ifname br0 con-name br0
- 参数说明 :
type bridge
:指定连接类型为网桥。ifname br0
:定义网桥的逻辑名称。con-name br0
:连接配置的名称(可自定义)。
2. 添加物理接口到网桥
bash
# 将物理接口(如 eth0)绑定到网桥
sudo nmcli con add type bridge-slave ifname eth0 master br0
- 关键点 :
bridge-slave
:表示该连接为网桥的从属接口。- 需替换
eth0
为实际物理接口名称(通过nmcli device status
查看)。
3. 配置 IP 地址
bash
# 静态 IP 配置示例
sudo nmcli con modify br0 ipv4.method manual \
ipv4.addresses 192.168.1.100/24 \
ipv4.gateway 192.168.1.1 \
ipv4.dns "8.8.8.8"
# 动态 IP(DHCP)配置
sudo nmcli con modify br0 ipv4.method auto
- 注意:网桥接管 IP 配置后,物理接口的原有 IP 需移除。
4. 激活网桥
bash
# 启动网桥及从属接口
sudo nmcli con up br0
sudo nmcli con up bridge-slave-eth0
-
验证状态 :
bashnmcli con show br0 # 查看网桥连接状态 bridge link show br0 # 查看网桥成员接口 ip addr show br0 # 检查 IP 配置
二、高级配置
1. 禁用生成树协议(STP)
bash
sudo nmcli con modify br0 bridge.stp no
- 适用场景:小型网络中减少协议开销(默认启用 STP)。
2. 调整转发延迟
bash
sudo nmcli con modify br0 bridge.forward-delay 0
- 作用:提升虚拟机网络性能(默认值为 15 秒)。
3. VLAN 过滤
bash
sudo nmcli con modify br0 bridge.vlan-filtering yes
- 说明:启用 VLAN 过滤功能,需配合 VLAN 接口使用。
三、验证与调试
1. 网桥状态检查
bash
# 查看网桥详细信息
bridge link show br0
# 输出示例:
3: br0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 master br0 state UP
link/ether 00:1a:2b:3c:4d:5e brd ff:ff:ff:ff:ff:ff
RX: bytes packets errors dropped overrun mcast
1.2MB 1500 0 0 0 0
TX: bytes packets errors dropped overrun mcast
800KB 1000 0 0 0 0
2. 接口绑定验证
bash
nmcli con show --active | grep br0
# 应显示 br0 和 bridge-slave-eth0 处于激活状态
四、永久生效与配置文件
1. 配置文件位置
- 网桥配置文件:
/etc/NetworkManager/system-connections/br0.nmconnection
- 从属接口配置文件:
/etc/NetworkManager/system-connections/bridge-slave-eth0.nmconnection
2. 重启后自动加载
bash
sudo systemctl restart NetworkManager
五、常见问题解决
1. 物理接口未加入网桥
-
原因:物理接口原有 IP 未移除。
-
解决 :
bashnmcli con down "原有连接名称" # 如 "Wired connection 1" nmcli con modify eth0 ipv4.method manual ipv4.addresses "" # 清空 IP
2. 网桥未激活
-
手动启动 :
bashnmcli con up br0
3. KVM 虚拟机桥接配置
- 步骤 :
- 虚拟机网络模式设为 桥接。
- 指定网桥名称
br0
(参考virsh net-define
配置)。
六、与传统工具对比
功能 | nmcli 命令 |
brctl 命令 |
---|---|---|
创建网桥 | nmcli con add type bridge |
brctl addbr br0 |
添加接口 | nmcli con add type bridge-slave |
brctl addif br0 eth0 |
查看状态 | bridge link show |
brctl show |
优势 | 配置持久化,与 NetworkManager 集成 | 无需额外工具,兼容旧系统 |
七、最佳实践
- 命名规范 :网桥名称建议采用
br0
,从属接口命名如eth0-slave
。 - 性能优化:禁用 STP 和调整转发延迟(适用于虚拟化环境)。
- 备份配置 :修改前备份
/etc/NetworkManager/system-connections/
下的配置文件。
通过以上步骤,可快速完成网桥配置,适用于虚拟化、容器网络隔离等场景。
使用 nmcli 配置 NetworkManager 网桥
NetworkManager 是一个强大的网络管理工具,而 nmcli
是其命令行接口。配置网桥(Bridge)可以将多个网络接口组合成一个逻辑接口,常用于虚拟化、负载均衡等场景。以下是基于 CentOS/RHEL 等 Linux 系统的逐步指南。配置前请确保:
- NetworkManager 服务正在运行(使用
systemctl status NetworkManager
检查)。 - 您有 root 权限。
- 备份现有网络配置,以防意外中断。
步骤 1: 检查当前网络状态
在配置前,查看当前设备状态和连接,以识别要桥接的物理接口(如 eth0
或 ens33
):
bash
nmcli device status # 显示设备状态(如接口名称和类型)
nmcli connection show # 查看所有连接,包括 UUID 和类型
示例输出:
DEVICE TYPE STATE CONNECTION
ens33 ethernet connected ens33
lo loopback unmanaged --
记录要桥接的接口名(例如 ens33
)。
步骤 2: 创建网桥连接
创建一个新的网桥连接(例如名为 bridge-br0
):
bash
nmcli connection add type bridge con-name bridge-br0 ifname br0 # 添加网桥连接,br0 是网桥设备名
con-name bridge-br0
:指定连接名称。ifname br0
:指定网桥设备名(通常为br0
)。- 此命令会创建一个持久化配置。
步骤 3: 配置网桥参数
设置网桥的 IP 地址、网关和 DNS(如果需要静态 IP)。例如,配置静态 IP:
bash
nmcli connection modify bridge-br0 ipv4.addresses 192.168.1.100/24 # 设置 IP 和子网掩码
nmcli connection modify bridge-br0 ipv4.gateway 192.168.1.1 # 设置网关
nmcli connection modify bridge-br0 ipv4.dns "8.8.8.8 8.8.4.4" # 设置 DNS 服务器
nmcli connection modify bridge-br0 ipv4.method manual # 手动分配 IP(非 DHCP)
- 如果使用 DHCP,改为
nmcli connection modify bridge-br0 ipv4.method auto
。 - 可选:禁用 STP(生成树协议)以减少延迟:
nmcli connection modify bridge-br0 bridge.stp no
。
步骤 4: 添加桥接接口
将物理接口(如 ens33
)添加到网桥作为桥接接口:
bash
nmcli connection add type bridge-slave con-name bridge-slave-ens33 ifname ens33 master bridge-br0 # 添加桥接接口
ifname ens33
:指定要桥接的物理接口。master bridge-br0
:指定主网桥连接名称。- 此命令会创建桥接接口连接,不会删除原接口连接。
步骤 5: 激活网桥连接
激活网桥和桥接接口:
bash
nmcli connection down ens33 # 先禁用原物理接口连接(防止冲突)
nmcli connection up bridge-br0 # 激活网桥连接
nmcli connection up bridge-slave-ens33 # 激活桥接接口
步骤 6: 验证配置
检查状态和连接:
bash
nmcli device status # 查看设备状态,br0 应显示为 connected
nmcli connection show --active # 显示活动连接,bridge-br0 和 bridge-slave-* 应列出
ip addr show br0 # 检查网桥 IP 配置
ping 8.8.8.8 # 测试网络连通性
注意事项
-
风险提示:错误配置可能导致网络中断。建议在物理控制台操作,避免远程操作时断开。
-
恢复默认 :如果失败,删除网桥连接:
bashnmcli connection delete bridge-br0 nmcli connection delete bridge-slave-ens33 nmcli connection up ens33 # 恢复原接口
-
性能优化 :对于虚拟化环境,可调整网桥参数(如
bridge.hello-time
)以减少延迟。 -
兼容性:本指南适用于 CentOS 8/9、RHEL 8/9 等系统。其他发行版可能需调整。
配置网桥后,NetworkManager 会自动管理其状态,确保重启后配置持久化。
以下是使用 nmcli
配置网桥(Bridge)的详细步骤:
1. 创建网桥接口
bash
sudo nmcli con add type bridge con-name br0 ifname br0
con-name br0
: 网桥连接名称(可自定义)。ifname br0
: 网桥接口名称(可自定义)。
2. 配置网桥的 IP 地址(可选)
静态 IP
bash
sudo nmcli con modify br0 ipv4.addresses 192.168.1.100/24
sudo nmcli con modify br0 ipv4.gateway 192.168.1.1
sudo nmcli con modify br0 ipv4.dns "8.8.8.8"
sudo nmcli con modify br0 ipv4.method manual
DHCP
bash
sudo nmcli con modify br0 ipv4.method auto
3. 将物理接口(如 eth0)加入网桥
bash
sudo nmcli con add type bridge-slave con-name br0-slave ifname eth0 master br0
ifname eth0
: 要添加到网桥的物理接口。master br0
: 绑定到前面创建的网桥。
4. 启用网桥和相关连接
bash
sudo nmcli con up br0
sudo nmcli con up br0-slave
5. 验证配置
bash
# 查看网桥状态
bridge link show
# 或使用传统工具
brctl show
# 检查 IP 地址
ip addr show br0
可选配置
开启 STP(生成树协议)
bash
sudo nmcli con modify br0 bridge.stp yes
设置网桥优先级
bash
sudo nmcli con modify br0 bridge.priority 32768
注意事项
-
确保物理接口无独立 IP
原来的物理接口(如
eth0
)不应配置 IP 地址,否则可能导致冲突。 -
防火墙/NetworkManager 服务
若遇到问题,重启服务并检查防火墙:
bashsudo systemctl restart NetworkManager
-
接口名称适配
根据实际系统替换
eth0
(可能是ens3
,enp0s3
等)。
删除网桥
bash
sudo nmcli con delete br0
sudo nmcli con delete br0-slave
通过上述步骤,您应该能成功创建一个网桥并通过 nmcli
管理它。
使用 nmcli
(NetworkManager 的命令行工具)配置网桥(Bridge)的步骤如下:
1. 创建网桥连接
bash
nmcli connection add type bridge con-name br0 ifname br0
type bridge
: 指定连接类型为网桥。con-name br0
: 自定义连接名称(如br0
)。ifname br0
: 网桥的接口名称(通常与连接名称一致)。
2. 配置网桥参数(可选)
如果需要静态 IP(默认 DHCP),添加静态 IP 和网关:
bash
nmcli connection modify br0 ipv4.addresses 192.168.1.100/24
nmcli connection modify br0 ipv4.gateway 192.168.1.1
nmcli connection modify br0 ipv4.dns "8.8.8.8"
nmcli connection modify br0 ipv4.method manual # 静态IP
或启用 DHCP:
bash
nmcli connection modify br0 ipv4.method auto
3. 添加物理接口到网桥
假设要将物理接口 enp1s0
绑定到网桥 br0
:
bash
nmcli connection add type bridge-slave con-name br0-port1 ifname enp1s0 master br0
type bridge-slave
: 声明接口为网桥的从属接口。con-name br0-port1
: 连接的名称(可自定义)。ifname enp1s0
: 要绑定的物理接口名称。master br0
: 指定主网桥连接名称。
注意 : 原来的物理接口(如
enp1s0
)的 IP 配置需移除,改为由网桥管理。
4. 启用连接
激活网桥和从属接口:
bash
nmcli connection up br0
nmcli connection up br0-port1
5. 验证网桥
检查网桥和接口状态:
bash
brctl show # 查看网桥及绑定接口
ip addr show br0 # 查看网桥的 IP 配置
6. 可选优化
-
禁用 STP(生成树协议) (如不需要):
bashnmcli connection modify br0 bridge.stp no
-
关闭 Netfilter(适用于虚拟化环境) :
bashecho "net.bridge.bridge-nf-call-iptables=0" >> /etc/sysctl.conf sysctl -p
删除网桥
bash
nmcli connection delete br0 # 删除网桥连接
nmcli connection delete br0-port1 # 删除从属接口连接
注意事项
- 操作前备份网络配置。
- 物理服务器/虚拟机场景中,确保物理接口未配置其他 IP。
- 如果使用防火墙(如
firewalld
),需允许网桥流量。
希望这对您有帮助!遇到问题可提供错误信息进一步排查。