Linux的NetworkManager的nmcli配置网桥(bridge) 笔记250712

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),需先删除或停用 原连接:

    bash 复制代码
    sudo 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

关键说明

  1. 物理接口无需独立 IP

    绑定到网桥的接口(如 eth0不再需要配置 IP ,所有流量通过网桥 br0 处理。

  2. 连接名称(con-name)

    • br0:网桥的逻辑名称(可自定义)。
    • bridge-slave-eth0:从属接口的逻辑名称(可自定义)。
  3. NetworkManager 持久化

    配置会自动保存到 /etc/NetworkManager/system-connections/,重启后生效。

  4. 故障排查

    • 检查服务状态: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

故障排查

常见问题解决

  1. 网桥未激活

    bash 复制代码
    sudo nmcli con up br0
    sudo systemctl restart NetworkManager
  2. 端口未加入网桥

    bash 复制代码
    # 检查端口连接状态
    nmcli con show br0-port1
    
    # 重新激活端口
    sudo nmcli con down br0-port1 && sudo nmcli con up br0-port1
  3. IP 地址冲突

    bash 复制代码
    # 检查 IP 地址
    ip addr show br0
    
    # 修改 IP
    sudo nmcli con mod br0 ipv4.addresses 192.168.1.20/24
  4. 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

最佳实践

  1. 命名规范

    bash 复制代码
    # 使用描述性名称
    nmcli con add type bridge con-name "mgmt-bridge" ifname br-mgmt
  2. 防火墙集成

    bash 复制代码
    # 允许网桥流量通过防火墙
    sudo firewall-cmd --add-interface=br0 --zone=trusted --permanent
    sudo firewall-cmd --reload
  3. 虚拟化支持

    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
  4. 备份配置

    bash 复制代码
    # 备份所有 NetworkManager 配置
    sudo cp -r /etc/NetworkManager/system-connections/ ~/nm-backup
  5. 性能优化

    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

提示:生产环境建议分阶段测试:

  1. 临时 nmcli 命令测试
  2. 验证后添加持久参数
  3. 保存到配置文件
  4. 系统重启验证

此配置方案适用于:

  • 服务器虚拟化 (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 流量未正确隔离
解决

  1. 启用 VLAN 过滤:

    bash 复制代码
    nmcli con mod br0 bridge.vlan-filtering yes
  2. 重启网桥:

    bash 复制代码
    nmcli 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

最佳实践

  1. 命名规范 :使用有意义的名称(如 prod-bridge

  2. 接口管理:确保物理接口设置为 "unmanaged" 状态

  3. STP 配置

    • 小型网络:禁用 STP (bridge.stp no)
    • 复杂拓扑:启用 STP 并调整优先级
  4. 安全考虑 :在公共接口上禁用 MAC 学习

    bash 复制代码
    nmcli con mod br0 bridge.hello-time 2 bridge.max-age 20
  5. 性能优化 :禁用不需要的功能

    bash 复制代码
    nmcli 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 桌面环境中:

  1. 打开"设置" → "网络"
  2. 点击右下角⚙️图标 → "添加配置文件"
  3. 选择"网桥"
  4. 配置:
    • 名称:输入连接名称
    • 网桥接口名:如 br0
    • 添加接口:点击"+"添加物理接口
    • IP设置:配置IPv4/IPv6
  5. 点击"应用"

九、最佳实践建议

  1. 命名规范

    • 使用描述性名称:br-mgmt, br-vlan100
    • 避免通用名:br0, bridge1
  2. 安全配置

    bash 复制代码
    # 禁用不需要的服务
    nmcli con modify br0 ipv6.method ignore
    
    # 启用MAC过滤
    nmcli con modify br0 bridge.mac-address-ageing-time 300
  3. 性能优化

    bash 复制代码
    # 单接口网桥禁用STP
    nmcli con modify br0 bridge.stp no
    
    # 调整缓存大小
    echo 16384 > /sys/class/net/br0/bridge/hash_max
  4. 文档记录

    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

重要注意事项

  1. 接口占用

    • 添加物理接口到网桥时,该接口原有的网络配置会被覆盖
    • 确保物理接口没有其他活跃连接
  2. 激活顺序

    • 先激活从属接口 (bridge-slave),再激活网桥 (bridge)
    • 错误的顺序可能导致网络中断
  3. 配置文件位置

    • 所有配置存储在 /etc/NetworkManager/system-connections/
    • 修改后无需重启服务,nmcli con up 即可生效
  4. 与其他服务集成

    • 虚拟机 (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 方式

    bash 复制代码
    sudo nmcli con modify br0 ipv4.method auto
  • 静态 IP 方式

    bash 复制代码
    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

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:设置设备名称为 br0
  • con-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 配置网桥,您可以获得:

  1. 持久化配置 - 重启后自动生效
  2. 图形界面支持 - 在GNOME/KDE等桌面环境中可见
  3. 动态管理 - 无需重启网络服务即可修改配置

对于虚拟机网络(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

关键说明

  1. 物理网卡要求
    添加到网桥的物理接口(如 eth0不能有自己的 IP 地址,它仅作为网桥的数据通道。
  2. 连接名称
    con-name 是 NetworkManager 中连接的标识符,可自定义(如 my-bridge)。
  3. 网桥接口名
    ifname 是实际生成的网络接口名(如 br0)。
  4. 服务重启
    配置会持久化,无需重启 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> 激活连接

注意事项

  1. 接口占用

    添加为从属的物理接口(如 eth0不再需要独立 IP,其原有连接需停用或删除:

    bash 复制代码
    nmcli connection down "原有连接名"  # 停用
    nmcli connection delete "原有连接名" # 删除
  2. 服务重启

    配置永久有效,无需额外保存。

  3. 故障排查

    • 检查 NetworkManager 状态:systemctl status NetworkManager
    • 日志查看:journalctl -u 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

注意事项

  1. 物理接口要求 :加入网桥的接口(如 eth0)不应配置独立IP。

  2. 虚拟化场景 :网桥常用于连接虚拟机(如KVM/QEMU),需在虚拟机配置中指定 br0

  3. 防火墙规则 :若启用防火墙(如firewalld),需允许网桥流量:

    bash 复制代码
    sudo 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

注意事项

  1. NetworkManager版本:确保版本支持网桥(较新版本均支持)。
  2. 防火墙/路由 :若网桥用于虚拟机或容器,需调整防火墙规则(如firewalldiptables)。
  3. 持久化nmcli的配置默认持久化,重启后仍有效。
  4. 冲突避免 :确保物理网卡未被其他工具(如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 系统中,使用 NetworkManagernmcli 命令可以非常方便地配置和管理网络桥接(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 br0nmcli 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 linkip 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 -Lfirewall-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  # 删除所有端口连接

六、性能优化建议

  1. 禁用不必要的服务

    bash 复制代码
    nmcli connection modify br0 802-1q-in-802-1q no  # 禁用QinQ封装
  2. 调整MTU

    bash 复制代码
    nmcli connection modify br0 802-3-ethernet.mtu 9000  # 设置为巨型帧
  3. 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 配置

    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
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)

  1. 创建网桥后 ,在 virt-manager 中配置虚拟机:

    • 网络源 → Bridge device
    • 设备名称 → br0
    • 设备模型 → virtio(高性能驱动)
  2. 验证虚拟机网络

    bash 复制代码
    bridge link show br0  # 检查网桥是否绑定物理接口和虚拟机虚拟网卡

🔍 四、验证与故障排除

1. 检查网桥状态
bash 复制代码
nmcli con show br0              # 查看网桥配置详情
bridge -c link show br0         # 实时监控网桥端口状态(需安装 `bridge-utils`)
ip addr show br0                # 验证 IP 分配
2. 常见问题解决
  • 物理接口未释放 IP

    bash 复制代码
    sudo nmcli con down "原连接名"   # 再次关闭原连接
    sudo ip addr flush dev eth0     # 清除残留 IP
  • 网桥未转发流量

    bash 复制代码
    sudo sysctl -w net.bridge.bridge-nf-call-iptables=0  # 关闭防火墙过滤
  • VLAN 支持问题

    bash 复制代码
    sudo modprobe 8021q           # 加载 VLAN 内核模块

💾 五、持久化与备份

  • 配置文件位置
    /etc/NetworkManager/system-connections/br0.nmconnection

  • 备份与恢复

    bash 复制代码
    sudo cp -r /etc/NetworkManager/system-connections/ ~/nm-backup  # 备份
    sudo cp ~/nm-backup/* /etc/NetworkManager/system-connections/   # 恢复
    sudo nmcli con reload  # 重载配置
  • 权限要求

    bash 复制代码
    sudo 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)的完整指南,结合多篇权威资料整理的关键步骤和注意事项:


🔧 一、创建网桥并绑定物理接口

  1. 创建网桥设备

    bash 复制代码
    sudo nmcli connection add type bridge ifname br0 con-name br0
    • br0:网桥名称(可自定义)。
    • 此命令自动创建网桥,无需手动加载内核模块。
  2. 将物理网卡加入网桥

    bash 复制代码
    sudo nmcli connection add type bridge-slave ifname eth0 master br0 con-name br0-port
    • eth0:需替换为实际物理网卡名(如 ens192)。
    • 关键提示
      • 物理网卡必须释放原有 IP 配置(如 DHCP 或静态 IP),否则会导致冲突。

      • 若物理网卡已有连接(如 "有线连接 1"),需先关闭:

        bash 复制代码
        sudo nmcli connection down "Wired connection 1"

⚙️ 二、配置网桥网络参数

  1. 静态 IP 配置

    bash 复制代码
    sudo 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"
  2. DHCP 自动获取 IP

    bash 复制代码
    sudo nmcli connection modify br0 ipv4.method auto
  3. 启用网桥及端口

    bash 复制代码
    sudo nmcli connection up br0       # 启动网桥
    sudo nmcli connection up br0-port  # 启动从属接口

🚀 三、优化网桥性能(可选)

  1. 禁用生成树协议(STP)

    bash 复制代码
    sudo nmcli connection modify br0 bridge.stp no
    • 适用于小型局域网,避免 STP 延迟(默认开启)。
  2. 调整转发延迟

    bash 复制代码
    sudo nmcli connection modify br0 bridge.forward-delay 0
    • 设为 0 秒可提升数据传输效率。

四、验证配置与持久化

  1. 检查网桥状态

    bash 复制代码
    nmcli connection show br0      # 查看连接配置
    ip addr show br0               # 检查 IP 分配
    bridge link show br0           # 查看绑定的物理接口
  2. 确保配置持久化

    • nmcli 修改会自动保存至 /etc/NetworkManager/system-connections/br0.nmconnection

    • 重启后生效验证:

      bash 复制代码
      sudo systemctl reboot
      nmcli connection show | grep br0  # 应显示为 ACTIVE

⚠️ 五、常见问题解决

  • 物理接口未加入网桥

    检查是否被其他连接占用:nmcli connection show,关闭冲突连接后再激活网桥。

  • 网络重启后配置丢失

    确保保存配置并重启服务:

    bash 复制代码
    nmcli connection save
    sudo systemctl restart NetworkManager
  • 防火墙拦截流量

    开放网桥流量转发:

    bash 复制代码
    sudo 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 创建隔离网络:

    bash 复制代码
    nmcli 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

📌 关键注意事项

  1. 依赖关系:先创建物理接口/VLAN,再创建网桥。
  2. WiFi 桥接限制:标准 WiFi 不支持直接桥接,需启用 WDS 或 4 地址模式。
  3. 云环境配置: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
  • 验证状态

    bash 复制代码
    nmcli 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 未移除。

  • 解决

    bash 复制代码
    nmcli con down "原有连接名称"  # 如 "Wired connection 1"
    nmcli con modify eth0 ipv4.method manual ipv4.addresses ""  # 清空 IP
2. 网桥未激活
  • 手动启动

    bash 复制代码
    nmcli con up br0
3. KVM 虚拟机桥接配置
  • 步骤
    1. 虚拟机网络模式设为 桥接
    2. 指定网桥名称 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 集成 无需额外工具,兼容旧系统

七、最佳实践

  1. 命名规范 :网桥名称建议采用 br0,从属接口命名如 eth0-slave
  2. 性能优化:禁用 STP 和调整转发延迟(适用于虚拟化环境)。
  3. 备份配置 :修改前备份 /etc/NetworkManager/system-connections/ 下的配置文件。

通过以上步骤,可快速完成网桥配置,适用于虚拟化、容器网络隔离等场景。







使用 nmcli 配置 NetworkManager 网桥

NetworkManager 是一个强大的网络管理工具,而 nmcli 是其命令行接口。配置网桥(Bridge)可以将多个网络接口组合成一个逻辑接口,常用于虚拟化、负载均衡等场景。以下是基于 CentOS/RHEL 等 Linux 系统的逐步指南。配置前请确保:

  • NetworkManager 服务正在运行(使用 systemctl status NetworkManager 检查)。
  • 您有 root 权限。
  • 备份现有网络配置,以防意外中断。
步骤 1: 检查当前网络状态

在配置前,查看当前设备状态和连接,以识别要桥接的物理接口(如 eth0ens33):

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                     # 测试网络连通性
注意事项
  • 风险提示:错误配置可能导致网络中断。建议在物理控制台操作,避免远程操作时断开。

  • 恢复默认 :如果失败,删除网桥连接:

    bash 复制代码
    nmcli 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

注意事项

  1. 确保物理接口无独立 IP

    原来的物理接口(如 eth0)不应配置 IP 地址,否则可能导致冲突。

  2. 防火墙/NetworkManager 服务

    若遇到问题,重启服务并检查防火墙:

    bash 复制代码
    sudo systemctl restart NetworkManager
  3. 接口名称适配

    根据实际系统替换 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(生成树协议) (如不需要):

    bash 复制代码
    nmcli connection modify br0 bridge.stp no
  • 关闭 Netfilter(适用于虚拟化环境)

    bash 复制代码
    echo "net.bridge.bridge-nf-call-iptables=0" >> /etc/sysctl.conf
    sysctl -p

删除网桥

bash 复制代码
nmcli connection delete br0           # 删除网桥连接
nmcli connection delete br0-port1     # 删除从属接口连接

注意事项

  • 操作前备份网络配置。
  • 物理服务器/虚拟机场景中,确保物理接口未配置其他 IP。
  • 如果使用防火墙(如 firewalld),需允许网桥流量。

希望这对您有帮助!遇到问题可提供错误信息进一步排查。





































相关推荐
平凡灵感码头24 分钟前
什么是 Bootloader?怎么把它移植到 STM32 上?
linux·soc
Xi-Xu38 分钟前
隆重介绍 Xget for Chrome:您的终极下载加速器
前端·网络·chrome·经验分享·github
MarkGosling1 小时前
【开源项目】网络诊断告别命令行!NetSonar:开源多协议网络诊断利器
运维·后端·自动化运维
hi0_61 小时前
03 数组 VS 链表
java·数据结构·c++·笔记·算法·链表
无敌的牛1 小时前
Linux基础开发工具
linux·运维·服务器
Edingbrugh.南空1 小时前
实战指南:用pmap+gdb排查Linux进程内存问题
linux·运维·服务器
朱颜辞镜花辞树‎1 小时前
GitHub 操作指南:项目协作与自动化工作流实践
运维·自动化·github
亚马逊云开发者2 小时前
将 Go 应用从 x86 平台迁移至 Amazon Graviton:场景剖析与最佳实践
linux·数据库·golang
大叔是90后大叔2 小时前
Linux/Ubuntu安装go
linux·ubuntu·golang
孙克旭_2 小时前
day051-ansible循环、判断与jinja2模板
linux·运维·服务器·网络·ansible