如何在 virt-manager 中配置桥接网络(Bridge 模式) 笔记250710
在 virt-manager 中配置桥接网络(Bridge 模式)可使虚拟机直接接入宿主机的物理网络,获得与物理机同网段的独立 IP。以下是详细操作步骤及注意事项:
📶 一、创建宿主机的网桥设备
在 Linux 系统中创建网桥(bridge)设备有多种方法:
方法 1:使用 iproute2 创建(临时生效)
# 创建网桥 br0
sudo ip link add name br0 type bridge
# 启用网桥
sudo ip link set br0 up
# 将物理网卡(如 enp1s0)加入网桥
sudo ip link set enp1s0 master br0
# 释放物理网卡的 IP(重要!)
sudo ip addr flush dev enp1s0
# 为网桥分配 IP(动态/静态)
sudo dhclient br0 # 动态获取
# 或手动配置静态 IP
sudo ip addr add 192.168.1.100/24 dev br0
方法 2:使用 bridge-utils 工具(旧版推荐)
# 安装工具
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
方法 3:通过NetworkManager永久设置
# 创建网桥接口
sudo nmcli con add type bridge ifname br0 con-name br0
# 将物理网卡加入网桥(关键步骤) con-name及之后部分可以省略, 会自动命名
sudo nmcli con add type bridge-slave ifname <物理网卡名> master br0 con-name 自定义连接名 #### con-name 及之后的NetworkManager专属的连接名可以自
# 设置静态 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 ipv4.method manual
# 或使用 DHCP
sudo nmcli con modify br0 ipv4.method auto定义也可省略
# 关闭原物理网卡连接(避免冲突)
sudo nmcli con down "<原物理网卡连接名>" # 如 "Wired Connection 1"
# 启用网桥
sudo nmcli con up br0
sudo nmcli con up bridge-slave-eno1 # 启动从属连接:cite[1]:cite[3]
禁用 STP(可选,避免网络延迟)
sudo nmcli con modify br0 bridge.stp no:cite[1]:cite[3]:cite[6]
方法 4:通过配置文件永久设置
Debian/Ubuntu (netplan)
# /etc/netplan/01-netcfg.yaml
network:
version: 2
renderer: networkd
bridges:
br0:
dhcp4: yes
interfaces: [enp1s0]
应用配置:
sudo netplan apply
RHEL/CentOS (ifcfg)
# 创建网桥配置文件 /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
重启网络服务:
sudo systemctl restart NetworkManager
查看网桥状态
# 查看所有网桥
bridge link # 或 brctl show
# 查看所有网桥
brctl show # 或 bridge link
💻 二、在 virt-manager 中配置虚拟机桥接网络
- 打开虚拟机硬件配置 右键目标虚拟机 → Edit → Virtual Hardware → NIC。
- 修改网络设置
- Network source → 选择 Bridge device
- Device name → 输入宿主机网桥名称(如 br0)
- Device model → 建议选 virtio(高性能虚拟化驱动)
- 点击 Apply 保存配置。
- 打开虚拟机设置:
- 在 virt-manager 中选择虚拟机 → 点击顶部菜单栏的 "i" 图标(虚拟硬件详情)。
- 修改网络设备:
- 选择 "NIC" 硬件 → 设置 "网络源" 为 "指定共享设备名称"。
- 在 "设备名称" 中填写 "网桥名"。
- 选择 "设备模型" 为
virtio(高性能驱动)。 - 点击 "应用"。
-
打开虚拟机设置:
- 启动 virt-manager:
virt-manager - 选择虚拟机 → 点击 "打开"(需先关闭虚拟机)。
- 启动 virt-manager:
-
修改网络设置:
-
进入 "虚拟硬件" 标签页 → 选择 "NIC" 设备。
-
网络源:选择 "指定共享设备名称"。
-
设备名称:输入桥接设备名(如
br0)。 -
设备模型:推荐
virtio(高性能)。 -
点击 "应用"。
-
-
启动虚拟机:
- 虚拟机将直接通过桥接
br0连接到物理网络,自动获取 IP(由路由器 DHCP 分配)。
- 虚拟机将直接通过桥接
1️⃣ 参考 1
在 virt-manager 中配置桥接网络(Bridge 模式)可使虚拟机直接接入物理网络,获得与宿主机同网段的独立 IP。以下是详细步骤:
前置准备
- 安装必要工具(以 Debian/Ubuntu 为例):
sudo apt install bridge-utils virt-manager libvirt-daemon-system - 停止默认网络:
sudo virsh net-destroy default sudo virsh net-autostart --disable default
步骤 1:创建网桥(物理机操作)
方法一:使用 NetworkManager(推荐)
- 编辑连接(假设物理网卡为
enp3s0):sudo nmcli connection add type bridge con-name br0 ifname br0 sudo nmcli connection add type bridge-slave ifname enp3s0 master br0 - 启用网桥并重启网络:
sudo nmcli connection up br0
方法二:手动编辑配置文件(/etc/netplan/*.yaml)
network:
version: 2
renderer: networkd
bridges:
br0:
interfaces: [enp3s0] # 替换为你的物理网卡
dhcp4: true # 或配置静态 IP
# 静态 IP 示例:
# addresses: [192.168.1.10/24]
# gateway4: 192.168.1.1
# nameservers:
# addresses: [8.8.8.8]
ethernets:
enp3s0: {} # 保留物理网卡空配置
应用配置:
sudo netplan apply
步骤 2:在 virt-manager 中配置桥接
- 打开虚拟机设置:
- 在 virt-manager 中选择虚拟机 → 点击顶部菜单栏的 "i" 图标(虚拟硬件详情)。
- 修改网络设备:
- 选择 "NIC" 硬件 → 设置 "网络源" 为 "指定共享设备名称"。
- 在 "设备名称" 中填写
br0。 - 选择 "设备模型" 为
virtio(高性能驱动)。 - 点击 "应用"。
验证桥接网络
- 在虚拟机内:
- 重启网络服务(如
sudo systemctl restart NetworkManager)。 - 检查 IP 是否与宿主机同网段:
ip addr show
- 重启网络服务(如
- 在宿主机上检查网桥:
输出应包含brctl showbr0和物理网卡(如enp3s0)。
故障排除
- 网桥未激活:
sudo ip link set br0 up # 启用网桥 - 虚拟机无网络:
- 确认
br0已分配 IP(宿主机执行ip addr show br0)。 - 检查防火墙是否允许流量:
sudo iptables -I FORWARD -m physdev --physdev-is-bridged -j ACCEPT
- 确认
- 权限问题:
- 将用户加入
libvirt组:sudo usermod -aG libvirt $USER
- 将用户加入
注意:桥接模式需要物理网络支持 DHCP 或手动配置虚拟机 IP。虚拟机 IP 将由物理路由器分配(或静态配置),与宿主机无关。
通过以上步骤,虚拟机即可通过桥接模式直接接入外部网络。
2️⃣ 参考 2
在 virt-manager 中配置桥接网络(Bridge 模式)可使虚拟机直接连接到物理网络,如同独立主机一样获取 IP 地址。以下是详细步骤:
一、宿主机创建桥接设备
方法 1:使用 NetworkManager(推荐)
- 创建桥接设备
br0:sudo nmcli connection add type bridge con-name br0 ifname br0 - 将物理网卡加入桥接(如
enp1s0):sudo nmcli connection add type bridge-slave con-name br0-slave ifname enp1s0 master br0 - 启动桥接:
sudo nmcli connection up br0
方法 2:手动配置(无 NetworkManager)
- 编辑
/etc/network/interfaces(Debian/Ubuntu):auto br0 iface br0 inet dhcp bridge_ports enp1s0 # 物理网卡名称 bridge_stp off # 关闭生成树协议 - 重启网络服务:
sudo systemctl restart networking
验证桥接:
ip addr show br0 # 检查桥接设备 IP bridge link # 查看桥接成员
二、virt-manager 配置桥接
-
打开虚拟机设置:
- 启动 virt-manager:
virt-manager - 选择虚拟机 → 点击 "打开"(需先关闭虚拟机)。
- 启动 virt-manager:
-
修改网络设置:
-
进入 "虚拟硬件" 标签页 → 选择 "NIC" 设备。
-
网络源:选择 "指定共享设备名称"。
-
设备名称:输入桥接设备名(如
br0)。 -
设备模型:推荐
virtio(高性能)。 -
点击 "应用"。
-
-
启动虚拟机:
- 虚拟机将直接通过桥接
br0连接到物理网络,自动获取 IP(由路由器 DHCP 分配)。
- 虚拟机将直接通过桥接
3️⃣ 参考 3
在 virt-manager 中配置桥接网络(Bridge 模式)允许虚拟机直接连接到物理网络,就像宿主机一样拥有独立 IP。以下是详细步骤:
前置准备
-
确保宿主机已启用桥接支持
- 检查内核模块加载:
lsmod | grep bridge - 若未加载,启用并设置开机自启:
sudo modprobe bridge echo "bridge" | sudo tee /etc/modules-load.d/bridge.conf
- 检查内核模块加载:
-
安装必要工具(如未安装):
# Ubuntu/Debian sudo apt install bridge-utils net-tools # CentOS/RHEL sudo yum install bridge-utils net-tools
步骤 1:在宿主机创建桥接设备
方法一:使用 NetworkManager(推荐)
- 编辑连接配置(以网卡
enp3s0为例):sudo nmcli con edit type ethernet con-name "有线连接" - 修改为桥接模式:
nmcli> set connection.interface-name enp3s0 nmcli> set ipv4.method auto # 或手动设置 static + IP nmcli> set connection.autoconnect yes nmcli> save nmcli> add type bridge ifname br0 nmcli> add type bridge-slave ifname enp3s0 master br0 nmcli> quit - 重启网络:
sudo systemctl restart NetworkManager
方法二:手动编辑配置文件(适用于旧版)
-
编辑
/etc/network/interfaces(Debian/Ubuntu):auto br0 iface br0 inet dhcp # 或 static bridge_ports enp3s0 bridge_stp off bridge_fd 0- 或使用静态 IP:
iface br0 inet static address 192.168.1.100 netmask 255.255.255.0 gateway 192.168.1.1 bridge_ports enp3s0
- 或使用静态 IP:
-
重启网络服务:
sudo systemctl restart networking # 或 netplan apply
步骤 2:在 virt-manager 中配置虚拟机
- 打开虚拟机设置:
- 关闭虚拟机 → 右键选择 "虚拟硬件详情"。
- 修改网络设置:
- 选择 "NIC" 设备 → "网络源" 选择 "指定共享设备名称"。
- 设备名称填写桥接接口
br0。 - 设备模型选择 "virtio"(高性能驱动)。
示例配置: 网络源: 指定共享设备名称 (Bridge) 设备名称: br0 设备模型: virtio - 保存并启动虚拟机:
- 启动后,虚拟机将通过
br0桥接直接获取物理网络的 IP(如 DHCP)。
- 启动后,虚拟机将通过
验证桥接网络
-
宿主机检查桥接状态:
brctl show输出示例: bridge name interfaces br0 enp3s0 -
虚拟机内检查 IP:
ip addr # 应显示与宿主机同一网段的 IP ping 8.8.8.8 # 测试外网连通性
4️⃣ 参考 4
在 virt-manager 中配置桥接网络(Bridge 模式)需要两个主要步骤:在宿主机上创建桥接接口 和 在虚拟机中配置网络。以下是详细步骤:
步骤 1:在宿主机上创建桥接接口
方法一:使用 nmcli(推荐,适用于 NetworkManager)
-
查看当前网络接口:
nmcli device status # 确认物理网卡名称(如 eth0、enp3s0) -
创建桥接接口(例如
br0):sudo nmcli connection add type bridge con-name br0 ifname br0 -
将物理网卡添加到桥接:
sudo nmcli connection add type ethernet slave-type bridge master br0 con-name bridge-slave ifname <物理网卡名> # 例如:sudo nmcli connection add type ethernet slave-type bridge master br0 con-name bridge-slave ifname eth0 -
配置桥接的 IP 获取方式:
- DHCP(自动获取):
sudo nmcli connection modify br0 ipv4.method auto - 静态 IP(手动设置):
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"
- DHCP(自动获取):
-
激活配置:
sudo nmcli connection down "bridge-slave" # 先关闭物理网卡连接 sudo nmcli connection up br0 # 启用桥接 -
验证桥接:
ip addr show br0 # 检查 IP 是否分配 bridge link # 确认物理网卡已绑定到 br0
方法二:手动修改配置文件(适用于无 NetworkManager 的系统)
-
编辑物理网卡配置(以 Debian/Ubuntu 为例):
sudo nano /etc/network/interfaces修改内容:
auto <物理网卡名> iface <物理网卡名> inet manual up ip link set $IFACE up down ip link set $IFACE down auto br0 iface br0 inet dhcp # 或 static bridge_ports <物理网卡名> # 静态 IP 示例: # address 192.168.1.100 # netmask 255.255.255.0 # gateway 192.168.1.1 -
重启网络服务:
sudo systemctl restart networking
步骤 2:在 virt-manager 中配置虚拟机
-
打开虚拟机设置:
- 启动 virt-manager → 右键目标虚拟机 → 打开 → 点击顶部工具栏的 虚拟硬件详情(⚙️图标)。
-
配置网络设备:
-
在硬件列表中选择 NIC(网络接口卡)。
-
右侧 网络源 选择 指定共享设备名称。
-
在 设备名称 中输入桥接接口名(如
br0)。 -
设备模型 建议选择
virtio(高性能半虚拟化驱动)。 -
点击 应用。
-
-
启动虚拟机:
- 虚拟机将直接通过
br0桥接接入物理网络,获取与宿主机同网段的 IP。
- 虚拟机将直接通过
验证桥接是否成功
-
在虚拟机内:
ip addr # 查看 IP 是否与宿主机同网段 ping 8.8.8.8 # 测试外网连通性 -
在宿主机上:
brctl show # 查看桥接状态(若未安装:sudo apt install bridge-utils)
5️⃣ 参考 5
在virt-manager中配置桥接网络(Bridge模式)的步骤如下,适用于Ubuntu/CentOS等主流Linux发行版:
一、宿主机网桥配置
1. 安装必要工具
# Ubuntu/Debian
sudo apt install bridge-utils libvirt-daemon-system
# CentOS/RHEL
sudo yum install bridge-utils libvirt
2. 创建网桥(以br0为例)
-
Ubuntu(使用netplan): 编辑
/etc/netplan/01-netcfg.yaml:network: version: 2 bridges: br0: dhcp4: yes # 或静态IP interfaces: [eth0] # 物理网卡名 ethernets: eth0: dhcp4: no应用配置:
sudo netplan apply -
CentOS(传统网络脚本): 创建网桥配置文件
/etc/sysconfig/network-scripts/ifcfg-br0:DEVICE=br0 TYPE=Bridge BOOTPROTO=dhcp ONBOOT=yes修改物理网卡配置(如
/etc/sysconfig/network-scripts/ifcfg-eth0):DEVICE=eth0 TYPE=Ethernet ONBOOT=yes BRIDGE=br0重启网络:
sudo systemctl restart network
3. 验证网桥状态
ip a show br0 # 应显示网桥IP和状态
brctl show # 查看网桥绑定的接口
二、virt-manager虚拟机配置
1. 创建/编辑虚拟机
- 打开virt-manager,选择虚拟机 → 详情 → 网络接口。
- 删除默认NAT接口,点击 添加硬件 → 网络。
2. 设置桥接模式
- 选择 桥接模式(Bridge),在 源设备 下拉菜单中选择
br0。 - 确保 设备模型 为
virtio(性能最佳)。
6️⃣ 参考 6
在 virt-manager 中配置桥接网络(Bridge 模式)需要先在宿主机上创建网桥接口,并将其绑定到物理网卡,然后在虚拟机配置中选择该网桥。以下是详细步骤:
1. 宿主机环境准备
1.1 安装必要的工具
确保系统已安装以下工具:
bridge-utils(用于管理网桥)NetworkManager(推荐使用nmcli管理网络)
# 对于基于 Red Hat 的系统(如 CentOS/RHEL)
sudo yum install bridge-utils NetworkManager
# 对于基于 Debian/Ubuntu 的系统
sudo apt install bridge-utils network-manager
1.2 启用并启动 NetworkManager
sudo systemctl enable --now NetworkManager
2. 创建网桥接口
2.1 查看物理网卡名称
ip addr show
假设物理网卡为 ens9f0(根据实际设备名称调整)。
2.2 使用 nmcli 创建网桥
# 创建网桥 br0
sudo nmcli connection add type bridge ifname br0 con-name br0
# 将物理网卡绑定到网桥
sudo nmcli connection add type bridge-slave ifname ens9f0 master br0
# 激活网桥和物理网卡
sudo nmcli connection up br0
sudo nmcli connection up bridge-slave-ens9f0
2.3 验证网桥配置
# 查看网桥状态
brctl show
# 查看 IP 地址是否分配到网桥
ip addr show br0
3. 配置虚拟机的桥接网络
3.1 打开 virt-manager
启动 virt-manager 并选择要配置的虚拟机。
3.2 修改虚拟机网络配置
- 在虚拟机详情界面,点击 “Add Hardware” 或选择现有的网络接口。
- 选择 “Network” 类型,然后在 “Source” 选项中选择 “Bridge”。
- 在下拉菜单中选择之前创建的网桥(如
br0)。 - 确保虚拟机网卡模式为 “Bridge”(桥接模式)。
- 保存配置并关闭虚拟机设置。
7️⃣ 参考 7
在 virt-manager 中配置桥接网络(Bridge 模式)需要结合宿主机的网络配置和虚拟机设置,以下是详细步骤:
一、准备工作
-
安装必要工具
确保宿主机已安装bridge-utils,不同发行版的安装命令如下:- Debian/Ubuntu:
sudo apt-get install bridge-utils - CentOS/RHEL:
sudo yum install bridge-utils
- Debian/Ubuntu:
-
确认物理网卡名称
使用ip addr show命令查看物理网卡名称(如eth0、enp0s25)。
二、配置宿主机网桥
方法一:命令行临时配置(重启后失效)
-
创建网桥并绑定物理网卡
sudo brctl addbr br0 # 创建网桥 br0 sudo brctl addif br0 eth0 # 将物理网卡 eth0 加入网桥 sudo ip link set br0 up # 启用网桥 -
移除物理网卡的 IP 并分配给网桥
sudo ip addr del dev eth0 192.168.1.8/24 # 删除物理网卡的 IP sudo ip addr add 192.168.1.8/24 dev br0 # 给网桥配置 IP sudo route add default gw 192.168.1.1 br0 # 添加默认路由
方法二:配置文件持久化(推荐)
-
编辑物理网卡配置文件
- Debian/Ubuntu(
/etc/network/interfaces):auto eth0 iface eth0 inet manual bridge_ports eth0 bridge_stp off - CentOS/RHEL(
/etc/sysconfig/network-scripts/ifcfg-eth0):DEVICE=eth0 TYPE=Ethernet ONBOOT=yes BRIDGE=br0
- Debian/Ubuntu(
-
创建网桥配置文件
- Debian/Ubuntu(
/etc/network/interfaces):auto br0 iface br0 inet static address 192.168.1.8/24 gateway 192.168.1.1 bridge_ports eth0 bridge_stp off - CentOS/RHEL(
/etc/sysconfig/network-scripts/ifcfg-br0):DEVICE=br0 TYPE=Bridge ONBOOT=yes BOOTPROTO=static IPADDR=192.168.1.8 NETMASK=255.255.255.0 GATEWAY=192.168.1.1
- Debian/Ubuntu(
-
重启网络服务
sudo systemctl restart networking # Debian/Ubuntu sudo systemctl restart network # CentOS/RHEL
方法三:使用 NetworkManager(适用于支持的发行版)
-
创建网桥连接
sudo nmcli connection add type bridge ifname br0 sudo nmcli connection modify bridge-br0 ipv4.method manual ipv4.addresses 192.168.1.8/24 ipv4.gateway 192.168.1.1 -
绑定物理网卡到网桥
sudo nmcli connection add type bridge-slave ifname eth0 master br0 -
启用连接
sudo nmcli connection up bridge-br0 sudo nmcli connection up bridge-slave-eth0
三、配置 virt-manager 虚拟机
-
打开 virt-manager
启动图形界面工具,选择需要配置的虚拟机,点击 编辑 → 虚拟硬件。 -
添加桥接网络设备
- 点击 添加硬件 → 网络。
- 在 网络源 中选择 桥接网络,并从下拉菜单中选择之前创建的网桥(如
br0)。 - 确保 模型 选择为
virtio(推荐)或e1000,以获得更好的性能。
-
配置虚拟机网络
- 启动虚拟机,进入系统后配置网络为 DHCP 或静态 IP(需与宿主机网桥在同一网段)。
8️⃣ 参考 8
-
理解桥接网络模式
- 桥接网络模式是将虚拟机的虚拟网卡直接连接到宿主机的物理网卡,就像虚拟机和宿主机都在同一个物理网络中一样。这样虚拟机可以像独立的物理机一样与其他网络设备通信。
-
在宿主机上创建桥接接口(以 Linux 为例)
-
方法一:基于命令行(以 RHEL 系列为例)
- 编辑网络接口配置文件,通常文件路径为
/etc/sysconfig/network - scripts/ifcfg - eth0(假设物理网卡名称为 eth0)。找到DEVICE、BOOTPROTO等关键配置项。 - 创建一个新的桥接接口配置文件,如
/etc/sysconfig/network - scripts/ifcfg - br0。设置DEVICE = br0,TYPE = Bridge,BOOTPROTO = dhcp(如果使用 dhcp 获取 ip 地址)或BOOTPROTO = static(如果使用静态 IP 地址)。如果是静态 IP,还需要设置IPADDR、NETMASK、GATEWAY等参数。同时,在文件中添加ONBOOT = yes,确保开机自启。 - 修改物理网卡配置文件(
/etc/sysconfig/network - scripts/ifcfg - eth0),将BOOTPROTO设置为none,并添加BRIDGE = br0,表示将其桥接到 br0 桥接接口。 - 使用
systemctl restart network命令重启网络服务,使桥接接口生效。
- 编辑网络接口配置文件,通常文件路径为
-
方法二:基于网络管理工具(如 nm - cli)
- 首先,查看物理网络接口的名称,可以使用
nm - cli命令。例如,物理接口名称为 enp0s3。 - 创建桥接连接,命令为
nm - cli con add ifname br0 type bridge con - name bridge - br0 autoconnect yes,这将创建一个名为 bridge - br0 的桥接连接,接口名称为 br0,并且设置自动连接。 - 将物理接口添加到桥接连接中,使用命令
nm - cli con mod enp0s3 master bridge - br0,将物理接口 enp0s3 设置为桥接连接 bridge - br0 的从接口。 - 然后重启网络服务,如
systemctl restart NetworkManager,或者直接重新连接网络连接以应用更改。
- 首先,查看物理网络接口的名称,可以使用
-
-
在 virt - manager 中配置虚拟机使用桥接网络
- 打开 virt - manager,创建或编辑虚拟机。
- 在虚拟机的设置界面中,选择“网络”选项。
- 在网络选择中,找到并选择之前在宿主机上创建的桥接接口(如 br0)。这样虚拟机的虚拟网卡就会连接到这个桥接网络,从而能够像物理机一样在局域网中通信。
-
测试虚拟机网络连接
- 启动虚拟机后,在虚拟机内部可以通过
ping命令测试与其他网络设备的连通性。例如,ping网关 IP 地址或外部网络的 IP 地址,来验证虚拟机是否成功接入网络。
- 启动虚拟机后,在虚拟机内部可以通过
需要注意的是,不同操作系统和网络环境下的桥接网络配置可能会有所不同。在进行桥接网络配置时,要确保宿主机的网络设置、虚拟机的网络设置以及整个网络环境中的防火墙、路由等设置相互匹配,以保证虚拟机可以正常地通过桥接网络进行通信。
9️⃣ 参考 9
要在 virt-manager 中配置 桥接网络(Bridge 模式),需遵循「创建桥接接口→配置桥接网络→关联虚拟机」的核心流程。以下是分发行版详细步骤(以主流的 Ubuntu 20.04+/CentOS 7+/Fedora 30+ 为例),并包含常见问题解决。
一、前置条件
- 物理网卡支持桥接:
无线网卡(如 Wi-Fi)通常不支持桥接(底层硬件限制),需使用有线网卡(如eth0、enp0s3、ens33等)。可通过ip addr命令查看可用物理网卡名称。 - 安装必要工具:
- Ubuntu/Debian:
sudo apt install bridge-utils(提供brctl工具)。 - CentOS/RHEL/Fedora:
sudo yum install bridge-utils或sudo dnf install bridge-utils。
- Ubuntu/Debian:
二、创建并配置桥接接口
桥接接口的作用是将物理网卡与虚拟机网络连接,使虚拟机直接接入物理网络。以下分**Ubuntu(Netplan)和CentOS(NetworkManager/传统网络)**两种场景说明。
1. Ubuntu 系统(推荐 Netplan 配置,适用于 20.04+)
Ubuntu 20.04 及以上默认使用 Netplan 管理网络,配置文件位于 /etc/netplan/ 目录(如 00-installer-config.yaml)。
步骤:
- 步骤 1:备份原配置
sudo cp /etc/netplan/00-installer-config.yaml /etc/netplan/00-installer-config.yaml.bak - 步骤 2:编辑 Netplan 配置文件
用文本编辑器(如nano)打开配置文件,添加桥接接口br0的配置(示例):network: version: 2 renderer: networkd ethernets: enp0s3: # 替换为你的物理网卡名称(如 eth0、ens33) dhcp4: false # 关闭物理网卡的 DHCP optional: true bridges: br0: # 桥接接口名称(可自定义) dhcp4: true # 桥接接口使用 DHCP(或配置静态 IP) # 若需静态 IP,替换为以下内容: # addresses: [192.168.1.100/24] # 桥接接口 IP(与物理网卡同网段) # gateway4: 192.168.1.1 # 网关(物理网络网关) # nameservers: # addresses: [8.8.8.8, 114.114.114.114] # DNS interfaces: [enp0s3] # 绑定到物理网卡 enp0s3- DHCP 模式:桥接接口通过 DHCP 获取 IP,虚拟机也会自动获取同网段 IP(推荐新手)。
- 静态 IP 模式:需手动配置桥接接口的 IP、网关、DNS(适用于固定 IP 网络)。
- 步骤 3:应用配置
验证桥接接口是否创建成功:sudo netplan apply # 立即生效ip addr show br0 # 应显示 br0 的 IP 信息 brctl show # 应显示 br0 绑定了物理网卡 enp0s3
2. CentOS/RHEL/Fedora 系统(推荐 NetworkManager 配置)
CentOS 7+ 默认使用 NetworkManager 管理网络,配置文件位于 /etc/sysconfig/network-scripts/ 目录(如 ifcfg-enp0s3、ifcfg-br0)。
步骤:
- 步骤 1:备份原物理网卡配置
sudo cp /etc/sysconfig/network-scripts/ifcfg-enp0s3 /etc/sysconfig/network-scripts/ifcfg-enp0s3.bak # 替换为你的物理网卡名称 - 步骤 2:修改物理网卡配置
编辑物理网卡配置文件(如ifcfg-enp0s3),将其从独立网络接口改为桥接接口的成员:DEVICE=enp0s3 # 物理网卡名称 TYPE=Ethernet BOOTPROTO=none # 关闭 DHCP(由桥接接口管理) ONBOOT=yes BRIDGE=br0 # 指定绑定的桥接接口名称 - 步骤 3:创建桥接接口配置文件
新建桥接接口配置文件(如ifcfg-br0):DEVICE=br0 # 桥接接口名称 TYPE=Bridge BOOTPROTO=dhcp # 桥接接口使用 DHCP(或配置静态 IP) # 若需静态 IP,替换为以下内容: # BOOTPROTO=static # IPADDR=192.168.1.100 # 桥接接口 IP(与物理网卡同网段) # NETMASK=255.255.255.0 # GATEWAY=192.168.1.1 # DNS1=8.8.8.8 ONBOOT=yes DELAY=0 # 取消延迟启动 - 步骤 4:重启网络服务
验证桥接接口是否创建成功:sudo systemctl restart NetworkManager # 重启 NetworkManager 使配置生效ip addr show br0 # 应显示 br0 的 IP 信息 brctl show # 应显示 br0 绑定了物理网卡 enp0s3
三、在 virt-manager 中关联桥接网络
完成桥接接口配置后,需将虚拟机的网络源设置为新建的桥接接口(如 br0)。
步骤:
- 打开
virt-manager(图形化管理工具),连接到本地或远程 KVM 主机。 - 右键点击目标虚拟机,选择 Open(打开虚拟机详情)。
- 在左侧导航栏选择 NIC: Network Device(网络设备)。
- 在 Network source(网络源)下拉菜单中,选择 Custom bridge interface(自定义桥接接口),并选择新建的桥接接口(如
br0)。
!i.imgur.com/7XZJZ1L.png - (可选)修改 Model(网络模型)为
virtio(性能更好的虚拟网卡驱动)。 - 点击 Apply(应用)保存配置,然后重启虚拟机(Reboot)使网络生效。
🔟 参考 10
在virt-manager中配置桥接网络(Bridge模式)的步骤如下,适用于大多数Linux发行版(如Ubuntu/CentOS):
1. 安装必要工具
# Debian/Ubuntu
sudo apt install bridge-utils net-tools
# RHEL/CentOS
sudo yum install bridge-utils net-tools
2. 配置网桥接口
方法一:使用Netplan(Ubuntu 18.04+)
- 编辑Netplan配置文件(通常为
/etc/netplan/01-netcfg.yaml):network: version: 2 renderer: networkd ethernets: enp3s0: # 替换为你的物理网卡名称(通过 `ip a` 查看) dhcp4: no optional: true bridges: br0: dhcp4: yes interfaces: [enp3s0] parameters: stp: false forward-delay: 0 - 应用配置:
sudo netplan apply
方法二:传统配置(/etc/network/interfaces)
# 编辑文件
sudo nano /etc/network/interfaces
# 配置内容(示例):
auto br0
iface br0 inet dhcp
bridge_ports enp3s0 # 替换为你的物理网卡
bridge_stp off
bridge_maxwait 0
3. 重启网络服务
# Ubuntu(传统方式)
sudo systemctl restart networking
# CentOS/RHEL
sudo systemctl restart NetworkManager
# 验证网桥状态
brctl show # 或使用 `ip addr show br0`
4. 配置virt-manager使用桥接网络
- 启动virt-manager:
sudo virt-manager - 虚拟机设置:
- 选择虚拟机 → 打开虚拟硬件详情。
- 网络 → 选择“桥接设备” → 设备名称填写
br0。 - 保存配置并启动虚拟机。
5. 验证网络
- 虚拟机内:检查是否获得与主机同一网段的IP(如使用DHCP)。
- 主机验证:
ping 虚拟机IP # 测试连通性 brctl showmacs br0 # 查看连接的MAC地址
常见问题
- 权限问题:确保用户属于
libvirt组:sudo usermod -aG libvirt $USER - 防火墙/SELinux:临时关闭测试或配置允许规则。
- 物理网卡未激活:确保物理接口(如
enp3s0)已启用。
通过以上步骤,虚拟机将通过桥接网络直接接入物理网络,获得与物理设备同级的网络访问能力。
以下是在 virt-manager 中配置桥接网络(Bridge 模式)的详细步骤,结合宿主机桥接创建和虚拟机网络设置,适用于主流 Linux 发行版(Ubuntu/Debian/RHEL/CentOS)。配置后虚拟机将获得与宿主机同网段的独立 IP,可直接被局域网访问。
🔧 一、宿主机桥接配置(关键前提)
需先在宿主机创建并激活桥接接口(如 br0),绑定物理网卡(如 eth0/enp0s3)。以下分发行版说明:
1. Ubuntu/Debian(通过 netplan 或 NetworkManager)
方法1:使用 netplan(推荐)
编辑 /etc/netplan/01-netcfg.yaml,示例配置:
network:
version: 2
renderer: networkd
bridges:
br0:
dhcp4: yes # 或静态IP:addresses: [192.168.1.100/24], gateway4: 192.168.1.1
interfaces: [enp0s3] # 物理网卡名
parameters:
stp: false
forward-delay: 0
应用配置:
sudo netplan apply
方法2:使用 NetworkManager(图形化)
nm-connection-editor # 打开网络连接编辑器
- 删除原有物理网卡连接
- 新建 Bridge 类型连接,命名为
br0 - 添加物理网卡(如
enp0s3)作为桥接端口 - 配置 IP(DHCP 或静态)并保存
2. RHEL/CentOS(编辑网卡配置文件)
# 物理网卡配置(如 eth0)
sudo vi /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
TYPE=Ethernet
BOOTPROTO=none
ONBOOT=yes
BRIDGE=br0 # 关联到桥接接口
# 桥接接口配置
sudo vi /etc/sysconfig/network-scripts/ifcfg-br0
DEVICE=br0
TYPE=Bridge
BOOTPROTO=dhcp # 或 static + IPADDR/GATEWAY
ONBOOT=yes
DELAY=0
STP=off
重启网络服务:
sudo systemctl restart NetworkManager
✅ 验证宿主机桥接状态
ip addr show br0 # 查看 br0 是否分配 IP
brctl show # 查看桥接绑定关系(需安装 bridge-utils)
⚠️ 注意:配置后宿主机通过
br0上网,原物理网卡不再直接持有 IP。
🖥️ 二、在 virt-manager 中配置虚拟机桥接
-
打开 virt-manager
virt-manager -
修改虚拟机网络设置
-
选择目标虚拟机 → 点击 "Open"
-
进入 "Virtual Hardware" 标签 → 选择 "NIC"(网络设备)
-
"Network source" → 选择 "Bridge to LAN" 或 "Specify shared device name"
-
在下方输入框填写桥接接口名(如
br0) -
模型建议选 "virtio"(高性能虚拟化驱动)
(示意图:Network source 选择 "Bridge" 并输入 br0)
-
-
保存并启动虚拟机
- 点击 "Apply" → 重启虚拟机使配置生效
Linux创建网桥Bridge的方法有哪些?
在Linux系统中,创建网桥(Bridge)主要有以下几种方法,涵盖命令行临时配置和持久化配置:
方法1:使用 ip 命令(临时生效,重启失效)
# 创建网桥
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 工具
# 安装工具(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)
# 编辑配置文件
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
重启网络服务:
sudo systemctl restart networking
RHEL/CentOS(/etc/sysconfig/network-scripts/)
- 创建网桥配置文件
ifcfg-br0:DEVICE=br0 TYPE=Bridge IPADDR=192.168.1.100 NETMASK=255.255.255.0 ONBOOT=yes BOOTPROTO=static - 修改物理接口配置(如
ifcfg-eth0):DEVICE=eth0 ONBOOT=yes BRIDGE=br0 # 关键!指向网桥
重启网络服务:
sudo systemctl restart network
方法4:使用 nmcli(NetworkManager)
# 创建网桥
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
关键命令验证
# 查看网桥状态
brctl show # 传统工具
bridge link # iproute2 工具
# 检查网桥信息
ip link show br0
ip addr show br0
注意事项
- 接口解绑IP:物理接口(如
eth0)加入网桥前需移除原有IP配置,IP应配在网桥br0上。 - 服务重启:配置文件修改后需重启网络服务生效。
- 虚拟化支持:网桥常用于KVM/Docker等虚拟化技术,需确保内核模块加载:
sudo modprobe bridge - 防火墙:若需跨网桥通信,检查防火墙规则(如
iptables/nftables)。
根据需求选择合适的方法:临时调试用 ip 命令,持久化用配置文件或 nmcli。
如何用"iproute2"配置网桥bridge,并使其永久生效
在 Linux 中,使用 iproute2 工具创建网桥并使其永久生效,需要结合系统网络配置文件。以下是详细步骤:
一、临时创建网桥(重启失效)
# 创建网桥
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
二、永久生效配置(不同发行版)
1. Debian/Ubuntu(使用 /etc/network/interfaces)
sudo nano /etc/network/interfaces
# 物理接口配置(不分配IP)
auto eth0
iface eth0 inet manual
# 网桥配置
auto br0
iface br0 inet static
bridge_ports eth0 # 绑定物理接口
address 192.168.1.100
netmask 255.255.255.0
gateway 192.168.1.1
dns-nameservers 8.8.8.8
应用配置:
sudo systemctl restart networking
2. RHEL/CentOS 7+(使用 ifcfg 文件)
(1) 创建网桥配置文件
sudo nano /etc/sysconfig/network-scripts/ifcfg-br0
DEVICE=br0
TYPE=Bridge
IPADDR=192.168.1.100
NETMASK=255.255.255.0
GATEWAY=192.168.1.1
DNS1=8.8.8.8
ONBOOT=yes
BOOTPROTO=none
(2) 修改物理接口配置
sudo nano /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
ONBOOT=yes
BRIDGE=br0 # 关键:指向网桥
BOOTPROTO=none
应用配置:
sudo systemctl restart network
3. 使用 netplan(Ubuntu 18.04+)
sudo nano /etc/netplan/01-netcfg.yaml
network:
version: 2
renderer: networkd
bridges:
br0:
interfaces: [eth0]
addresses: [192.168.1.100/24]
gateway4: 192.168.1.1
nameservers:
addresses: [8.8.8.8]
应用配置:
sudo netplan apply
三、关键验证命令
# 检查网桥状态
ip link show br0
# 查看网桥详细信息
bridge link show
# 验证IP配置
ip addr show br0
# 检查路由
ip route
四、注意事项
- 接口释放:物理接口(如 eth0)加入网桥前必须释放原有IP配置,否则会导致冲突
- 服务依赖:
- Debian:
networking服务 - RHEL:
network服务 - Ubuntu 18.04+:
netplan apply
- Debian:
- 内核模块:确保加载网桥模块
sudo modprobe bridge sudo sh -c 'echo "bridge" >> /etc/modules' # 永久加载 - 防火墙:如需跨网桥通信,开放防火墙
sudo iptables -I FORWARD -i br0 -j ACCEPT
提示:生产环境建议先在临时配置测试无误后,再写入配置文件。重启系统后使用
ip addr和bridge link验证配置是否生效。
如何用"brctl"配置网桥bridge,并使其永久生效
使用 brctl 配置永久生效的网桥
brctl (bridge control) 是传统的 Linux 网桥管理工具,虽然在新系统中逐渐被 iproute2 替代,但在许多场景下仍在使用。以下是使用 brctl 创建网桥并使其永久生效的详细步骤:
1. 安装 bridge-utils
# Debian/Ubuntu
sudo apt update
sudo apt install bridge-utils -y
# RHEL/CentOS
sudo yum install bridge-utils -y
2. 临时创建网桥(重启失效)
# 创建网桥
sudo brctl addbr br0
# 添加物理接口到网桥(示例使用 eth0)
sudo brctl addif br0 eth0
# 启用网桥
sudo ip link set br0 up
# 配置IP地址(可选)
sudo ip addr add 192.168.1.100/24 dev br0
3. 永久生效配置(不同发行版)
3.1 Debian/Ubuntu(使用 /etc/network/interfaces)
sudo nano /etc/network/interfaces
# 物理接口配置(不分配IP)
auto eth0
iface eth0 inet manual
up ip link set $IFACE up
down ip link set $IFACE down
# 网桥配置
auto br0
iface br0 inet static
bridge_ports eth0 # 绑定物理接口
address 192.168.1.100
netmask 255.255.255.0
gateway 192.168.1.1
dns-nameservers 8.8.8.8
bridge_stp off # 禁用生成树协议
bridge_fd 0 # 设置转发延迟为0
bridge_maxwait 0 # 设置最大等待时间为0
应用配置:
sudo systemctl restart networking
3.2 RHEL/CentOS(使用 ifcfg 文件)
创建网桥配置文件:
sudo nano /etc/sysconfig/network-scripts/ifcfg-br0
DEVICE=br0
TYPE=Bridge
IPADDR=192.168.1.100
NETMASK=255.255.255.0
GATEWAY=192.168.1.1
DNS1=8.8.8.8
ONBOOT=yes
BOOTPROTO=none
DELAY=0 # 转发延迟
STP=off # 禁用生成树协议
修改物理接口配置:
sudo nano /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
ONBOOT=yes
BRIDGE=br0 # 关键:指向网桥
BOOTPROTO=none
应用配置:
sudo systemctl restart network
3.3 使用 netplan(Ubuntu 18.04+)
sudo nano /etc/netplan/01-netcfg.yaml
network:
version: 2
renderer: networkd
ethernets:
eth0:
dhcp4: no
dhcp6: no
bridges:
br0:
interfaces: [eth0]
dhcp4: no
addresses: [192.168.1.100/24]
gateway4: 192.168.1.1
nameservers:
addresses: [8.8.8.8]
parameters:
stp: false # 禁用STP
forward-delay: 0 # 转发延迟
应用配置:
sudo netplan apply
4. 高级配置选项
4.1 启用 STP(生成树协议)
# 在 /etc/network/interfaces 中添加
bridge_stp on
bridge_fd 2
# 在 RHEL ifcfg-br0 中添加
STP=yes
4.2 设置网桥优先级
sudo brctl setbridgeprio br0 16384
4.3 添加多个接口到网桥
sudo brctl addif br0 eth1
sudo brctl addif br0 eth2
5. 验证配置
# 查看所有网桥
brctl show
# 输出示例:
# bridge name bridge id STP enabled interfaces
# br0 8000.001122334455 no eth0
# 查看网桥详细信息
brctl showstp br0
# 检查MAC地址表
brctl showmacs br0
# 查看网桥状态
ip link show br0
6. 故障排除
常见问题及解决方案:
-
接口未加入网桥:
- 检查物理接口配置中是否有
BRIDGE=br0(RHEL) 或bridge_ports(Debian) - 确保物理接口没有分配IP地址
- 检查物理接口配置中是否有
-
网桥未启动:
sudo ip link set br0 up -
网络连接问题:
# 检查路由表 ip route # 检查ARP表 ip neigh -
配置未应用:
# 检查服务状态 sudo systemctl status networking # Debian sudo systemctl status network # RHEL # 检查日志 journalctl -xe
7. 移除网桥
临时移除:
sudo ip link set br0 down
sudo brctl delbr br0
永久移除:
- 删除相关配置文件
- 恢复物理接口的原始配置
- 重启网络服务
注意事项
- 接口释放:物理接口加入网桥前必须移除原有IP配置
- STP设置:在简单网络中可以禁用STP以提升性能
- 系统兼容性:较新的Linux发行版建议优先使用
iproute2 - 虚拟化支持:网桥常用于KVM、LXC等虚拟化技术
- 防火墙:确保防火墙允许网桥流量
sudo iptables -A FORWARD -i br0 -j ACCEPT
通过以上步骤,您可以使用 brctl 创建并永久配置Linux网桥。配置完成后,建议重启系统验证配置是否在启动时自动生效。
如何用"NetworkManager"配置网桥bridge,并使其永久生效
使用NetworkManager(通过nmcli工具)配置网桥(Bridge)并永久生效,是Linux网络管理的高效方案,尤其适用于现代发行版(如RHEL/CentOS 7+、Ubuntu 18.04+)。以下是详细步骤及注意事项:
⚙️ 一、确保NetworkManager接管网络
关键前提:若系统由其他工具管理网络(如netplan或ifupdown),需先配置NetworkManager接管:
- Ubuntu(使用netplan):
添加以下内容并保存:sudo nano /etc/netplan/00-installer-config.yaml # 文件名可能不同应用配置:network: version: 2 renderer: NetworkManager # 指定NetworkManager接管sudo netplan apply - 传统ifupdown系统(如Debian/Ubuntu旧版):
修改为:sudo nano /etc/NetworkManager/NetworkManager.conf重启服务:[main] plugins=ifupdown,keyfile [ifupdown] managed=true # 允许管理现有接口sudo systemctl restart NetworkManager
🛠️ 二、使用nmcli配置网桥
步骤1:创建网桥并添加物理接口
# 创建名为br0的网桥
sudo nmcli con add type bridge ifname br0 con-name br0
# 将物理接口(如eth0)添加为网桥从属
sudo nmcli con add type bridge-slave ifname eth0 master br0
# 激活网桥
sudo nmcli con up br0
注意:
- 物理接口(如
eth0)原有IP配置需移除,否则冲突。 - 若接口已有连接(如"有线连接1"),需先关闭:
sudo nmcli con down "Wired connection 1" # 根据实际名称调整
步骤2:配置IP地址(可选)
- 静态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" - 动态IP(DHCP):
sudo nmcli con modify br0 ipv4.method auto
步骤3:高级配置(按需调整)
- 禁用STP(生成树协议):
sudo nmcli con modify br0 bridge.stp no - 设置转发延迟:
sudo nmcli con modify br0 bridge.forward-delay 0 # 设为0提升性能
🔍 三、验证配置
# 查看网桥状态
nmcli con show br0
bridge link show # 检查从属接口
# 检查IP地址
ip addr show br0
# 查看网桥详细信息(包括STP状态)
nmcli -f bridge con show br0
⚠️ 四、永久生效关键点
- 配置自动存储:
nmcli命令修改会自动保存到/etc/NetworkManager/system-connections/br0.nmconnection,重启后自动加载。 - 重启验证:
sudo systemctl reboot # 重启后检查 nmcli con show | grep br0 # 应显示ACTIVE
🔧 五、常见问题解决
- 物理接口未加入网桥:
检查物理接口是否被其他连接占用(nmcli con show),关闭原有连接后再激活网桥。 - 网桥未激活:
手动启动:sudo nmcli con up br0。 - KVM虚拟化支持:
将虚拟机网络模式设为桥接,参考以下virsh配置:加载配置:<!-- br0.xml --> <network> <name>br0</name> <forward mode="bridge"/> <bridge name="br0"/> </network>virsh net-define br0.xml virsh net-start br0 virsh net-autostart br0
💎 总结
- 核心命令:
nmcli con add type bridge+nmcli con add type bridge-slave - 永久生效依赖:NetworkManager接管网络配置,且勿手动修改底层文件(如
/etc/network/interfaces)。 - 适用场景:桌面环境、KVM虚拟化、容器网络等需持久化网桥的场景。
通过
nmcli配置的网桥兼具灵活性与持久性,避免跨发行版配置差异问题。若需更复杂策略(如VLAN过滤),可结合nmcli的bridge.vlan-filtering参数扩展。
如何用"systemd-networkd"配置网桥bridge,并使其永久生效
使用 systemd-networkd 配置永久网桥(Bridge)是 Linux 中高效且标准化的方案,尤其适用于 Arch Linux、Debian 及 CentOS/RHEL 8+ 等使用 systemd 的发行版。以下是详细步骤及注意事项:
🔧 一、配置流程
1. 创建网桥设备定义文件
创建 /etc/systemd/network/br0.netdev 文件,定义网桥名称和类型:
sudo nano /etc/systemd/network/br0.netdev
[NetDev]
Name=br0 # 网桥名称
Kind=bridge # 设备类型为网桥
# 可选高级参数(按需添加)
MACAddress=00:11:22:33:44:55 # 指定MAC地址
STP=on # 启用生成树协议(防环)
- 关键项:
Kind=bridge必须指定。
2. 配置网桥网络参数
创建 /etc/systemd/network/br0.network 文件,设置 IP 地址/DNS 等:
sudo nano /etc/systemd/network/br0.network
[Match]
Name=br0 # 匹配网桥设备名
[Network]
Address=192.168.1.100/24 # 静态IP
Gateway=192.168.1.1 # 网关
DNS=8.8.8.8 # DNS服务器
# 或使用 DHCP
# DHCP=ipv4
- 注意:IP 必须配置在网桥
br0而非物理接口。
3. 绑定物理接口到网桥
修改物理接口(如 eth0)的配置文件,移除原 IP 并关联网桥:
sudo nano /etc/systemd/network/eth0.network
[Match]
Name=eth0 # 物理接口名
[Network]
Bridge=br0 # 绑定到网桥 br0
# 删除所有 IP/DHCP 配置!
- 重要:物理接口不再配置独立 IP,否则冲突。
4. 重启服务生效
sudo systemctl restart systemd-networkd # 应用配置
ip link show br0 # 验证网桥状态
bridge link # 检查绑定的接口
⚙️ 二、高级配置
1. 多接口绑定
将多个接口(如 eth1, eth2)加入网桥:
# /etc/systemd/network/eth1.network
[Match]
Name=eth1
[Network]
Bridge=br0
# /etc/systemd/network/eth2.network
[Match]
Name=eth2
[Network]
Bridge=br0
2. STP 与转发延迟优化
在 br0.netdev 中调整防环与性能参数:
[NetDev]
Name=br0
Kind=bridge
STP=on # 启用生成树协议
ForwardDelaySec=2 # 转发延迟(秒),默认15秒,建议设为2-4
3. VLAN 支持
若需在网桥上支持 VLAN,需创建 VLAN 子接口:
# 创建 VLAN 10 的设备定义
sudo nano /etc/systemd/network/br0.10.netdev
[NetDev]
Name=br0.10
Kind=vlan
[VLAN]
Id=10 # VLAN ID
关联到网桥:
# /etc/systemd/network/br0.10.network
[Match]
Name=br0.10
[Network]
Bridge=br0 # 将 VLAN 接口绑定到网桥
🔍 三、永久生效验证
- 重启系统:
sudo reboot ip addr show br0 # 重启后检查 IP 配置 - 开机自启:
systemd-networkd服务默认随系统启动,无需额外操作。
🛠️ 四、故障排除
常见问题:
-
网桥未启动:
sudo networkctl up br0 # 手动启动网桥 sudo journalctl -u systemd-networkd # 查看日志 -
物理接口未绑定:
- 检查物理接口配置是否包含
Bridge=br0 - 确认物理接口无独立 IP 配置。
- 检查物理接口配置是否包含
-
配置更新后未生效:
删除旧网桥并重启服务:sudo ip link set down br0 # 关闭网桥 sudo ip link del dev br0 # 删除设备 sudo systemctl restart systemd-networkd # 重新加载
💎 总结
- ✅ 核心配置:
.netdev(定义网桥) +.network(绑定接口/IP) - ✅ 永久生效:依赖
systemd-networkd服务,配置存储在/etc/systemd/network/ - ⚠️ 避坑点:
- 物理接口必须释放 IP,仅网桥持有 IP
- 复杂网络(如 KVM 虚拟化)需结合
libvirt配置。
此方案适用于无图形界面的服务器环境,兼具轻量与稳定性。若需动态管理(如桌面环境),可改用
NetworkManager(参考此前回复)。