Linux创建网桥Bridge的方法有哪些? 笔记250710
在 Linux 系统中,创建网桥(Bridge)主要有以下几种方法,每种方法适用于不同的场景和发行版:
一、临时创建(重启失效)
1. 使用 brctl
(bridge-utils)
bash
# 创建网桥
sudo brctl addbr br0
# 添加接口
sudo brctl addif br0 eth0
# 启用设备
sudo ip link set br0 up
sudo ip link set eth0 up
2. 使用 iproute2
(现代推荐)
bash
# 创建网桥
sudo ip link add name br0 type bridge
# 添加接口
sudo ip link set eth0 master br0
# 启用设备
sudo ip link set br0 up
sudo ip link set eth0 up
二、永久配置(重启生效)
1. 使用 NetworkManager (nmcli) - 桌面/服务器通用
bash
# 创建网桥
sudo nmcli con add type bridge ifname br0 con-name br0
# 添加物理接口
sudo nmcli con add type bridge-slave ifname eth0 master br0
# 配置IP (DHCP)
sudo nmcli con modify br0 ipv4.method auto
# 激活
sudo nmcli con up br0
2. 使用 systemd-networkd - 无GUI服务器推荐
ini
# /etc/systemd/network/10-br0.netdev
[NetDev]
Name=br0
Kind=bridge
# /etc/systemd/network/20-eth0-bridge.network
[Match]
Name=eth0
[Network]
Bridge=br0
# /etc/systemd/network/30-br0.network
[Match]
Name=br0
[Network]
DHCP=ipv4
启用服务:
bash
sudo systemctl enable --now systemd-networkd
3. 使用 netplan (Ubuntu 18.04+)
yaml
# /etc/netplan/01-netcfg.yaml
network:
version: 2
bridges:
br0:
interfaces: [eth0]
dhcp4: yes
应用配置:
bash
sudo netplan apply
4. 传统配置文件 (Debian/CentOS)
Debian/Ubuntu (/etc/network/interfaces
):
conf
auto br0
iface br0 inet dhcp
bridge_ports eth0
bridge_stp off
CentOS/RHEL (/etc/sysconfig/network-scripts/
):
ini
# ifcfg-br0
DEVICE=br0
TYPE=Bridge
BOOTPROTO=dhcp
ONBOOT=yes
# ifcfg-eth0
DEVICE=eth0
ONBOOT=yes
BRIDGE=br0
三、专用场景方法
1. Libvirt 虚拟化自动桥接
xml
<!-- virsh net-edit default -->
<network>
<name>default</name>
<bridge name="virbr0"/>
<forward mode="nat"/>
</network>
2. Docker 容器桥接
bash
# 创建自定义桥接网络
docker network create --driver bridge my-bridge
3. KVM/QEMU 专用桥接
bash
# 预配置脚本
sudo virt-install \
--network bridge=br0 \
--name my-vm \
--ram 2048 \
--disk path=/var/lib/libvirt/images/my-vm.qcow2 \
--os-variant ubuntu20.04
四、方法对比表
方法 | 适用场景 | 永久生效 | 复杂度 | 推荐发行版 |
---|---|---|---|---|
iproute2 |
快速测试/临时配置 | ❌ | ⭐ | 所有 |
brctl |
老系统兼容 | ❌ | ⭐⭐ | CentOS 6, Debian 9 |
NetworkManager | 桌面/现代服务器 | ✅ | ⭐⭐ | Fedora, RHEL, Workstations |
systemd-networkd | 无GUI服务器/轻量环境 | ✅ | ⭐⭐⭐ | Debian 10+, Ubuntu 18.04+ |
netplan | Ubuntu 云服务器 | ✅ | ⭐⭐ | Ubuntu 18.04+ |
传统配置文件 | 老版本服务器 | ✅ | ⭐⭐⭐⭐ | CentOS 7, Debian 9 |
Libvirt/KVM | 虚拟化专用 | ✅ | ⭐⭐⭐ | 所有KVM主机 |
对于大多数现代系统,NetworkManager (nmcli) 和 systemd-networkd 是最推荐的标准方案。
方法对比与选择建议
方法 | 适用场景 | 持久性 | 复杂度 |
---|---|---|---|
iproute2 /brctl |
临时测试/快速配置 | ❌ | ⭐ |
/etc/network/interfaces |
Debian/Ubuntu 传统系统 | ✅ | ⭐⭐ |
ifcfg 文件 |
RHEL/CentOS 7及以下 | ✅ | ⭐⭐ |
Netplan (YAML) | Ubuntu 18.04+ 服务器 | ✅ | ⭐⭐ |
systemd-networkd | 现代发行版(Arch,CoreOS等) | ✅ | ⭐⭐⭐ |
NetworkManager (nmcli) | 带GUI的桌面系统 | ✅ | ⭐⭐ |
virt-manager/virsh | KVM/QEMU 虚拟机环境 | ✅ | ⭐⭐ |
如何用"iproute2"配置网桥bridge,并使其永久生效
要使用 iproute2
配置网桥并永久生效,需要结合网络配置文件(具体方法取决于发行版)。以下是详细步骤:
一、临时配置网桥(重启失效)
bash
# 创建网桥 br0
sudo ip link add name br0 type bridge
# 将物理网卡(如 enp1s0)加入网桥
sudo ip link set enp1s0 master br0
# 激活网桥
sudo ip link set br0 up
# 分配IP(可选:DHCP或静态)
sudo dhclient br0 # DHCP
# 或静态IP
sudo ip addr add 192.168.1.100/24 dev br0
sudo ip route add default via 192.168.1.1
二、永久生效配置(按发行版)
######## 1. Debian/Ubuntu (使用 netplan
)
yaml
# 编辑配置文件(以 .yaml 结尾)
sudo nano /etc/netplan/01-netcfg.yaml
yaml
network:
version: 2
renderer: networkd # 或 NetworkManager
ethernets:
enp1s0: # 物理网卡
dhcp4: no # 禁用独立IP
dhcp6: no
bridges:
br0: # 网桥配置
interfaces: [enp1s0] # 绑定的网卡
dhcp4: yes # 或静态IP
# 静态IP示例:
# addresses: [192.168.1.100/24]
# gateway4: 192.168.1.1
# nameservers:
# addresses: [8.8.8.8, 8.8.4.4]
应用配置:
bash
sudo netplan apply
######## 2. CentOS/RHEL (使用 ifcfg
文件)
bash
# 物理网卡配置
sudo nano /etc/sysconfig/network-scripts/ifcfg-enp1s0
ini
TYPE=Ethernet
BOOTPROTO=none
DEVICE=enp1s0
ONBOOT=yes
BRIDGE=br0 # 关键:指定桥接目标
bash
# 网桥配置
sudo nano /etc/sysconfig/network-scripts/ifcfg-br0
ini
TYPE=Bridge # 注意首字母大写
DEVICE=br0
BOOTPROTO=dhcp # 或 static
ONBOOT=yes
# 静态IP示例:
# IPADDR=192.168.1.100
# NETMASK=255.255.255.0
# GATEWAY=192.168.1.1
# DNS1=8.8.8.8
重启网络:
bash
sudo systemctl restart NetworkManager
# 或传统网络服务
sudo systemctl restart network
######## 3. 通用方法 (使用 systemd-networkd
)
ini
# 创建物理网卡配置
sudo nano /etc/systemd/network/10-enp1s0.network
ini
[Match]
Name=enp1s0
[Network]
Bridge=br0 # 加入网桥
ini
# 创建网桥配置
sudo nano /etc/systemd/network/20-br0.netdev
ini
[NetDev]
Name=br0
Kind=bridge
ini
# 网桥网络配置
sudo nano /etc/systemd/network/20-br0.network
ini
[Match]
Name=br0
[Network]
DHCP=yes
# 静态IP示例:
# Address=192.168.1.100/24
# Gateway=192.168.1.1
# DNS=8.8.8.8
启用服务:
bash
sudo systemctl enable --now systemd-networkd
三、验证配置
bash
# 检查网桥状态
bridge link show br0
# 查看IP分配
ip addr show br0
# 测试网络连通性
ping -c 4 8.8.8.8
四、故障排除
-
网卡未激活 :
bashsudo ip link set enp1s0 up sudo ip link set br0 up
-
服务冲突 :
-
确保关闭
NetworkManager
(仅使用systemd-networkd
时):bashsudo systemctl stop NetworkManager sudo systemctl disable NetworkManager
-
-
防火墙拦截 :
bashsudo ufw allow in on br0
关键注意事项:
- 物理网卡不应配置IP:仅网桥持有IP地址
- 兼容性 :
- Ubuntu 18.04+ 优先用
netplan
- CentOS 7/8 用
ifcfg
文件 - Arch/Gentoo 推荐
systemd-networkd
- Ubuntu 18.04+ 优先用
- 远程操作风险:配置错误可能导致断网,建议在本地控制台操作
通过以上步骤,网桥配置将在重启后自动生效,虚拟机可通过此网桥直接接入物理网络。
如何用"bridge-utils"的brctl
命令配置网桥bridge,并使其永久生效
使用 brctl
(bridge-utils) 配置永久网桥
brctl
是传统 Linux 网桥管理工具,虽然现代系统推荐使用 iproute2
或 NetworkManager,但在老系统或特定场景下仍有用。以下是完整配置指南:
一、安装 bridge-utils
bash
##### Debian/Ubuntu
sudo apt update && sudo apt install bridge-utils
##### CentOS/RHEL
sudo yum install bridge-utils
##### Arch/Manjaro
sudo pacman -S bridge-utils
二、临时配置网桥(重启失效)
bash
##### 创建网桥
sudo brctl addbr br0
##### 添加物理接口 (如 enp1s0)
sudo brctl addif br0 enp1s0
##### 启用网桥
sudo ip link set br0 up
sudo ip link set enp1s0 up
##### 配置IP (可选)
sudo dhclient br0 # DHCP
##### 或静态IP
sudo ip addr add 192.168.1.100/24 dev br0
sudo ip route add default via 192.168.1.1
三、永久配置(按发行版)
####### 1. Debian/Ubuntu (使用 /etc/network/interfaces)
bash
sudo nano /etc/network/interfaces
conf
##### 物理接口配置 (无IP)
auto enp1s0
iface enp1s0 inet manual
up ip link set $IFACE up promisc on
down ip link set $IFACE down promisc off
##### 网桥配置
auto br0
iface br0 inet dhcp # 或 static
bridge_ports enp1s0
bridge_stp off # 关闭生成树
bridge_fd 0 # 转发延迟
bridge_maxwait 0
# 静态IP示例:
# address 192.168.1.100
# netmask 255.255.255.0
# gateway 192.168.1.1
# dns-nameservers 8.8.8.8
重启网络:
bash
sudo systemctl restart networking
####### 2. CentOS/RHEL 7 (使用 ifcfg 文件)
物理接口配置:
bash
sudo nano /etc/sysconfig/network-scripts/ifcfg-enp1s0
ini
DEVICE=enp1s0
TYPE=Ethernet
BOOTPROTO=none
ONBOOT=yes
NM_CONTROLLED=no
BRIDGE=br0
PROMISC=yes
网桥配置:
bash
sudo nano /etc/sysconfig/network-scripts/ifcfg-br0
ini
DEVICE=br0
TYPE=Bridge
BOOTPROTO=dhcp # 或 static
ONBOOT=yes
NM_CONTROLLED=no
DELAY=0
STP=off
##### 静态IP示例:
##### IPADDR=192.168.1.100
##### NETMASK=255.255.255.0
##### GATEWAY=192.168.1.1
##### DNS1=8.8.8.8
重启网络:
bash
sudo systemctl restart network
####### 3. CentOS/RHEL 8+ & Fedora (使用 nmcli)
bash
##### 创建网桥
sudo nmcli con add type bridge con-name br0 ifname br0
##### 添加物理接口
sudo nmcli con add type ethernet slave-type bridge master br0 con-name bridge-slave ifname enp1s0
##### 配置IP
sudo nmcli con modify br0 ipv4.method auto # DHCP
##### 或静态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"
##### 激活配置
sudo nmcli con down "bridge-slave"
sudo nmcli con up br0
四、高级配置选项
####### 1. 添加多个接口
bash
##### 临时添加
sudo brctl addif br0 enp2s0
##### 永久配置 (Debian/Ubuntu)
##### /etc/network/interfaces
bridge_ports enp1s0 enp2s0
####### 2. 配置STP参数
bash
##### 启用STP
sudo brctl stp br0 on
##### 设置桥优先级 (0-65535)
sudo brctl setbridgeprio br0 16384
##### 设置转发延迟 (秒)
sudo brctl setfd br0 4
####### 3. 查看网桥信息
bash
##### 显示所有网桥
brctl show
##### 显示MAC地址表
brctl showmacs br0
##### 显示STP信息
brctl showstp br0
五、验证配置
bash
##### 检查网桥状态
brctl show
##### 输出示例:
bridge name bridge id STP enabled interfaces
br0 8000.001122334455 no enp1s0
##### 检查IP分配
ip addr show br0
##### 测试连通性
ping -c 4 8.8.8.8
##### 检查路由
ip route show
六、故障排除
####### 1. 网桥未启动
bash
##### 手动启动接口
sudo ip link set enp1s0 up
sudo ip link set br0 up
##### 检查服务状态
sudo systemctl status networking # Debian
sudo systemctl status network # CentOS
####### 2. 物理接口未加入网桥
bash
##### 检查配置文件语法
brctl show br0
##### 临时添加接口
sudo brctl addif br0 enp1s0
####### 3. IP地址未分配
bash
##### 手动获取IP
sudo dhclient br0
##### 检查DHCP客户端
journalctl -u dhclient
####### 4. 网络不通
bash
##### 检查防火墙
sudo iptables -L -n -v
##### 允许桥接流量
sudo ufw allow in on br0
七、移除网桥
bash
##### 临时移除
sudo ip link set br0 down
sudo brctl delbr br0
##### 永久移除
##### 1. 删除相关配置文件
##### 2. 恢复物理接口配置
##### 3. 重启网络服务
关键注意事项
-
服务冲突:
bash# 禁用NetworkManager (可选) sudo systemctl stop NetworkManager sudo systemctl disable NetworkManager
-
物理接口配置原则:
- 物理接口不应有IP地址
- 所有流量应通过网桥
-
无线接口限制:
- 大多数无线网卡不支持传统桥接
- 替代方案:使用macvlan或ipvlan
-
云环境特殊处理:
bash# AWS/Azure需保持主接口DHCP sudo nmcli con modify "Wired Connection" ipv4.ignore-auto-dns true
-
配置文件权限:
bashsudo chmod 644 /etc/network/interfaces sudo chown root:root /etc/network/interfaces
虽然
brctl
是传统工具,但在某些老系统(如CentOS 6)或特定场景下仍是可靠选择。对于新系统,建议使用iproute2
或 NetworkManager 等现代工具。
使用 NetworkManager 配置永久网桥 (Bridge)
使用 NetworkManager (通过 nmcli
工具) 配置网桥是最现代、最推荐的方法之一,它能自动处理配置持久化并兼容各种 Linux 发行版。以下是详细步骤:
配置前准备
-
检查 NetworkManager 状态:
bashsudo systemctl status NetworkManager # 若未运行: sudo systemctl enable --now NetworkManager
-
识别网络接口:
bashnmcli device status # 记录要桥接的物理接口 (如 enp3s0)
配置步骤
####### 1. 创建网桥接口
bash
sudo nmcli con add type bridge ifname br0 con-name br0
type bridge
: 指定创建网桥ifname br0
: 设备名称为 br0con-name br0
: 连接名称为 br0 (可自定义)
####### 2. 添加物理接口到网桥
bash
sudo nmcli con add type bridge-slave ifname enp3s0 master br0 con-name bridge-slave
type bridge-slave
: 指定为网桥从属设备ifname enp3s0
: 物理接口名称master br0
: 归属的网桥con-name bridge-slave
: 从属连接名称
####### 3. 配置网桥网络设置
######## 选项 A: 使用 DHCP
bash
sudo nmcli con modify br0 ipv4.method auto
######## 选项 B: 使用静态 IP
bash
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"
####### 4. 禁用 STP (可选)
bash
sudo nmcli con modify br0 bridge.stp no
####### 5. 激活配置
bash
##### 关闭原物理接口连接
sudo nmcli con down "Wired connection 1" # 替换为实际连接名
##### 启动网桥和从属连接
sudo nmcli con up br0
sudo nmcli con up bridge-slave
验证配置
bash
##### 查看网桥状态
nmcli con show br0
##### 检查物理接口绑定
bridge link show br0
##### 测试网络连通性
ping -I br0 -c 4 google.com
##### 查看IP分配
ip -c addr show br0
高级配置选项
####### 添加多个物理接口
bash
sudo nmcli con add type bridge-slave ifname enp4s0 master br0 con-name bridge-slave2
sudo nmcli con up bridge-slave2
####### 配置 VLAN
bash
##### 创建 VLAN 接口
sudo nmcli con add type vlan con-name vlan10 dev br0 id 10
##### 配置 VLAN IP
sudo nmcli con modify vlan10 ipv4.method manual ipv4.addresses "10.10.10.2/24"
####### 设置 MTU
bash
sudo nmcli con modify br0 ethernet.mtu 9000
故障排除
####### 1. 网桥未激活
bash
##### 查看日志
journalctl -u NetworkManager --since "5 minutes ago"
##### 手动激活
sudo nmcli con up br0
####### 2. 物理接口未绑定
bash
##### 检查物理接口状态
ip link show enp3s0
##### 重新绑定
sudo nmcli con down bridge-slave
sudo nmcli con up bridge-slave
####### 3. IP 地址未分配
bash
##### 手动请求 DHCP
sudo dhclient -v br0
##### 检查 DHCP 服务器
journalctl -u NetworkManager | grep DHCP
####### 4. 网络不通
bash
##### 检查防火墙
sudo iptables -L -v -n
##### 允许桥接流量
sudo firewall-cmd --add-interface=br0 --zone=trusted
sudo firewall-cmd --runtime-to-permanent
永久生效说明
所有配置通过 nmcli
修改后:
- 自动保存到
/etc/NetworkManager/system-connections/
- 系统重启后自动恢复
- 无需额外操作即可永久生效
移除网桥
bash
##### 删除网桥连接
sudo nmcli con delete br0
##### 删除从属连接
sudo nmcli con delete bridge-slave
##### 恢复物理接口
sudo nmcli con add type ethernet ifname enp3s0 con-name "Wired Connection"
sudo nmcli con up "Wired Connection"
关键注意事项
-
物理接口处理:
- 物理接口不应有独立 IP
- 所有网络流量通过网桥
-
服务依赖:
bashsudo systemctl disable systemd-networkd # 避免冲突
-
远程操作风险:
-
配置时建议在本地控制台操作
-
使用
nohup
防止 SSH 断开中断:bashnohup sudo nmcli con up br0 &
-
-
无线网卡限制:
- 标准无线网卡不支持桥接
- 替代方案:使用
macvlan
或ipvlan
-
云环境特殊处理:
bash# AWS/Azure需保持主接口DHCP sudo nmcli con modify "Wired Connection" ipv4.ignore-auto-dns true
配置示例 (静态IP)
bash
##### 创建网桥
sudo nmcli con add type bridge ifname br0 con-name br0
##### 添加物理接口
sudo nmcli con add type bridge-slave ifname enp3s0 master br0 con-name bridge-slave
##### 配置静态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"
##### 禁用STP
sudo nmcli con modify br0 bridge.stp no
##### 激活配置
sudo nmcli con down "Wired connection 1"
sudo nmcli con up br0
sudo nmcli con up bridge-slave
此方法适用于:
- RHEL/CentOS 7+
- Ubuntu 18.04+
- Fedora
- Debian 10+
- 其他使用 NetworkManager 的现代发行版
如何用"systemd-networkd"配置网桥bridge,并使其永久生效
使用 systemd-networkd
配置永久网桥 (Bridge)
systemd-networkd
是现代化的 Linux 网络管理服务,适用于大多数主流发行版(Ubuntu 18.04+, Debian 10+, CentOS 8+, Fedora, Arch 等)。以下是详细配置指南:
配置前准备
####### 1. 启用 systemd-networkd
bash
sudo systemctl enable --now systemd-networkd
sudo systemctl disable NetworkManager # 禁用冲突服务
sudo systemctl stop NetworkManager # 立即停止
####### 2. 识别网络接口
bash
ip -c link show
##### 记录物理接口名称 (如 enp3s0)
永久配置步骤
####### 1. 创建网桥设备定义
bash
sudo nano /etc/systemd/network/10-br0.netdev
ini
[NetDev]
Name=br0
Kind=bridge
##### 可选高级配置
[Bridge]
STP=off # 禁用生成树协议
HelloTimeSec=2 # BPDU发送间隔
ForwardDelaySec=0 # 转发延迟
####### 2. 配置物理接口加入网桥
bash
sudo nano /etc/systemd/network/20-enp3s0-bridge.network
ini
[Match]
Name=enp3s0 # 替换为你的物理接口名
[Network]
Bridge=br0 # 加入网桥br0
####### 3. 配置网桥网络设置
bash
sudo nano /etc/systemd/network/30-br0-up.network
######## 选项 A: DHCP 自动获取 IP
ini
[Match]
Name=br0
[Network]
DHCP=ipv4 # 启用IPv4 DHCP
##### IPv6配置(可选)
##### DHCP=ipv6
######## 选项 B: 静态 IP 配置
ini
[Match]
Name=br0
[Network]
##### IPv4配置
Address=192.168.1.100/24
Gateway=192.168.1.1
DNS=8.8.8.8
DNS=8.8.4.4
##### IPv6配置(可选)
##### Address=2001:db8::1/64
##### Gateway=fe80::1
####### 4. 应用配置
bash
##### 重启服务
sudo systemctl restart systemd-networkd
##### 检查状态
networkctl status br0
验证配置
bash
##### 查看网桥状态
bridge link
##### 检查IP分配
ip -c addr show br0
##### 测试网络连通性
ping -c 4 google.com
##### 查看服务日志
journalctl -u systemd-networkd -f
高级配置选项
####### 1. 添加多个物理接口
bash
sudo nano /etc/systemd/network/25-enp4s0-bridge.network
ini
[Match]
Name=enp4s0
[Network]
Bridge=br0
####### 2. 配置 VLAN
bash
##### 创建VLAN接口
sudo nano /etc/systemd/network/40-br0-vlan10.network
ini
[Match]
Name=br0
[Network]
VLAN=br0.10
####### 3. 设置 MTU
bash
##### 在网桥定义中添加
sudo nano /etc/systemd/network/10-br0.netdev
ini
[NetDev]
Name=br0
Kind=bridge
MTUBytes=9000
####### 4. 配置绑定接口 (Bond)
bash
##### 创建绑定接口
sudo nano /etc/systemd/network/10-bond0.netdev
ini
[NetDev]
Name=bond0
Kind=bond
bash
##### 将绑定接口加入网桥
sudo nano /etc/systemd/network/20-bond0-bridge.network
ini
[Match]
Name=bond0
[Network]
Bridge=br0
故障排除
####### 1. 网桥未激活
bash
##### 手动启用接口
sudo ip link set enp3s0 up
sudo ip link set br0 up
##### 检查配置文件语法
sudo networkd-dispatcher --debug
####### 2. IP 地址未分配
bash
##### 手动获取DHCP
sudo dhclient -v br0
##### 检查DHCP服务
journalctl -u systemd-networkd | grep DHCP
####### 3. 网络不通
bash
##### 检查路由
ip route show
##### 允许桥接流量通过防火墙
sudo firewall-cmd --add-interface=br0 --zone=trusted
sudo firewall-cmd --runtime-to-permanent
####### 4. 服务未启动
bash
##### 检查依赖关系
systemd-analyze verify /etc/systemd/network/*
##### 重新加载配置
sudo systemctl daemon-reload
sudo systemctl restart systemd-networkd
永久生效说明
所有配置通过 /etc/systemd/network/
目录下的文件管理:
- 系统启动时自动应用
- 服务重启后配置不变
- 按文件名顺序处理配置(建议使用数字前缀)
移除网桥
bash
##### 删除配置文件
sudo rm /etc/systemd/network/*br0*
##### 重启服务
sudo systemctl restart systemd-networkd
##### 恢复物理接口
sudo nano /etc/systemd/network/20-enp3s0.network
ini
[Match]
Name=enp3s0
[Network]
DHCP=ipv4
关键注意事项
-
文件处理顺序:
- 文件按字母数字顺序处理
- 建议命名:
10-*.netdev
,20-*.network
,30-*.network
-
物理接口处理:
- 物理接口不应有自己的 IP 地址
- 所有网络配置应在网桥接口上进行
-
无线接口限制:
bash# 无线网卡需特殊处理 [Match] Name=wlp4s0 [Network] Bridge=br0 WirelessRegDomain=country-code # 设置国家代码
-
云环境特殊处理:
bash# AWS/Azure需保持主接口配置 [Match] Name=eth0 [Network] DHCP=ipv4 UseRoutes=false # 防止覆盖默认路由
完整配置示例
####### 文件结构
bash
/etc/systemd/network/
├── 10-br0.netdev # 网桥定义
├── 20-enp3s0-bridge.network # 物理接口加入网桥
└── 30-br0-up.network # 网桥网络配置
####### 静态IP配置示例 10-br0.netdev:
ini
[NetDev]
Name=br0
Kind=bridge
MTUBytes=1500
20-enp3s0-bridge.network:
ini
[Match]
Name=enp3s0
[Network]
Bridge=br0
30-br0-up.network:
ini
[Match]
Name=br0
[Network]
Address=192.168.1.100/24
Gateway=192.168.1.1
DNS=8.8.8.8
DNS=8.8.4.4
此配置会在系统启动时自动创建
br0
网桥,将物理接口enp3s0
绑定到网桥,并分配静态 IP 地址。所有配置永久生效,适合服务器和嵌入式设备使用。
通过 Netplan 配置 Linux 网桥 (Bridge) 详解
Netplan 是 Ubuntu 18.04+ 和部分其他 Linux 发行版的默认网络配置工具,它提供简洁的 YAML 语法来管理复杂网络配置。以下是使用 Netplan 配置网桥的完整指南:
一、Netplan 配置文件基础
######### 1. 配置文件位置
bash
/etc/netplan/
- 主配置文件通常为
00-installer-config.yaml
或50-cloud-init.yaml
- 自定义配置建议创建新文件:
99-bridge-config.yaml
######### 2. 配置文件结构
yaml
network:
version: 2
renderer: networkd # 或 NetworkManager
ethernets:
# 物理接口配置
bridges:
# 网桥配置
二、单接口网桥配置
######### 示例:静态 IP 网桥
yaml
network:
version: 2
renderer: networkd
ethernets:
enp3s0: # 物理接口
dhcp4: no # 禁用独立IP
dhcp6: no
bridges:
br0: # 网桥配置
interfaces: [enp3s0] # 绑定的物理接口
addresses: [192.168.1.100/24]
gateway4: 192.168.1.1
nameservers:
addresses: [8.8.8.8, 8.8.4.4]
parameters:
stp: false # 关闭生成树协议
forward-delay: 0 # 转发延迟(秒)
######### 示例:DHCP 网桥
yaml
network:
version: 2
renderer: networkd
ethernets:
enp3s0:
dhcp4: no
dhcp6: no
bridges:
br0:
interfaces: [enp3s0]
dhcp4: true # 启用DHCPv4
dhcp6: false # 禁用DHCPv6
parameters:
stp: true # 启用生成树协议
max-age: 10 # STP最大等待时间(秒)
三、高级配置场景
######### 1. 多接口网桥
yaml
bridges:
br0:
interfaces: [enp3s0, enp4s0] # 多个物理接口
dhcp4: true
######### 2. VLAN 接口桥接
yaml
ethernets:
enp3s0:
dhcp4: no
vlans:
vlan10:
id: 10
link: enp3s0
bridges:
br-vlan10:
interfaces: [vlan10] # 桥接VLAN接口
addresses: [10.10.10.2/24]
######### 3. 绑定接口桥接
yaml
ethernets:
enp3s0: { dhcp4: no }
enp4s0: { dhcp4: no }
bonds:
bond0:
interfaces: [enp3s0, enp4s0]
parameters:
mode: 802.3ad # LACP聚合
lacp-rate: fast
bridges:
br-bond:
interfaces: [bond0] # 桥接绑定接口
dhcp4: true
######### 4. 无线接口桥接
yaml
wifis:
wlp5s0:
access-points:
"my-wifi":
password: "s3cr3tp@ss"
dhcp4: no
bridges:
br-wifi:
interfaces: [wlp5s0] # 桥接无线接口
dhcp4: true
四、网桥参数详解
######### 核心参数
参数 | 默认值 | 说明 |
---|---|---|
interfaces |
- | 绑定的物理接口列表 |
dhcp4 |
false | 启用IPv4 DHCP |
dhcp6 |
false | 启用IPv6 DHCP |
addresses |
- | 静态IP地址列表 (e.g. ["192.168.1.100/24"] ) |
gateway4 |
- | IPv4默认网关 |
gateway6 |
- | IPv6默认网关 |
nameservers |
- | DNS服务器配置 |
######### 高级网桥参数
yaml
parameters:
stp: true/false # 生成树协议 (默认 false)
forward-delay: 0-30 # STP转发延迟 (秒)
hello-time: 1-10 # STP BPDU发送间隔 (秒)
max-age: 6-40 # STP最大等待时间 (秒)
ageing-time: 0-1000000 # MAC地址老化时间 (秒)
priority: 0-65535 # STP桥优先级
path-cost: {interface: cost} # 接口路径成本
port-priority: {interface: priority} # 接口优先级
五、配置应用与验证
######### 1. 应用配置
bash
## 检查配置语法
sudo netplan generate
## 应用配置
sudo netplan apply
## 调试模式 (不永久应用)
sudo netplan --debug apply
######### 2. 验证命令
bash
## 查看网桥状态
bridge link
## 检查IP配置
ip -c addr show br0
## 查看STP状态
bridge stp show br0
## 测试网络连通性
ping -I br0 -c 4 8.8.8.8
## 查看Netplan渲染结果
ls -l /run/systemd/network/
六、故障排除指南
######### 1. 网桥未创建
bash
## 查看日志
journalctl -u systemd-networkd -f
## 检查YAML语法
sudo netplan generate --debug
######### 2. IP地址未分配
bash
## 手动获取IP
sudo dhclient -v br0
## 检查DHCP请求
journalctl -u systemd-networkd | grep DHCP
######### 3. 物理接口未绑定
bash
## 查看接口状态
networkctl status enp3s0
## 检查绑定关系
bridge link show br0
######### 4. 无线桥接问题
bash
## 检查WPA认证
journalctl -u wpa_supplicant
## 确认驱动支持
iw list | grep "interface modes" -A 8
七、云环境特殊配置
######### AWS/Azure 兼容配置
yaml
network:
version: 2
ethernets:
eth0: # 云环境主接口
dhcp4: true
dhcp4-overrides:
use-routes: false # 防止覆盖默认路由
bridges:
br0:
interfaces: [eth0]
dhcp4: true
dhcp4-overrides:
use-routes: true # 通过网桥获取路由
八、最佳实践建议
-
配置顺序
yaml# 推荐命名方案 00-primary.yaml # 主网络配置 10-bridge.yaml # 网桥配置 20-vlans.yaml # VLAN配置
-
安全优化
yamlbridges: br0: parameters: stp: true # 启用STP防止环路 # 防火墙规则 firewall: - connection: in from: [192.168.1.0/24] to: [0.0.0.0/0] port: 80 allow: true
-
性能调优
yamlparameters: ageing-time: 300 # 减少MAC表老化时间 forward-delay: 0 # 禁用STP时设0 hello-time: 1 # 快速检测网络变化
-
备份与恢复
bash# 备份配置 sudo cp /etc/netplan/*.yaml ~/netplan-backup/ # 恢复配置 sudo netplan apply sudo systemctl restart systemd-networkd
完整配置示例
######### 生产环境多接口网桥
yaml
network:
version: 2
renderer: networkd
ethernets:
enp3s0:
dhcp4: no
enp4s0:
dhcp4: no
bonds:
bond0:
interfaces: [enp3s0, enp4s0]
parameters:
mode: 802.3ad
lacp-rate: fast
mii-monitor-interval: 100
bridges:
br0:
interfaces: [bond0]
addresses: [192.168.1.100/24]
gateway4: 192.168.1.1
nameservers:
addresses: [8.8.8.8, 1.1.1.1]
parameters:
stp: true
priority: 4096
forward-delay: 4
hello-time: 2
max-age: 20
path-cost:
bond0: 50
通过 Netplan 配置网桥,您可以使用简洁的 YAML 语法管理复杂的网络拓扑,配置会自动转换为底层网络服务(networkd 或 NetworkManager)的配置,并在重启后永久生效。
bridge网桥的 STP 是什么?
网桥的 STP(生成树协议)详解
STP(Spanning Tree Protocol,生成树协议) 是网络交换机/网桥中用于防止网络环路的关键协议,由 IEEE 802.1D 标准定义。在 Linux 网桥中,STP 同样扮演着重要角色。
🔄 一、STP 的核心作用
-
环路预防:
- 当网络中存在冗余路径时(如多个交换机互联),可能形成广播风暴
- STP 自动阻塞冗余路径中的某些端口,确保数据仅通过单一路径传输
- 避免数据包无限循环导致网络瘫痪
-
故障冗余:
- 当主路径故障时,STP 自动启用备份路径
- 实现毫秒级切换(通常 30-50 秒收敛时间)
🧠 二、STP 工作原理
####### 1. 选举过程
- 根桥选举 :网络中所有交换机比较 Bridge ID(优先级 + MAC 地址),数值最小者成为根桥
- 根端口选举 :每个非根交换机选择通往根桥成本最低的端口
- 指定端口选举 :每个网段选择最接近根桥的端口
####### 2. 端口状态
状态 | 持续时间 | 功能描述 |
---|---|---|
阻塞 | 20秒 | 不转发数据,监听BPDU |
侦听 | 15秒 | 构建活动拓扑,不转发用户数据 |
学习 | 15秒 | 构建MAC表,不转发用户数据 |
转发 | 稳定状态 | 正常转发数据 |
禁用 | - | 管理员关闭端口 |
####### 3. BPDU(桥协议数据单元)
- 交换机间每 2秒 发送一次
- 包含:根桥ID、路径成本、发送者ID等信息
- 用于拓扑计算和故障检测
⚙️ 三、Linux 网桥的 STP 实现
####### 1. 查看 STP 状态
bash
brctl showstp br0
##### 输出示例:
br0
bridge id 8000.000000000000
designated root 8000.000000000000
root port 0 path cost 0
max age 20.00 bridge max age 20.00
hello time 2.00 bridge hello time 2.00
forward delay 15.00 bridge forward delay 15.00
ageing time 300.00
hello timer 0.00 tcn timer 0.00
topology change timer 0.00 gc timer 0.33
flags
enp3s0 (1)
port id 8001 state forwarding
designated root 8000.000000000000 path cost 100
designated bridge 8000.000000000000 message age timer 17.77
designated port 8001 forward delay timer 0.00
designated cost 0 hold timer 0.00
####### 2. 关键配置参数
参数 | 默认值 | 说明 | 修改命令 |
---|---|---|---|
stp |
off | 启用/禁用STP | brctl stp br0 on |
priority |
32768 | 网桥优先级 (0-61440) | brctl setbridgeprio br0 4096 |
hello_time |
2秒 | BPDU发送间隔 | brctl sethello br0 1 |
max_age |
20秒 | 最大BPDU等待时间 | brctl setmaxage br0 15 |
forward_delay |
15秒 | 侦听→学习→转发延迟 | brctl setfd br0 10 |
🌐 四、STP 演进版本
协议 | 标准 | 特点 | 收敛时间 |
---|---|---|---|
STP | IEEE 802.1D | 原始版本,单生成树 | 30-50秒 |
RSTP | IEEE 802.1w | 快速生成树,端口状态简化 | 1-3秒 |
MSTP | IEEE 802.1s | 多实例生成树,支持VLAN负载均衡 | <1秒 |
PVST+ | Cisco专有 | 每VLAN生成树 | 依赖配置 |
Linux 支持 RSTP (802.1w):
bashbridge link set dev enp3s0 cost 10 # 设置端口成本 bridge link set dev enp3s0 priority 32 # 设置端口优先级
🛠️ 五、Linux 网桥 STP 配置示例
####### 1. 启用 STP
bash
##### 创建网桥
sudo ip link add name br0 type bridge
##### 启用STP
sudo ip link set br0 type bridge stp_state 1
##### 添加接口
sudo ip link set enp3s0 master br0
####### 2. 调整参数
bash
##### 设置优先级 (0=根桥)
sudo ip link set br0 type bridge priority 0
##### 缩短收敛时间
sudo ip link set br0 type bridge forward_delay 1000 # 毫秒
sudo ip link set br0 type bridge max_age 2000
####### 3. 永久配置 (systemd-networkd)
ini
##### /etc/systemd/network/10-br0.netdev
[NetDev]
Name=br0
Kind=bridge
[Bridge]
STP=yes
Priority=0
ForwardDelaySec=1
MaxAgeSec=2
⚠️ 六、使用注意事项
-
环路风险:
- 禁用 STP 时确保网络无物理环路
- 临时测试环境可关闭 STP 减少延迟
-
性能影响:
- STP 计算消耗 CPU 资源
- 超大型网络建议使用 RSTP/MSTP
-
云环境限制:
bash# 公有云通常禁用STP ip link set br0 type bridge stp_state 0
-
无线网络:
- 无线网桥慎用 STP,可能导致不稳定
- 替代方案:使用动态路由协议 (如 OLSR)
通过合理配置 STP,可在保持网络冗余的同时避免广播风暴。对于现代数据中心,建议采用更先进的 SPB (802.1aq) 或 TRILL 协议替代传统 STP。
1️⃣ 参考 1
Linux 创建网桥 (Bridge) 的完整方法指南
在 Linux 系统中,创建网桥有多种方法,适用于不同场景和需求。以下是七种主要方法,包括临时和永久配置方案:
######## 一、临时配置方法(重启失效)
############## 1. 使用 iproute2
(现代推荐)
bash
### 创建网桥
sudo ip link add name br0 type bridge
### 添加物理接口
sudo ip link set enp1s0 master br0
### 启用设备
sudo ip link set br0 up
sudo ip link set enp1s0 up
### 配置IP (可选)
sudo dhclient br0 # DHCP获取
sudo ip addr add 192.168.1.100/24 dev br0 # 静态IP
############## 2. 使用 brctl
(传统工具)
bash
### 安装工具
sudo apt install bridge-utils # Debian/Ubuntu
sudo yum install bridge-utils # CentOS/RHEL
### 创建网桥
sudo brctl addbr br0
### 添加接口
sudo brctl addif br0 enp1s0
### 启用设备
sudo ip link set br0 up
sudo ip link set enp1s0 up
######## 二、永久配置方法(重启生效)
############## 3. 使用 NetworkManager (桌面/服务器通用)
bash
### 创建网桥
sudo nmcli con add type bridge ifname br0 con-name br0
### 添加物理接口
sudo nmcli con add type bridge-slave ifname enp1s0 master br0
### 配置网络
sudo nmcli con modify br0 ipv4.method auto # DHCP
sudo nmcli con modify br0 ipv4.method manual \
ipv4.addresses 192.168.1.100/24 \
ipv4.gateway 192.168.1.1 # 静态IP
### 激活配置
sudo nmcli con up br0
############## 4. 使用 systemd-networkd (轻量级服务器)
bash
### 创建配置文件
### /etc/systemd/network/10-br0.netdev
[NetDev]
Name=br0
Kind=bridge
### /etc/systemd/network/20-enp1s0.network
[Match]
Name=enp1s0
[Network]
Bridge=br0
### /etc/systemd/network/30-br0.network
[Match]
Name=br0
[Network]
DHCP=ipv4
### 启用服务
sudo systemctl enable --now systemd-networkd
############## 5. 使用 netplan (Ubuntu 18.04+)
yaml
### /etc/netplan/01-bridge.yaml
network:
version: 2
bridges:
br0:
interfaces: [enp1s0]
dhcp4: yes
parameters:
stp: false
forward-delay: 0
############## 6. 传统配置文件方法 Debian/Ubuntu (/etc/network/interfaces
):
conf
auto br0
iface br0 inet dhcp
bridge_ports enp1s0
bridge_stp off
CentOS/RHEL (/etc/sysconfig/network-scripts/
):
ini
### ifcfg-br0
DEVICE=br0
TYPE=Bridge
BOOTPROTO=dhcp
ONBOOT=yes
### ifcfg-enp1s0
DEVICE=enp1s0
ONBOOT=yes
BRIDGE=br0
############## 7. 图形化工具
-
virt-manager (KVM虚拟化):
- 打开虚拟机管理器
- 选择主机 → 编辑 → 连接详情 → 虚拟网络
- 添加新网络 → 选择"桥接"模式
-
nm-connection-editor (NetworkManager GUI):
bashsudo nm-connection-editor
- 点击"+"添加新连接
- 选择"Bridge"类型
- 配置网桥和从属接口
######## 三、方法对比表
方法 | 适用场景 | 永久生效 | 复杂度 | 推荐发行版 |
---|---|---|---|---|
iproute2 | 快速测试 | ❌ | ⭐ | 所有 |
brctl | 老系统兼容 | ❌ | ⭐⭐ | CentOS 6, Debian 9 |
NetworkManager | 桌面/现代服务器 | ✅ | ⭐⭐ | Fedora, RHEL, Ubuntu Desktop |
systemd-networkd | 无GUI服务器 | ✅ | ⭐⭐ | Debian 10+, Ubuntu Server 18.04+ |
netplan | Ubuntu云服务器 | ✅ | ⭐⭐ | Ubuntu 18.04+ |
传统配置 | 老版本服务器 | ✅ | ⭐⭐⭐ | CentOS 7, Debian 9 |
GUI工具 | 桌面环境 | ✅ | ⭐ | GNOME/KDE桌面 |
######## 四、特殊场景配置
############## 1. 多接口网桥
bash
### iproute2
sudo ip link set enp2s0 master br0
### NetworkManager
sudo nmcli con add type bridge-slave ifname enp2s0 master br0
############## 2. VLAN接口桥接
bash
### 创建VLAN接口
sudo ip link add link enp1s0 name enp1s0.10 type vlan id 10
### 将VLAN接口加入网桥
sudo ip link set enp1s0.10 master br0
############## 3. 绑定接口桥接
bash
### 创建绑定接口
sudo ip link add bond0 type bond mode 802.3ad
### 添加从属接口
sudo ip link set enp1s0 master bond0
sudo ip link set enp2s0 master bond0
### 将绑定接口加入网桥
sudo ip link set bond0 master br0
######## 五、验证与维护
############## 1. 验证命令
bash
### 查看网桥
bridge link # 或 brctl show
### 检查IP配置
ip -c addr show br0
### 测试连通性
ping -I br0 8.8.8.8
### 查看STP状态
bridge stp show br0
############## 2. 故障排查
bash
### 检查服务状态
sudo systemctl status systemd-networkd
sudo journalctl -u NetworkManager
### 查看内核日志
dmesg | grep bridge
### 检查防火墙规则
sudo iptables -L -v -n
############## 3. 移除网桥
bash
### 临时移除
sudo ip link set br0 down
sudo ip link delete br0
### 永久移除
### 删除相关配置文件后重启网络服务
######## 六、最佳实践建议
-
安全考虑:
bash# 禁用未使用的协议 sudo sysctl -w net.bridge.bridge-nf-call-iptables=1 sudo sysctl -w net.bridge.bridge-nf-call-arptables=1
-
性能优化:
bash# 禁用STP (无环路环境) sudo ip link set br0 type bridge stp_state 0 # 增加缓存 sudo sysctl -w net.core.netdev_max_backlog=10000
-
云环境特殊处理:
bash# AWS/Azure需保持主接口配置 [Network] DHCP=ipv4 UseRoutes=false
-
无线网络桥接:
bash# 使用macvlan替代传统桥接 sudo ip link add macvlan0 link wlan0 type macvlan mode bridge
选择建议:
- 临时测试:使用
iproute2
- 桌面环境:使用 NetworkManager (GUI或CLI)
- 服务器环境:Ubuntu 用
netplan
,其他用systemd-networkd
- 旧系统:使用
brctl
或传统配置文件
通过以上方法,您可以灵活地在各种 Linux 环境中创建和管理网桥,满足从简单测试到生产环境的各种需求。
在 Linux 中创建网桥(Bridge)主要有以下几种方法,各有特点和适用场景:
📌 核心概念 网桥是一个虚拟的二层网络设备 ,用于连接多个网络接口(物理的 eth0
、wlan0
或虚拟的 tap
、veth
),让它们像连接在同一交换机上一样通信。
🛠 方法一:使用 brctl
(传统方式,来自 bridge-utils
包) 特点: 经典工具,简单直观,但较老,部分新发行版可能默认不安装或逐渐被取代。 步骤:
-
安装工具:
bash# Debian/Ubuntu sudo apt-get install bridge-utils # CentOS/RHEL sudo yum install bridge-utils
-
创建网桥:
bashsudo brctl addbr br0
-
添加接口到网桥:
bashsudo brctl addif br0 eth0 sudo brctl addif br0 eth1
-
启动网桥:
bashsudo ip link set br0 up
-
配置IP地址(可选):
bashsudo ip addr add 192.168.1.100/24 dev br0
-
查看网桥状态:
bashbrctl show
⚠️ 注意: 添加物理接口(如 eth0
)前,需先移除其原有IP地址。
🧰 方法二:使用 iproute2
(推荐,现代标准方式) 特点: 利用 ip link
命令,无需额外安装,功能强大且是内核原生支持的方式。 步骤:
-
创建网桥:
bashsudo ip link add name br0 type bridge
-
启动网桥:
bashsudo ip link set br0 up
-
添加接口到网桥:
bashsudo ip link set eth0 master br0 sudo ip link set eth1 master br0
-
配置IP地址(可选):
bashsudo ip addr add 192.168.1.100/24 dev br0
-
查看网桥信息:
baship link show master br0 # 查看从属接口 bridge link show # 查看所有网桥关联
📋 方法三:通过配置文件(持久化配置) 1. Debian/Ubuntu (/etc/network/interfaces
)
bash
auto br0
iface br0 inet static
bridge_ports eth0 eth1
address 192.168.1.100
netmask 255.255.255.0
gateway 192.168.1.1
重启网络服务生效:sudo systemctl restart networking
- RHEL/CentOS/Rocky Linux (
/etc/sysconfig/network-scripts/
)
-
网桥配置文件:
ifcfg-br0
iniDEVICE=br0 TYPE=Bridge IPADDR=192.168.1.100 NETMASK=255.255.255.0 GATEWAY=192.168.1.1 ONBOOT=yes BOOTPROTO=static
-
物理接口配置:
ifcfg-eth0
iniDEVICE=eth0 ONBOOT=yes BRIDGE=br0 # 关键!指定所属网桥
重启网络服务:sudo systemctl restart NetworkManager
或 sudo systemctl restart network
⚙️ 方法四:使用 NetworkManager
(图形化或命令行) 命令行工具 nmcli
:
bash
# 创建网桥并添加接口
sudo nmcli connection add type bridge con-name br0 ifname br0
sudo nmcli connection add type bridge-slave con-name br0-port1 ifname eth0 master br0
sudo nmcli connection add type bridge-slave con-name br0-port2 ifname eth1 master br0
# 启动网桥
sudo nmcli connection up br0
# 配置IP
sudo nmcli connection modify br0 ipv4.addresses 192.168.1.100/24 ipv4.method manual
图形化界面: 在 GNOME/KDE 的网络设置中,选择 "Add Bridge" 并添加接口即可。
🔧 方法五:使用 systemd-networkd
(适用于现代系统)
-
创建网桥配置文件:
/etc/systemd/network/br0.netdev
ini[NetDev] Name=br0 Kind=bridge
-
创建网桥网络配置:
/etc/systemd/network/br0.network
ini[Match] Name=br0 [Network] Address=192.168.1.100/24 Gateway=192.168.1.1
-
配置从属接口:
/etc/systemd/network/eth0.network
ini[Match] Name=eth0 [Network] Bridge=br0
重启服务生效:sudo systemctl restart systemd-networkd
🔄 方法六:临时性创建(通过 sysfs
) 仅用于测试,重启后失效:
bash
# 创建网桥
sudo ip link add name br0 type bridge
sudo ip link set br0 up
# 添加接口
sudo ip link set eth0 master br0
sudo ip link set eth1 master br0
📌 关键注意事项
- 物理接口处理:
- 添加到网桥的物理接口(如
eth0
)不应配置IP地址 ,IP应配在网桥br0
上。 - 原
eth0
的配置文件需修改为"从属"模式(如配置文件中所示)。
- 添加到网桥的物理接口(如
- 持久化:
- 除
ip
命令外,其他方法均需配置系统网络文件 或使用NetworkManager
保存配置。
- 除
- 服务重启:
- 修改配置文件后需重启网络服务(如
network
、NetworkManager
、systemd-networkd
)。
- 修改配置文件后需重启网络服务(如
- 防火墙:
- 网桥流量受
iptables
/nftables
规则约束,注意FORWARD
链和bridge
模块。
- 网桥流量受
- 虚拟化应用:
- KVM/QEMU 虚拟机可通过
-net bridge,br=br0
接入网桥。 - Docker 可使用
--network=bridge
(默认网桥)或创建自定义网桥。
- KVM/QEMU 虚拟机可通过
💡 典型应用场景
- 虚拟机网络: 让 KVM/VirtualBox 虚拟机通过
tap
接口接入物理网络。 - 容器网络: Docker/Podman 容器通过
veth pair
连接到网桥。 - 网络隔离: 结合 VLAN 或防火墙实现复杂网络分段。
- 无线路由器: 将 LAN 口(
eth0
)和 Wi-Fi 接口(wlan0
)桥接在同一局域网。
💬 建议优先使用
iproute2
(方法二) 或 配置文件持久化(方法三) ,现代系统可考虑systemd-networkd
(方法五) 。对于桌面用户,NetworkManager
的图形界面或nmcli
是最便捷的选择。操作前务必备份网络配置文件!
2️⃣ 参考 2
Linux创建网桥(Bridge)的多种方法及详细步骤
######## 一、传统工具:bridge-utils ############## 1. 安装工具
bash
### Debian/Ubuntu
sudo apt install bridge-utils
### CentOS/RHEL
sudo yum install bridge-utils
############## 2. 临时配置(重启后失效)
bash
### 创建网桥
sudo brctl addbr br0
### 添加物理接口到网桥
sudo brctl addif br0 eth0
sudo brctl addif br0 eth1
### 启用网桥
sudo ip link set br0 up
### 分配IP地址(可选)
sudo ip addr add 192.168.1.100/24 dev br0
############## 3. 持久化配置 ##################### Ubuntu(使用ifupdown) 编辑 /etc/network/interfaces
:
plaintext
auto br0
iface br0 inet static
address 192.168.1.100
netmask 255.255.255.0
gateway 192.168.1.1
bridge_ports eth0 eth1
bridge_stp off
auto eth0
iface eth0 inet manual
auto eth1
iface eth1 inet manual
##################### CentOS(传统网络脚本) 创建 /etc/sysconfig/network-scripts/ifcfg-br0
:
ini
DEVICE=br0
TYPE=Bridge
BOOTPROTO=static
IPADDR=192.168.1.100
NETMASK=255.255.255.0
GATEWAY=192.168.1.1
ONBOOT=yes
修改物理网卡配置(如 /etc/sysconfig/network-scripts/ifcfg-eth0
):
ini
DEVICE=eth0
TYPE=Ethernet
ONBOOT=yes
BRIDGE=br0
BOOTPROTO=none
######## 二、现代工具:iproute2 ############## 1. 临时配置(重启后失效)
bash
### 创建网桥
sudo ip link add name br0 type bridge
### 添加物理接口到网桥
sudo ip link set eth0 master br0
sudo ip link set eth1 master br0
### 启用网桥
sudo ip link set br0 up
### 分配IP地址(可选)
sudo ip addr add 192.168.1.100/24 dev br0
############## 2. 持久化配置 ##################### Ubuntu(netplan) 编辑 /etc/netplan/01-netcfg.yaml
:
yaml
network:
version: 2
bridges:
br0:
dhcp4: yes # 或静态IP
interfaces: [eth0, eth1]
ethernets:
eth0:
dhcp4: no
eth1:
dhcp4: no
应用配置:
bash
sudo netplan apply
##################### CentOS(NetworkManager keyfile) 创建 /etc/NetworkManager/system-connections/br0.nmconnection
:
ini
[connection]
id=br0
type=bridge
interface-name=br0
[ipv4]
method=auto # 或静态IP配置
[bridge]
stp=false
创建从属接口配置 /etc/NetworkManager/system-connections/br0-slave-eth0.nmconnection
:
ini
[connection]
id=br0-slave-eth0
type=ethernet
interface-name=eth0
master=br0
slave-type=bridge
重启NetworkManager:
bash
sudo systemctl restart NetworkManager
######## 三、使用nmcli(NetworkManager命令行) ############## 1. 创建网桥并配置IP
bash
### 创建网桥
sudo nmcli connection add type bridge ifname br0 con-name br0 autoconnect yes
### 配置静态IP
sudo nmcli connection modify br0 ipv4.addresses "192.168.1.100/24"
sudo nmcli connection modify br0 ipv4.gateway "192.168.1.1"
sudo nmcli connection modify br0 ipv4.dns "8.8.8.8"
sudo nmcli connection modify br0 ipv4.method manual
### 添加物理接口到网桥
sudo nmcli connection add type ethernet ifname eth0 master br0
### 启用网桥
sudo nmcli connection up br0
sudo nmcli connection up bridge-slave-eth0
############## 2. 验证配置
bash
nmcli connection show
ip addr show br0
brctl show
######## 四、不同发行版的特定方法 ############## 1. Arch Linux(systemd-networkd) 创建 /etc/systemd/network/br0.network
:
ini
[Match]
Name=br0
[Network]
Address=192.168.1.100/24
Gateway=192.168.1.1
DNS=8.8.8.8
创建物理接口配置 /etc/systemd/network/eth0.network
:
ini
[Match]
Name=eth0
[Network]
Bridge=br0
启用服务:
bash
sudo systemctl enable systemd-networkd
sudo systemctl restart systemd-networkd
############## 2. Open vSwitch(高级网络功能)
bash
### 安装OVS
sudo apt install openvswitch-switch # Ubuntu
sudo yum install openvswitch # CentOS
### 创建网桥
sudo ovs-vsctl add-br ovs-br0
### 添加物理接口到网桥
sudo ovs-vsctl add-port ovs-br0 eth0
### 配置IP地址
sudo ip addr add 192.168.1.100/24 dev ovs-br0
sudo ip link set ovs-br0 up
######## 五、总结与选择建议
方法 | 适用场景 | 持久化方式 |
---|---|---|
bridge-utils | 传统Linux系统,简单网络环境 | 编辑 /etc/sysconfig/network-scripts/ 或 /etc/network/interfaces |
iproute2 | 现代Linux系统,喜欢命令行工具 | netplan(Ubuntu)、NetworkManager(CentOS) |
nmcli | 使用NetworkManager的桌面或服务器环境 | 自动持久化到NetworkManager配置文件 |
Open vSwitch | 需要高级网络功能(如VLAN、隧道)的复杂场景 | 类似传统工具,需额外配置OVS |
发行版特定工具 | 追求与系统集成度高的用户 | 遵循发行版文档(如netplan、systemd-networkd) |
根据需求选择工具:
- 简单场景 :优先使用
iproute2
或nmcli
。 - 虚拟化环境 :推荐
Open vSwitch
或virsh
集成工具。 - 持久化需求:根据发行版选择对应的配置方式(如Ubuntu的netplan)。
在Linux系统中,创建网桥(Bridge)可以通过多种方法实现。以下是几种常见的方法:
使用 brctl
工具 brctl
是一个传统的用于管理Linux以太网桥的命令行工具。
-
安装
bridge-utils
首先确保你的系统上已经安装了bridge-utils
软件包。如果没有安装,可以使用以下命令进行安装:-
对于基于Debian的系统(如Ubuntu),使用:
bashsudo apt-get install bridge-utils
-
对于基于Red Hat的系统(如CentOS, Fedora),使用:
bashsudo yum install bridge-utils
-
-
创建网桥 创建一个新的网桥并添加网络接口到该网桥。
bashsudo brctl addbr br0 sudo brctl addif br0 eth0
其中
br0
是新创建的网桥名称,eth0
是你想要加入网桥的物理或虚拟网络接口名称。 -
配置IP地址 为网桥分配一个IP地址(如果需要的话)。例如:
bashsudo ip addr add 192.168.1.1/24 dev br0 sudo ip link set dev br0 up
使用 iproute2
从内核版本3.15开始,Linux引入了对网桥更好的支持,可以直接通过 ip
命令来创建和管理网桥。
-
创建网桥 使用
ip
命令创建一个新的网桥:bashsudo ip link add name br0 type bridge
-
添加网络接口 将一个现有的网络接口添加到这个网桥中:
bashsudo ip link set dev eth0 master br0
-
启动网桥和网络接口 启动网桥以及相关联的网络接口:
bashsudo ip link set dev br0 up sudo ip link set dev eth0 up
-
配置IP地址 如果需要,给网桥配置一个IP地址:
bashsudo ip addr add 192.168.1.1/24 dev br0
使用 NetworkManager 如果你更倾向于图形界面或者希望通过NetworkManager来管理网络设置,也可以使用它来创建和管理网桥。
-
通过nmcli创建网桥 使用
nmcli
命令行工具来创建网桥:bashsudo nmcli connection add type bridge ifname br0 sudo nmcli connection add type bridge-slave ifname eth0 master br0
-
激活网桥 激活新建的网桥连接:
bashsudo nmcli connection up br0 sudo nmcli connection up bridge-slave-eth0
以上就是在Linux系统中创建网桥的一些基本方法。根据你的具体需求和环境,可以选择最适合的一种方式。
3️⃣ 参考 3
在 Linux 中创建网桥(Bridge)有多种方法,适用于不同的场景和网络管理工具。以下是常见的创建网桥的方式:
一、使用 brctl
命令行工具(传统方法) 适用场景:适合临时配置或不使用 NetworkManager 的系统(如服务器)。
-
安装工具
bashsudo apt-get install bridge-utils # Debian/Ubuntu sudo yum install bridge-utils # CentOS/RHEL
-
创建网桥并绑定物理网卡
bashsudo brctl addbr br0 # 创建网桥 br0 sudo brctl addif br0 eth0 # 将物理网卡 eth0 加入网桥 sudo ip link set eth0 up # 启用物理网卡 sudo ip link set br0 up # 启用网桥
-
配置 IP 地址
bashsudo ip addr add 192.168.1.10/24 dev br0 # 给网桥分配 IP sudo ip route add default via 192.168.1.1 dev br0 # 设置默认网关
-
持久化配置(可选)
-
Debian/Ubuntu :编辑
/etc/network/interfaces
confauto br0 iface br0 inet static address 192.168.1.10 netmask 255.255.255.0 gateway 192.168.1.1 bridge_ports eth0 bridge_stp off # 禁用生成树协议
-
CentOS/RHEL :创建
/etc/sysconfig/network-scripts/ifcfg-br0
confDEVICE=br0 TYPE=Bridge BOOTPROTO=static IPADDR=192.168.1.10 NETMASK=255.255.255.0 GATEWAY=192.168.1.1 ONBOOT=yes
-
二、使用 NetworkManager(推荐) 适用场景:适合桌面环境或使用 NetworkManager 的系统。
-
创建网桥连接
bashsudo nmcli connection add type bridge con-name br0 ifname br0
-
配置 IP 地址
bashsudo nmcli connection modify br0 ipv4.method manual \ ipv4.addresses 192.168.1.10/24 \ ipv4.gateway 192.168.1.1 \ ipv4.dns 8.8.8.8 \ connection.autoconnect yes
-
添加物理网卡到网桥
bashsudo nmcli connection add type bridge-slave ifname eth0 master br0
-
激活连接
bashsudo nmcli connection up br0 sudo nmcli connection up bridge-slave-eth0
三、使用 ip link
命令(无依赖) 适用场景:轻量级系统或容器环境(如 Alpine Linux)。
-
创建网桥
bashsudo ip link add name br0 type bridge sudo ip link set dev br0 up
-
添加物理网卡
bashsudo ip link set dev eth0 master br0 sudo ip link set dev eth0 up
-
配置 IP
bashsudo ip addr add 192.168.1.10/24 dev br0
四、使用 systemd-networkd 适用场景:使用 systemd 的系统(如 Fedora、Arch Linux)。
-
创建网桥配置文件
bashsudo nano /etc/systemd/network/00-br0.netdev
ini[NetDev] Name=br0 Kind=bridge
-
配置物理网卡
bashsudo nano /etc/systemd/network/01-eth0.network
ini[Match] Name=eth0 [Network] Bridge=br0
-
配置网桥 IP
bashsudo nano /etc/systemd/network/10-br0.network
ini[Match] Name=br0 [Network] Address=192.168.1.10/24 Gateway=192.168.1.1 DNS=8.8.8.8
-
重启服务
bashsudo systemctl restart systemd-networkd
五、使用 nm-connection-editor(图形界面) 适用场景:适合不熟悉命令行的用户。
- 打开 网络连接 工具(GNOME 桌面可通过设置进入)。
- 点击 添加 → 网桥。
- 配置网桥参数:
- IPv4 设置:选择静态 IP 或 DHCP。
- 端口 选项卡:添加物理网卡(如 eth0)。
- 保存并激活连接。
六、Docker 网络桥接 适用场景:容器环境。
-
创建 Docker 网桥
bashsudo docker network create -d bridge my-bridge
-
查看网桥信息
bashdocker network inspect my-bridge
-
将容器连接到网桥
bashdocker run --network=my-bridge -itd alpine
七、KVM/QEMU 虚拟机桥接 适用场景:虚拟化环境。
- 配置宿主机网桥(参考方法一或二)。
- 在 virt-manager 中为虚拟机添加网络设备,选择已创建的网桥(如
br0
)。
选择建议
- 临时测试 :使用
ip link
或brctl
命令。 - 桌面环境:优先使用 NetworkManager 或图形界面工具。
- 服务器环境:使用 systemd-networkd 或传统配置文件。
- 容器/虚拟化:使用 Docker 网桥或 KVM 桥接。
配置完成后,可通过 brctl show
或 ip link show type bridge
验证网桥是否创建成功。如需持久化配置,需将设置写入对应配置文件或使用 NetworkManager 保存连接。
在 Linux 系统中,创建网桥(Bridge)的方法主要有以下几种,涵盖命令行工具、配置文件及网络管理工具:
一、使用 brctl
工具(传统方法) 适用场景 :快速创建临时网桥或旧版系统(需安装 bridge-utils
)。
步骤:
-
安装工具 :
bash# Debian/Ubuntu sudo apt install bridge-utils # CentOS/RHEL sudo yum install bridge-utils
-
创建网桥 :
bashsudo brctl addbr br0 # 创建名为 br0 的网桥
-
添加物理网卡 :
bashsudo brctl addif br0 eth0 # 将 eth0 加入网桥
-
启用网桥 :
bashsudo ifconfig br0 up # 启动网桥
验证:
bash
brctl show # 查看网桥信息
引用:、、、
二、使用 ip
命令(现代方法) 适用场景 :临时配置或脚本自动化(无需额外工具)。
步骤:
-
创建网桥 :
bashsudo ip link add br0 type bridge # 创建网桥
-
启用网桥 :
bashsudo ip link set br0 up # 启动网桥
-
添加物理网卡 :
bashsudo ip link set eth0 master br0 # 将 eth0 绑定到网桥
-
配置 IP 地址 :
bashsudo ip addr add 192.168.1.100/24 dev br0 # 为网桥分配 IP
验证:
bash
ip addr show br0 # 查看网桥 IP 信息
引用:、、
三、通过 NetworkManager(持久化配置) 适用场景 :需要永久生效的配置(推荐)。
步骤:
-
创建网桥连接 :
bashsudo nmcli con add type bridge ifname br0 con-name br0
-
添加物理网卡到网桥 :
bashsudo nmcli con add type bridge-slave ifname eth0 master br0
-
配置 IP 地址 :
bashsudo nmcli con modify br0 ipv4.addresses 192.168.1.100/24 sudo nmcli con modify br0 ipv4.method manual # 或 auto 使用 DHCP
-
启用网桥 :
bashsudo nmcli con up br0
验证:
bash
nmcli con show br0 # 查看网桥状态
引用:、
四、通过配置文件(永久生效) 适用场景 :系统重启后自动生效(需编辑网络配置文件)。
步骤(以 CentOS 为例):
-
修改物理网卡配置 :
ini# /etc/sysconfig/network-scripts/ifcfg-eth0 DEVICE=eth0 TYPE=Ethernet BOOTPROTO=none ONBOOT=yes BRIDGE=br0 # 绑定到网桥 br0
-
创建网桥配置文件 :
ini# /etc/sysconfig/network-scripts/ifcfg-br0 DEVICE=br0 TYPE=Bridge BOOTPROTO=dhcp # 或 static 配置静态 IP ONBOOT=yes
-
重启网络服务 :
bashsudo systemctl restart NetworkManager
引用:、
五、使用 systemd-networkd
(高级配置) 适用场景 :基于 systemd 的系统,需细粒度控制。
步骤:
-
创建网桥配置文件 :
ini# /etc/systemd/network/10-br0.netdev [NetDev] Name=br0 Kind=bridge
-
添加物理网卡到网桥 :
ini# /etc/systemd/network/20-eth0.network [Match] Name=eth0 [Network] Bridge=br0
-
重启服务 :
bashsudo systemctl restart systemd-networkd
引用:、
六、临时 vs 永久配置
- 临时生效 :使用
brctl
或ip
命令,重启后失效。 - 永久生效:通过配置文件(如 NetworkManager、systemd)或修改网络配置文件。
总结 Linux 创建网桥的核心方法包括:
- 命令行工具 :
brctl
(传统)、ip
(现代)。 - 网络管理工具 :NetworkManager(
nmcli
)、systemd-networkd。 - 配置文件:适用于永久生效场景。
根据需求选择合适方法,推荐使用 ip
命令快速测试,或通过 NetworkManager 实现持久化配置。
4️⃣ 参考 4
在 Linux 中配置网桥启用 STP(生成树协议)的方法
在 Linux 中启用 STP 可防止网络环路,主要通过 bridge-utils
工具或 iproute2
实现。以下是详细步骤:
1. 安装必要工具
bash
# Debian/Ubuntu
sudo apt install bridge-utils
# CentOS/RHEL
sudo yum install bridge-utils
2. 创建网桥并启用 STP 方法一:使用 brctl
命令
bash
# 创建网桥
sudo brctl addbr br0
# 启用 STP
sudo brctl stp br0 on
# 添加接口到网桥
sudo brctl addif br0 eth0
sudo brctl addif br0 eth1
# 启动网桥
sudo ip link set br0 up
-
验证 STP 状态 :
bashbrctl showstp br0
输出应包含
STP enabled: yes
和端口状态(forwarding
/blocking
)
方法二:使用 ip
命令(推荐)
bash
# 创建网桥时直接启用 STP
sudo ip link add name br0 type bridge stp_state 1
# 添加接口
sudo ip link set eth0 master br0
sudo ip link set eth1 master br0
# 启动设备
sudo ip link set br0 up
sudo ip link set eth0 up
sudo ip link set eth1 up
-
验证 :
baship -d link show br0 | grep STP # 输出应包含:stp_state 1
3. 配置 STP 参数(可选)
bash
# 设置网桥优先级(0-65535,值越小优先级越高)
sudo ip link set dev br0 type bridge priority 4096
# 设置 Hello 时间(秒)
sudo ip link set dev br0 type bridge hello_time 2
# 设置转发延迟(秒)
sudo ip link set dev br0 type bridge forward_delay 15
# 设置最大老化时间(秒)
sudo ip link set dev br0 type bridge max_age 20
📌 优先级说明 :根桥通常设置为最低优先级(如
0
或4096
),其他网桥使用更高值
4. 持久化配置 Debian/Ubuntu (编辑 /etc/network/interfaces
):
bash
auto br0
iface br0 inet dhcp
bridge_ports eth0 eth1
bridge_stp on # 启用 STP
bridge_fd 15 # 转发延迟
bridge_hello 2 # Hello 时间
bridge_maxage 20 # 最大老化时间
CentOS/RHEL (创建 /etc/sysconfig/network-scripts/ifcfg-br0
):
bash
DEVICE=br0
TYPE=Bridge
BOOTPROTO=dhcp
ONBOOT=yes
DELAY=15
STP=yes
5. 验证与监控
bash
# 查看 STP 详细信息
bridge stp show
# 实时监控 BPDU 包
sudo tcpdump -i br0 -nn -v ether proto 0x0000
- 关键指标 :
root port
:指向根桥的端口blocking port
:被阻塞的端口(防止环路)BPDU counters
:发送/接收的 BPDU 包数量
注意事项
- 收敛时间:STP 需要 30-50 秒收敛,期间网络会暂停
- 版本兼容 :
- Linux 默认支持标准 STP(IEEE 802.1D)
- 如需 RSTP/MSTP,需内核支持
CONFIG_BRIDGE_IGMP_SNOOPING
- 物理环路测试:启用 STP 后,故意连接环路,观察端口是否被阻塞
- 性能影响:STP 会占用少量 CPU 资源处理 BPDU
⚠️ 故障排查:若端口未阻塞,检查:
- 所有交换机是否启用 STP
- 物理连接是否正确
- BPDU 是否被防火墙过滤
在 Linux 系统中,创建网桥(Bridge)主要通过以下几种方法实现,每种方法适用于不同场景(如临时配置、持久化配置或图形化管理)。以下是主流方法的详细说明:
🌉 一、使用 brctl
命令(传统工具) 适用场景 :兼容旧版系统,适合快速临时配置。
依赖工具 :bridge-utils
包。
步骤:
bash
# 安装工具(Debian/Ubuntu)
sudo apt install bridge-utils
# 创建网桥
sudo brctl addbr br0
# 添加物理网卡(如 eth0)到网桥
sudo brctl addif br0 eth0
# 启用网桥
sudo ip link set br0 up
# 分配 IP(可选,动态获取或静态配置)
sudo dhclient br0 # DHCP
sudo ip addr add 192.168.1.100/24 dev br0 # 静态 IP
验证 :brctl show
查看网桥及绑定接口。
🔧 二、使用 iproute2
命令(现代推荐) 适用场景 :无需额外安装工具,支持更精细控制。
步骤:
bash
# 创建网桥
sudo ip link add name br0 type bridge
# 启用网桥
sudo ip link set br0 up
# 添加物理网卡到网桥(需先清除原 IP)
sudo ip addr flush dev eth0
sudo ip link set eth0 master br0
# 配置 IP(可选)
sudo ip addr add 192.168.1.100/24 dev br0
高级设置:
- 禁用 STP(防环协议):
sudo ip link set br0 type bridge stp_state 0
- 调整 MTU:
sudo ip link set br0 mtu 9000
。
📡 三、使用 NetworkManager(图形化/持久化配置) 适用场景 :桌面环境或需要持久化配置的系统。
方法 (命令行 nmcli
):
bash
# 创建网桥
sudo nmcli con add type bridge con-name br0 ifname br0
# 添加物理网卡到网桥
sudo nmcli con add type bridge-slave ifname eth0 master br0
# 启用网桥
sudo nmcli con up br0
# 配置 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.method manual
注意:需关闭原物理网卡连接(避免冲突)。
📂 四、通过系统配置文件(持久化) Debian/Ubuntu(Netplan) 编辑 /etc/netplan/01-netcfg.yaml
:
yaml
network:
version: 2
renderer: networkd
bridges:
br0:
interfaces: [eth0]
dhcp4: yes # 或静态 IP
# addresses: [192.168.1.100/24]
# gateway4: 192.168.1.1
应用配置:sudo netplan apply
。
RHEL/CentOS(ifcfg 脚本)
-
创建网桥配置
/etc/sysconfig/network-scripts/ifcfg-br0
:iniDEVICE=br0 TYPE=Bridge BOOTPROTO=dhcp ONBOOT=yes
-
修改物理网卡配置(如
/etc/sysconfig/network-scripts/ifcfg-eth0
):iniDEVICE=eth0 ONBOOT=yes BRIDGE=br0
重启网络服务:sudo systemctl restart NetworkManager
。
⚙️ 五、高级配置与故障排除
-
禁用 STP :
若网络无环路风险,可关闭 STP 减少延迟:
bashsudo nmcli con modify br0 bridge.stp no # NetworkManager echo 0 > /sys/class/net/br0/bridge/stp_state # sysfs
-
防火墙与权限:
- 允许桥接流量:
sudo iptables -I FORWARD -m physdev --physdev-is-bridged -j ACCEPT
- 用户权限:将用户加入
libvirt
组以管理虚拟网络。
- 允许桥接流量:
-
验证与监控:
- 查看网桥状态:
bridge link
或ip link show type bridge
- 测试连通性:虚拟机或容器应获取与宿主机同网段的 IP。
- 查看网桥状态:
💎 总结建议
- 临时测试 :用
iproute2
快速创建(命令生效重启后消失)。 - 持久化配置 :Debian/Ubuntu 选 Netplan ,RHEL/CentOS 用 ifcfg 脚本 ,桌面环境用 NetworkManager。
- 虚拟化支持 :为 KVM 虚拟机配置桥接时,需在
virt-manager
中将虚拟网卡绑定到网桥(如br0
)。
故障提示:若虚拟机无网络,检查网桥 IP 分配、物理网卡绑定状态及防火墙规则。
5️⃣ 参考 5
以下是 Linux 系统中创建网桥(Bridge)的常用方法,涵盖临时命令、持久化配置及不同工具的实现方式,根据使用场景选择:
🔧 一、基础命令行工具(临时生效,重启失效) 1. 使用 brctl
(传统工具) 需安装 bridge-utils
包:
bash
# Debian/Ubuntu
sudo apt install bridge-utils
# RHEL/CentOS
sudo yum install bridge-utils
操作命令:
bash
sudo brctl addbr br0 # 创建网桥 br0
sudo brctl addif br0 eth0 # 将物理网卡 eth0 加入网桥
sudo ip link set br0 up # 启用网桥
sudo ip addr add 192.168.1.100/24 dev br0 # 配置 IP(可选)
验证 :brctl show
查看网桥及绑定接口。
2. 使用 ip
命令(推荐,无需额外安装)
bash
sudo ip link add name br0 type bridge # 创建网桥
sudo ip link set eth0 master br0 # 绑定物理网卡
sudo ip link set br0 up # 启用网桥
sudo ip addr add 192.168.1.100/24 dev br0 # 配置 IP
移除接口 :sudo ip link set eth0 nomaster
。
⚙️ 二、持久化配置(重启有效) 1. Debian/Ubuntu(修改 /etc/network/interfaces
)
bash
# 物理网卡 eth0 配置为手动模式
auto eth0
iface eth0 inet manual
# 网桥 br0 配置静态 IP 并绑定 eth0
auto br0
iface br0 inet static
address 192.168.1.100/24
gateway 192.168.1.1
bridge_ports eth0 # 绑定物理网卡
bridge_stp off # 关闭 STP 避免延迟
生效 :sudo systemctl restart networking
。
2. RHEL/CentOS(修改网卡配置文件)
-
物理网卡配置 (
/etc/sysconfig/network-scripts/ifcfg-eth0
):iniDEVICE=eth0 TYPE=Ethernet BOOTPROTO=none ONBOOT=yes BRIDGE=br0 # 关联到网桥
-
网桥配置 (
/etc/sysconfig/network-scripts/ifcfg-br0
):iniDEVICE=br0 TYPE=Bridge BOOTPROTO=static IPADDR=192.168.1.100 NETMASK=255.255.255.0 GATEWAY=192.168.1.1 ONBOOT=yes
生效 :sudo systemctl restart network
。
🌐 三、NetworkManager 管理(图形化或命令行) 1. 图形界面 打开 nm-connection-editor
→ 删除原物理网卡连接 → 新建 Bridge 类型连接,绑定物理网卡并配置 IP。
2. 命令行(nmcli
)
bash
# 创建网桥 br0
sudo nmcli con add type bridge ifname br0 con-name br0
# 绑定物理网卡 eth0
sudo nmcli con add type bridge-slave ifname eth0 master br0
# 配置静态 IP(或改用 ipv4.method auto 启用 DHCP)
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 up br0
禁用 STP :sudo nmcli con modify br0 bridge.stp no
。
⚡️ 四、高级配置与优化
-
关闭 STP:避免网络环路检测延迟,提升性能(适合无环拓扑)。
-
调整 MTU :
bashsudo ip link set br0 mtu 9000 # 启用 Jumbo 帧(需硬件支持)
-
防火墙规则 :允许桥接流量转发:
bashsudo iptables -I FORWARD -m physdev --physdev-is-bridged -j ACCEPT
-
IP 转发 :启用内核参数:
bashecho "net.ipv4.ip_forward=1" | sudo tee /etc/sysctl.d/99-ip-forward.conf sudo sysctl -p
💎 方法对比与选择建议
方法 | 适用场景 | 持久性 | 复杂度 |
---|---|---|---|
brctl /ip |
临时测试、快速调试 | 否 | 低 |
配置文件 | 服务器生产环境(无 NetworkManager) | 是 | 中 |
nmcli |
桌面环境或需动态管理 | 是 | 中高 |
💡 操作注意:
- 物理网卡加入网桥后不再直接持有 IP,需通过网桥接口配置。
- 虚拟机使用桥接网络时,在 virt-manager 中选择网桥名称(如
br0
)即可。
在 Linux 中创建网络桥接(Bridge)的常见方法有以下几种,涵盖临时配置、永久配置及不同发行版的工具:
1. 使用 brctl
工具(传统方法) 安装(部分系统需手动安装):
bash
# Debian/Ubuntu
sudo apt install bridge-utils
# RHEL/CentOS
sudo yum install bridge-utils
临时创建桥接(重启失效):
bash
# 创建桥接
sudo brctl addbr br0
# 将物理网卡(如enp3s0)加入桥接
sudo brctl addif br0 enp3s0
# 启动桥接
sudo ip link set br0 up
# 验证
brctl show
永久配置 : 需编辑网络配置文件(如 /etc/network/interfaces
或 Netplan),见下文方法3。
2. 使用 iproute2
命令(无需额外安装) 临时创建桥接:
bash
# 创建桥接
sudo ip link add name br0 type bridge
# 将物理网卡加入桥接
sudo ip link set enp3s0 master br0
# 启动设备
sudo ip link set br0 up
sudo ip link set enp3s0 up
# 验证
ip link show br0
bridge link
3. 通过 Netplan
配置(Ubuntu 18.04+) 编辑 YAML 文件(如 /etc/netplan/01-netcfg.yaml
):
yaml
network:
version: 2
renderer: networkd
ethernets:
enp3s0: # 物理网卡
dhcp4: no # 禁用原网卡IP
bridges:
br0:
interfaces: [enp3s0] # 绑定物理网卡
dhcp4: yes # 桥启用DHCP
parameters:
stp: false # 禁用生成树协议
应用配置:
bash
sudo netplan apply
4. 使用 NetworkManager
(RHEL/CentOS/Ubuntu) 命令行工具 nmcli
:
bash
# 创建桥接
sudo nmcli connection add type bridge con-name br0 ifname br0
# 添加物理网卡到桥接
sudo nmcli connection add type bridge-slave con-name br0-port1 ifname enp3s0 master br0
# 启动桥接
sudo nmcli connection up br0
图形界面:
- 打开
NetworkManager
或nm-connection-editor
。 - 新建连接 → 类型选择
Bridge
,配置名称和接口。 - 添加从属设备(物理网卡)。
5. 手动编辑网络脚本(传统方式) Debian/Ubuntu (编辑 /etc/network/interfaces
):
bash
# 物理网卡配置
auto enp3s0
iface enp3s0 inet manual
# 桥接配置
auto br0
iface br0 inet dhcp
bridge_ports enp3s0
bridge_stp off
RHEL/CentOS (编辑 /etc/sysconfig/network-scripts/ifcfg-*
):
bash
# 文件 ifcfg-br0
DEVICE=br0
TYPE=Bridge
IPADDR=192.168.1.10
NETMASK=255.255.255.0
ONBOOT=yes
# 文件 ifcfg-enp3s0(物理网卡)
DEVICE=enp3s0
TYPE=Ethernet
BRIDGE=br0
ONBOOT=yes
6. 使用 systemd-networkd
(轻量级服务) 配置文件示例 (保存到 /etc/systemd/network/
):
-
物理网卡配置文件 (如
10-enp3s0.network
):ini[Match] Name=enp3s0 [Network] Bridge=br0
-
桥接配置文件 (如
20-br0.netdev
和20-br0.network
):ini# 20-br0.netdev [NetDev] Name=br0 Kind=bridge
ini# 20-br0.network [Match] Name=br0 [Network] DHCP=ipv4
-
重启服务 :
bashsudo systemctl restart systemd-networkd
7. 通过 Cockpit Web 控制台(适用于初学者)
-
安装 Cockpit:
bashsudo apt install cockpit # Debian/Ubuntu sudo yum install cockpit # CentOS/RHEL
-
访问
https://<服务器IP>:9090
。 -
进入 Networking → Add bridge,按向导配置。
总结对比
方法 | 适用场景 | 持久性 | 复杂度 |
---|---|---|---|
brctl / ip 命令 |
临时测试、快速调试 | 临时 | 低 |
Netplan / nmcli |
Ubuntu/RHEL/CentOS 永久配置 | 永久 | 中 |
手动编辑配置文件 | 传统系统或无 NetworkManager 环境 | 永久 | 高 |
systemd-networkd |
轻量级服务(如容器环境) | 永久 | 中 |
Cockpit | 图形化管理、新手友好 | 永久 | 低 |
选择方法时需结合发行版工具习惯和实际需求(如是否需持久化)。
6️⃣ 参考 6
在Linux系统中,创建网桥(Bridge)主要有以下几种方法,涵盖命令行临时配置和持久化配置:
方法1:使用 ip
命令(临时生效,重启失效)
bash
# 创建网桥
sudo ip link add name br0 type bridge
# 启动网桥
sudo ip link set br0 up
# 将物理接口(如eth0)加入网桥
sudo ip link set eth0 master br0
# 配置网桥IP地址(可选)
sudo ip addr add 192.168.1.100/24 dev br0
方法2:使用传统 brctl
工具
bash
# 安装工具(Debian/Ubuntu)
sudo apt install bridge-utils
# 创建网桥
sudo brctl addbr br0
# 添加接口到网桥
sudo brctl addif br0 eth0
# 启动网桥
sudo ip link set br0 up
方法3:通过配置文件持久化(不同发行版) Debian/Ubuntu(/etc/network/interfaces
)
bash
# 编辑配置文件
sudo nano /etc/network/interfaces
# 添加以下内容:
auto br0
iface br0 inet dhcp # 或 static
bridge_ports eth0
# 静态IP示例:
# address 192.168.1.100
# netmask 255.255.255.0
# gateway 192.168.1.1
重启网络服务:
bash
sudo systemctl restart networking
RHEL/CentOS(/etc/sysconfig/network-scripts/
)
-
创建网桥配置文件
ifcfg-br0
:iniDEVICE=br0 TYPE=Bridge IPADDR=192.168.1.100 NETMASK=255.255.255.0 ONBOOT=yes BOOTPROTO=static
-
修改物理接口配置(如
ifcfg-eth0
):iniDEVICE=eth0 ONBOOT=yes BRIDGE=br0 # 关键!指向网桥
重启网络服务:
bash
sudo systemctl restart network
方法4:使用 nmcli
(NetworkManager)
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 up br0
# 配置IP(可选,使用DHCP)
sudo nmcli con modify br0 ipv4.method auto
关键命令验证
bash
# 查看网桥状态
brctl show # 传统工具
bridge link # iproute2 工具
# 检查网桥信息
ip link show br0
ip addr show br0
注意事项
-
接口解绑IP :物理接口(如
eth0
)加入网桥前需移除原有IP配置 ,IP应配在网桥br0
上。 -
服务重启:配置文件修改后需重启网络服务生效。
-
虚拟化支持 :网桥常用于KVM/Docker等虚拟化技术,需确保内核模块加载:
bashsudo modprobe bridge
-
防火墙 :若需跨网桥通信,检查防火墙规则(如
iptables
/nftables
)。
根据需求选择合适的方法:临时调试用 ip
命令,持久化用配置文件或 nmcli
。
在 Linux 系统中创建网桥(Bridge)有多种方法,可以根据不同场景和需求选择适合的方式。以下是主要的创建方法:
一、临时创建方法(重启失效) 1. 使用 iproute2
工具(推荐)
bash
# 创建网桥设备
sudo ip link add name br0 type bridge
# 启用 STP(可选)
sudo ip link set br0 type bridge stp_state 1
# 添加物理网卡到网桥
sudo ip link set enp1s0 master br0
# 启动网桥
sudo ip link set br0 up
# 启动物理网卡
sudo ip link set enp1s0 up
2. 使用 bridge-utils
(旧版工具)
bash
# 安装工具
sudo apt install bridge-utils # Debian/Ubuntu
sudo yum install bridge-utils # RHEL/CentOS
# 创建网桥
sudo brctl addbr br0
# 添加物理网卡
sudo brctl addif br0 enp1s0
# 启用网桥
sudo ip link set br0 up
二、永久配置方法(重启有效) 1. NetworkManager 方式(图形界面/命令行)
bash
# 创建网桥
sudo nmcli con add type bridge con-name br0 ifname br0
# 添加物理网卡
sudo nmcli con add type bridge-slave con-name br0-port1 ifname enp1s0 master br0
# 启用连接
sudo nmcli con up br0
2. netplan 配置(Ubuntu 18.04+/Debian)
yaml
# /etc/netplan/01-netcfg.yaml
network:
version: 2
renderer: networkd
bridges:
br0:
dhcp4: yes
interfaces:
- enp1s0
应用配置:sudo netplan apply
3. 传统 ifupdown 配置(Debian/Ubuntu)
bash
# /etc/network/interfaces
auto br0
iface br0 inet dhcp
bridge_ports enp1s0
bridge_stp off # 禁用生成树协议
bridge_fd 0 # 禁用转发延迟
bridge_maxwait 0
4. sysconfig 配置(RHEL/CentOS)
bash
# /etc/sysconfig/network-scripts/ifcfg-br0
DEVICE=br0
TYPE=Bridge
BOOTPROTO=dhcp
ONBOOT=yes
DELAY=0
# /etc/sysconfig/network-scripts/ifcfg-enp1s0
DEVICE=enp1s0
ONBOOT=yes
BRIDGE=br0
NM_CONTROLLED=no
重启服务:sudo systemctl restart NetworkManager
三、通过系统工具创建 1. 使用 systemd-networkd
(无图形界面系统)
ini
# /etc/systemd/network/br0.netdev
[NetDev]
Name=br0
Kind=bridge
# /etc/systemd/network/br0.network
[Match]
Name=br0
[Network]
DHCP=yes
# /etc/systemd/network/br0-bind.network
[Match]
Name=enp1s0
[Network]
Bridge=br0
启用:sudo systemctl restart systemd-networkd
2. 使用 nmtui
(文本界面工具)
bash
sudo nmtui
选择 "Edit a connection" → "Add" → "Bridge"
四、虚拟化专用方法 1. virt-manager 自动创建
- 创建新虚拟机时选择 "Bridge to LAN"
- 自动生成名为
virbr0
的网桥
2. libvirt 手动配置
xml
<!-- /etc/libvirt/qemu/networks/bridge.xml -->
<network>
<name>host-bridge</name>
<forward mode="bridge"/>
<bridge name="br0"/>
</network>
激活:virsh net-define bridge.xml && virsh net-start host-bridge
验证与诊断命令
bash
# 查看所有网桥
bridge link show # 或 brctl show
# 检查网桥详细信息
ip -d link show br0
# 查看STP状态
bridge link | grep "state"
# 测试连通性
ping -I br0 8.8.8.8
# 监控流量
sudo tcpdump -i br0 -n
选择建议
使用场景 | 推荐方法 |
---|---|
临时测试 | iproute2 命令 |
Ubuntu/Debian 现代系统 | netplan 配置 |
RHEL/CentOS | sysconfig 文件 |
服务器无图形界面 | systemd-networkd |
桌面环境 | NetworkManager (nmtui/nmcli) |
KVM 虚拟化 | libvirt 网络配置 |
常见问题解决
-
物理网卡无法加入网桥:
- 确保物理网卡未激活:
sudo ip link set enp1s0 down
- 清除现有IP:
sudo ip addr flush dev enp1s0
- 确保物理网卡未激活:
-
网桥无法获取IP:
bash# 释放并重新获取 sudo dhclient -r br0 && sudo dhclient br0
-
STP 相关问题:
bash# 关闭 STP sudo ip link set br0 type bridge stp_state 0
-
性能优化:
bash# 禁用 GRO/GSO sudo ethtool -K br0 gro off gso off
根据您的发行版版本和具体需求,选择最适合的方法创建和管理 Linux 网桥。
7️⃣ 参考 7
在 Linux 系统中,创建网桥(Bridge)有多种方法,可根据不同发行版和需求选择合适的方式。以下是全面的创建方法总结:
一、临时创建方法(重启失效) 1. 使用 iproute2
命令
bash
# 创建网桥
sudo ip link add name br0 type bridge
# 激活网桥
sudo ip link set br0 up
# 添加物理网卡(如 enp3s0)
sudo ip link set enp3s0 master br0
# 查看状态
bridge link
- 使用
brctl
命令
bash
# 安装工具
sudo apt install bridge-utils # Debian/Ubuntu
sudo yum install bridge-utils # CentOS/RHEL
# 创建网桥
sudo brctl addbr br0
# 添加网卡
sudo brctl addif br0 enp3s0
# 激活网桥
sudo ip link set br0 up
# 查看状态
brctl show
二、永久配置方法(重启生效) 1. Netplan 配置(Ubuntu 18.04+/Debian)
bash
sudo nano /etc/netplan/01-bridge.yaml
yaml
network:
version: 2
renderer: networkd
ethernets:
enp3s0:
dhcp4: no
bridges:
br0:
interfaces: [enp3s0]
dhcp4: yes
parameters:
stp: false
forward-delay: 0
应用配置:
bash
sudo netplan apply
- NetworkManager 配置(CentOS/RHEL/Fedora)
bash
# 创建网桥
sudo nmcli con add type bridge con-name br0 ifname br0
# 添加物理网卡
sudo nmcli con add type bridge-slave ifname enp3s0 master br0
# 启用连接
sudo nmcli con up br0
- 传统 ifupdown 配置(Debian/Ubuntu 旧版)
bash
sudo nano /etc/network/interfaces
conf
auto enp3s0
iface enp3s0 inet manual
auto br0
iface br0 inet dhcp
bridge_ports enp3s0
bridge_stp off
bridge_fd 0
重启网络:
bash
sudo systemctl restart networking
- systemd-networkd 配置(通用方案)
bash
# 创建网桥设备
sudo nano /etc/systemd/network/br0.netdev
ini
[NetDev]
Name=br0
Kind=bridge
bash
# 配置网桥网络
sudo nano /etc/systemd/network/br0.network
ini
[Match]
Name=br0
[Network]
DHCP=yes
bash
# 绑定物理网卡
sudo nano /etc/systemd/network/enp3s0.network
ini
[Match]
Name=enp3s0
[Network]
Bridge=br0
重启服务:
bash
sudo systemctl restart systemd-networkd
- Sysconfig 配置(CentOS/RHEL)
bash
# 物理网卡配置
sudo nano /etc/sysconfig/network-scripts/ifcfg-enp3s0
conf
DEVICE=enp3s0
ONBOOT=yes
BRIDGE=br0
BOOTPROTO=none
bash
# 网桥配置
sudo nano /etc/sysconfig/network-scripts/ifcfg-br0
conf
DEVICE=br0
TYPE=Bridge
ONBOOT=yes
BOOTPROTO=dhcp
STP=off
DELAY=0
重启网络:
bash
sudo systemctl restart network
三、图形界面方法 1. NetworkManager GUI
bash
# 打开网络设置
nm-connection-editor
# 或使用系统设置:
# Ubuntu: 设置 → 网络 → 齿轮图标 → 添加网桥
# Fedora: 设置 → 网络 → "+" 添加网桥
- Cockpit Web 控制台
bash
# 安装 Cockpit
sudo apt install cockpit # Ubuntu/Debian
sudo dnf install cockpit # Fedora/CentOS
# 启动服务
sudo systemctl enable --now cockpit.socket
访问 https://<服务器IP>:9090
→ 网络 → 创建网桥
-
virt-manager(虚拟机专用)
-
打开 virt-manager
-
编辑 → 连接详情 → 虚拟网络
-
添加新网络 → 选择 "Bridge 设备"
四、高级方法 1. 通过 libvirt 创建
xml
<!-- 创建 XML 文件 -->
<network>
<name>host-bridge</name>
<forward mode="bridge"/>
<bridge name="br0"/>
</network>
bash
# 定义并激活网桥
virsh net-define bridge.xml
virsh net-start host-bridge
virsh net-autostart host-bridge
- 使用 netctl(Arch Linux)
bash
# 创建配置文件
sudo cp /etc/netctl/examples/bridge /etc/netctl/br0
# 编辑配置
sudo nano /etc/netctl/br0
conf
Description="Bridge Interface"
Interface=br0
Connection=bridge
BindsToInterfaces=(enp3s0)
IP=dhcp
启用配置:
bash
sudo netctl enable br0
sudo netctl start br0
方法对比表
方法 | 适用场景 | 永久性 | 复杂度 | 推荐发行版 |
---|---|---|---|---|
iproute2 命令 |
临时测试/快速调试 | ❌ | ★☆☆☆☆ | 所有 |
brctl 命令 |
兼容旧系统/脚本操作 | ❌ | ★★☆☆☆ | 所有 |
Netplan | Ubuntu/Debian 新版本 | ✅ | ★★☆☆☆ | Ubuntu 18.04+,Debian 10+ |
NetworkManager | 桌面环境/服务器 | ✅ | ★★☆☆☆ | CentOS, RHEL, Fedora |
systemd-networkd | 无图形界面服务器 | ✅ | ★★★☆☆ | 所有 systemd 系统 |
ifupdown | Debian/Ubuntu 旧版 | ✅ | ★★★☆☆ | Debian, Ubuntu <18.04 |
Sysconfig | CentOS/RHEL 传统配置 | ✅ | ★★★☆☆ | CentOS, RHEL |
图形界面 | 桌面用户/初学者 | ✅ | ★☆☆☆☆ | 所有桌面版 |
libvirt | KVM/QEMU 虚拟化环境 | ✅ | ★★★☆☆ | 虚拟化服务器 |
选择建议
- 临时测试 :
iproute2
或brctl
- Ubuntu 22.04/Debian 12:首选 Netplan
- CentOS 9/RHEL 9:推荐 NetworkManager
- 无 GUI 服务器:systemd-networkd
- 桌面用户:NetworkManager GUI
- 虚拟机专用:libvirt 或 virt-manager
- Arch Linux:使用 netctl
💡 最佳实践:
- 操作前备份网络配置
- 物理服务器通过 IPMI/KVM 操作
- 测试环境先用临时方法验证
- 生产环境使用配置文件永久生效
通过以上方法,您可以根据具体需求在 Linux 系统中灵活创建和管理网桥。
在 Linux 系统中创建网桥(Bridge)有多种方法,根据不同的发行版、网络管理工具和持久化需求,可以选择以下主流方案:
一、临时创建方法(重启失效) 1. 使用 iproute2
工具
bash
# 创建网桥
sudo ip link add name br0 type bridge
# 启用网桥
sudo ip link set br0 up
# 添加物理接口到网桥
sudo ip link set enp3s0 master br0
# 分配 IP(可选)
sudo ip addr add 192.168.1.100/24 dev br0
- 使用
brctl
(bridge-utils)
bash
# 创建网桥
sudo brctl addbr br0
# 添加接口到网桥
sudo brctl addif br0 enp3s0
# 启用网桥
sudo ip link set br0 up
特点:操作简单但重启后失效,适合临时测试
二、永久配置方法(按发行版分类) 1. Debian/Ubuntu(使用 /etc/network/interfaces
)
bash
sudo nano /etc/network/interfaces
ini
# 物理接口配置
auto enp3s0
iface enp3s0 inet manual
# 网桥配置
auto br0
iface br0 inet dhcp
bridge_ports enp3s0
bridge_stp off # 关闭生成树
bridge_fd 0 # 无转发延迟
bridge_maxwait 0 # 无最大等待
- RHEL/CentOS(使用
ifcfg
文件)
bash
# 物理接口配置
sudo nano /etc/sysconfig/network-scripts/ifcfg-enp3s0
ini
DEVICE=enp3s0
ONBOOT=yes
BRIDGE=br0
bash
# 网桥配置
sudo nano /etc/sysconfig/network-scripts/ifcfg-br0
ini
DEVICE=br0
TYPE=Bridge
BOOTPROTO=dhcp
ONBOOT=yes
STP=off
DELAY=0
- Ubuntu 18.04+(使用 Netplan)
bash
sudo nano /etc/netplan/01-netcfg.yaml
yaml
network:
version: 2
renderer: networkd
bridges:
br0:
interfaces: [enp3s0]
dhcp4: true
parameters:
stp: false
forward-delay: 0
- 通用 Systemd-networkd
bash
# 网桥定义
sudo nano /etc/systemd/network/br0.netdev
ini
[NetDev]
Name=br0
Kind=bridge
bash
# 绑定物理接口
sudo nano /etc/systemd/network/bridge-bind.network
ini
[Match]
Name=enp3s0
[Network]
Bridge=br0
三、网络管理工具方法 1. NetworkManager (nmcli)
bash
# 创建网桥
sudo nmcli con add type bridge ifname br0 con-name br0
# 添加物理接口
sudo nmcli con add type bridge-slave ifname enp3s0 master br0
# 启用 DHCP
sudo nmcli con modify br0 ipv4.method auto
# 激活配置
sudo nmcli con up br0
-
NetworkManager 图形界面
-
打开
nm-connection-editor
-
添加 → 选择 "Bridge"
-
添加物理接口作为 "Slave"
-
配置 IP 设置
四、虚拟机专用方法 1. virt-manager
-
打开虚拟网络设置
-
添加新网络 → 选择 "Bridge"
-
指定物理接口
-
分配给虚拟机
-
virsh(命令行)
bash
# 创建桥接网络 XML
cat > br0.xml <<EOF
<network>
<name>br0</name>
<forward mode="bridge"/>
<bridge name="br0"/>
</network>
EOF
# 定义并启动网络
virsh net-define br0.xml
virsh net-start br0
virsh net-autostart br0
五、验证与管理命令
bash
# 查看所有网桥
bridge link # 现代命令
brctl show # 传统命令
# 查看网桥详细信息
ip -d link show br0
# 查看STP状态
brctl showstp br0
# 删除网桥
sudo ip link delete br0
方法对比与选择建议
方法 | 适用场景 | 持久性 | 复杂度 |
---|---|---|---|
iproute2 /brctl |
临时测试/快速配置 | ❌ | ⭐ |
/etc/network/interfaces |
Debian/Ubuntu 传统系统 | ✅ | ⭐⭐ |
ifcfg 文件 |
RHEL/CentOS 7及以下 | ✅ | ⭐⭐ |
Netplan (YAML) | Ubuntu 18.04+ 服务器 | ✅ | ⭐⭐ |
systemd-networkd | 现代发行版(Arch,CoreOS等) | ✅ | ⭐⭐⭐ |
NetworkManager (nmcli) | 带GUI的桌面系统 | ✅ | ⭐⭐ |
virt-manager/virsh | KVM/QEMU 虚拟机环境 | ✅ | ⭐⭐ |