「网络桥接(在Linux下)」

  CREATED BY JENKINSBOT

什么是网络桥接?

桥接网络连接,可以将一台电脑的互联网连接在多台电脑之间分享。尤其是在没有路由器或者接口不够的时候,极其有用。

基本上,「桥接」是将一台「HostA(未联网)」连接到「HostB(已经联网)」,并让HostA使用HostB的网络连接。为此,联网网络HostB需要有两个以太网端口,一个用于大型网络,另一个用于桥接HostA。

使用桥接的另一个示例场景是提供冗余网络功能。例如使用两个网络接口连接到两个支持生成树的交换机,在电缆、接口、交换机故障的情况下提供冗余连接。这需要在桥接器和交换机上启用生成树。

如何配置网络桥接?

系统环境

Kali GNU/Linux Rolling

在开始之前,请确保要连接的HostB有两个以太网端口,并且硬件能够桥接以太网连接(可能应该是)。

安装网桥配置软件

网桥的配置需要使用brctl(8)命令,该命令位于bridge-utils软件包中。执行apt-get install bridge-utils安装。

桥接网口在ip link中显示为新接口,很像eth0或eth1。它不存在于计算机上,而是一个虚拟接口,只需从一个物理接口接收数据包,并透明地将它们路由到另一个物理接口。

设置网桥

设置时使用命令是在联网的计算机上执行的,即已经联网的HostB。要设置要桥接的HostA,只需正常设置,就像其他计算机一样。您可以使用DHCP,也可以使用静态地址。桥接HostA不需要做额外的配置,像普通的计算机一样就好了。

在使用网桥接口后,如果发现网络链路死机、无法上网,可能是路由器/交换机上游可能会阻塞网络中的“未授权交换机(unauthorized switches)”(例如,通过检测BPDU报文) 。你必须更改其配置,以显式的允许主机/网络端口作为“交换机”。

下面是在已经联网的HostB上执行的命令:

#!/bin/bash

# 创建网桥接口
brctl addbr br0

# 设置要桥接的网络接口,这里使eth0与eth1
brctl addif br0 eth0 eth1

# 启动所有的网络接口。

持久化网桥设置

https://wiki.debian.org/BridgeNetworkConnections#Configuring_bridging_in_.2Fetc.2Fnetwork.2Finterfaces
https://wiki.debian.org/BridgeNetworkConnections#Useful_options_for_virtualised_environments

与网桥有关的内核变量

https://wiki.debian.org/BridgeNetworkConnections#Setting_up_bridge-related_kernel_variables

KVM的网桥设置

https://wiki.debian.org/BridgeNetworkConnections#Libvirt_and_bridging

无线网卡的桥接设置(Bridging with a wireless NIC)

https://wiki.debian.org/BridgeNetworkConnections#Bridging_with_a_wireless_NIC

链路聚合(LACP)与VLAN

https://wiki.debian.org/BridgeNetworkConnections#Link_Aggregation_.28LACP.29_with_VLANs

参考文献

Debian/Bridging Network Connections
Wikipedia/Bridging (networking)
What can you do with a second Ethernet port?