在Linux虚拟化、容器化及网络管理中,虚拟网络设备扮演着至关重要的角色。其中,Bridge(网桥) 是最核心、最常用的虚拟网络设备之一,它模拟了物理网络中的二层交换机,实现了数据链路层的连接与转发。
1. Bridge的基本概念与工作原理
Bridge是一个工作在数据链路层(OSI第二层)的虚拟设备,其主要功能是将多个网络接口(可以是物理网卡,如eth0,也可以是虚拟接口,如veth pair的一端)连接在一起,形成一个共享的广播域。在逻辑上,它就像一个物理交换机:
- 学习:Bridge维护一个MAC地址表,记录每个接口连接的设备的MAC地址。
- 转发:当数据帧到达Bridge时,它会根据目标MAC地址查询自己的MAC地址表,并将帧转发到对应的接口(如果表中没有记录,则进行洪泛,转发到除来源接口外的所有接口)。
- 过滤:在同一接口上收到和发送的帧会被丢弃,避免不必要的环路。
通过Bridge,连接到它的各个接口可以像连接在同一台交换机上一样相互通信。
2. Bridge的典型应用场景
2.1 虚拟机和容器网络
这是Bridge最经典的应用。例如,在KVM虚拟化中,经常创建一个名为br0的Bridge,将物理网卡eth0绑定到br0上,同时将虚拟机的虚拟网卡(通过TAP设备)也连接到br0。这样,虚拟机就能通过宿主机的物理网络与外界通信,并且虚拟机之间也能直接进行二层通信。
Docker默认的bridge网络驱动、LXC/LXD容器也大量使用了Bridge设备来构建容器网络。
2.2 物理网络分段与隔离
即使在没有虚拟化的场景下,也可以用Bridge将多块物理网卡捆绑成一个逻辑设备,实现简单的网络聚合或隔离。
2.3 软件定义网络(SDN)的基础
许多更复杂的虚拟网络方案(如Open vSwitch)在底层也借鉴或使用了Bridge的概念和功能。
3. 在Linux中操作Bridge
Linux内核原生支持Bridge功能,可以通过bridge-utils软件包(旧版)或更现代的iproute2工具集进行管理。
使用ip命令(推荐):`bash
# 创建一个名为mybr0的bridge
sudo ip link add name mybr0 type bridge
启动bridge设备
sudo ip link set dev mybr0 up
为bridge分配IP地址(使其具有三层功能,作为网关)
sudo ip addr add 192.168.1.1/24 dev mybr0
将物理接口eth0添加到bridge中(eth0将变成纯二层端口,不再需要IP)
sudo ip link set dev eth0 master mybr0
创建一个veth pair,并将其一端连接到bridge
sudo ip link add veth0 type veth peer name veth1
sudo ip link set dev veth0 master mybr0
sudo ip link set dev veth0 up
sudo ip link set dev veth1 up
查看bridge信息及连接的接口
sudo bridge link show # 或 ip link show master mybr0`
关键点:
- 将物理网卡(如eth0)加入Bridge后,该网卡通常不再配置IP地址,IP地址配置在Bridge设备mybr0上。此时,宿主机通过Bridge这个“虚拟网卡”与网络交互。
- Bridge本身可以配置IP地址,使其成为所在子网的网关(例如,为容器或虚拟机提供DHCP和NAT服务)。
- Bridge的MAC地址通常是其包含的接口中第一个被激活的接口的MAC地址。
4. Bridge与路由、防火墙的交互
Bridge工作在二层,但它所在的主机(Linux系统)是一个三层设备。因此,Bridge与系统的IP路由表和防火墙(iptables/nftables)有着紧密的交互:
- 路由:发往Bridge设备IP地址(如果配置了)的流量,或者从连接到Bridge的接口发出、目标为外部IP的流量,都会经过主机的路由表进行决策。
- 防火墙:Linux的Netfilter框架为Bridge流量提供了专门的
br<em>netfilter内核模块和ebtables工具。例如,Docker和KVM会利用br</em>netfilter使Bridge流量也能经过iptables的FORWARD链,从而实现NAT和容器间隔离。
5.
Linux Bridge是一个强大而灵活的二层虚拟网络设备,它通过软件完美模拟了物理交换机的功能,是构建虚拟网络、容器网络以及复杂网络实验环境的基石。理解其工作原理和操作方法,对于进行系统运维、云计算和网络虚拟化相关的工作至关重要。从简单的虚拟机联网到复杂的云网络架构,Bridge的身影无处不在,掌握它是深入Linux网络世界的必经之路。