菜鸟科技网

Linux bridge命令如何管理网络连接?

Linux Bridge 是 Linux 内核中提供的一种虚拟网络设备,它工作在数据链路层(OSI 模型的第二层),类似于物理交换机,能够连接多个网络接口(包括物理网卡、虚拟网卡等),并根据 MAC 地址转发数据帧,它常用于虚拟化环境(如 KVM、Docker)中实现虚拟网络互通,也可用于构建复杂的网络拓扑结构,以下详细介绍 Linux Bridge 的常用命令及其使用场景。

Linux bridge命令如何管理网络连接?-图1
(图片来源网络,侵删)

Linux Bridge 的基本管理命令

安装 bridge-utils 工具包

在大多数 Linux 发行版中,需要先安装 bridge-utils 工具包才能使用 brctl 命令管理 Linux Bridge,在基于 Debian/Ubuntu 的系统上:

sudo apt update && sudo apt install bridge-utils

在基于 RHEL/CentOS 的系统上:

sudo yum install bridge-utils

创建和删除 Bridge

  • 创建 Bridge:使用 brctl addbr 命令创建一个新的 Bridge,例如创建名为 br0 的 Bridge:
    sudo brctl addbr br0
  • 删除 Bridge:使用 brctl delbr 命令删除指定的 Bridge,例如删除 br0
    sudo brctl delbr br0

查看 Bridge 状态

  • 查看所有 Bridge:使用 brctl show 列出当前系统中的所有 Bridge 及其基本信息(如 ID、状态、接口列表等):
    brctl show

    输出示例:

    bridge name     bridge id               STP enabled     interfaces
    br0             8000.000000000000       no              ens33
  • 查看特定 Bridge 的详细信息:使用 brctl show <bridge_name>,例如查看 br0 的接口状态和 MAC 地址:
    brctl show br0

添加和删除接口

  • 添加接口到 Bridge:将网络接口(如物理网卡 eth0 或虚拟接口 veth0)添加到 Bridge 中,例如将 ens33 添加到 br0
    sudo brctl addif br0 ens33
  • 从 Bridge 中删除接口:使用 brctl delif 命令,例如从 br0 中移除 ens33
    sudo brctl delif br0 ens33

配置 Bridge IP 地址

Bridge 本身可以配置 IP 地址,作为虚拟网络的网关或管理接口,使用 ip 命令配置,例如为 br0 分配 IP 地址 168.1.100/24

Linux bridge命令如何管理网络连接?-图2
(图片来源网络,侵删)
sudo ip addr add 192.168.1.100/24 dev br0
sudo ip link set br0 up  # 启动 Bridge

查看 Bridge IP 地址:

ip addr show br0

启用/禁用 STP(生成树协议)

STP 用于防止网络中的环路,默认情况下 Bridge 的 STP 是关闭的,Bridge 连接了多个物理网络,建议启用 STP:

sudo brctl stp br0 on  # 启用 STP
sudo brctl stp br0 off # 禁用 STP

查看 STP 状态:

brctl showstp br0

设置网桥转发行为

  • 设置 MAC 地址老化时间:指定 MAC 地址表项的存活时间(单位:秒),默认为 300 秒:
    sudo brctl setageing br0 600
  • 设置网桥最大 MAC 地址表大小:限制 Bridge 能学习的 MAC 地址数量,默认为 1000:
    sudo brctl setmaxaddr br0 2000

Linux Bridge 配置示例

以下是一个简单场景:将物理网卡 ens33 和虚拟网卡 veth0 连接到 br0,并为 br0 分配 IP 地址,实现虚拟机与物理网络的互通。

Linux bridge命令如何管理网络连接?-图3
(图片来源网络,侵删)
# 1. 创建 Bridge
sudo brctl addbr br0
# 2. 添加物理网卡到 Bridge
sudo brctl addif br0 ens33
# 3. 创建虚拟网卡对(veth0 和 veth1)
sudo ip link add veth0 type veth peer name veth1
# 4. 将 veth0 添加到 Bridge
sudo brctl addif br0 veth0
# 5. 配置 Bridge IP 地址并启动
sudo ip addr add 192.168.1.100/24 dev br0
sudo ip link set br0 up
sudo ip link set veth1 up  # 虚拟机端使用 veth1,配置为同一网段 IP
# 6. 查看 Bridge 状态
brctl show

相关问答 FAQs

问题 1:Linux Bridge 和虚拟交换机(如 OVS)有什么区别?
答:Linux Bridge 是内核态的虚拟交换机,性能较高,配置简单,适合基本的虚拟网络需求;而 OVS(Open vSwitch)是用户态的虚拟交换机,功能更强大(支持 VLAN、隧道、流表等),适合复杂的 SDN 场景,Linux Bridge 依赖 bridge-utils 工具,而 OVS 需要安装 ovs-vsctl 等工具。

问题 2:如何持久化 Linux Bridge 的配置,使其在系统重启后自动生效?
答:在 Debian/Ubuntu 系统中,可通过 /etc/network/interfaces 文件配置,

auto br0
iface br0 inet static
    address 192.168.1.100
    netmask 255.255.255.0
    bridge_ports ens33
    bridge_stp off

在 RHEL/CentOS 系统中,使用 NetworkManagernmcli 命令配置,

nmcli con add type bridge ifname br0 ip4 192.168.1.100/24
nmcli con add type ethernet ifname ens33 master br0
nmcli con up bridge-br0

配置完成后,重启网络服务或系统即可持久化。

分享:
扫描分享到社交APP
上一篇
下一篇