在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網絡世界的必經之路。