问题描述
桥接网络连接,可以将一台电脑的互联网连接在多台电脑之间分享。尤其是在没有路由器或者接口不够的时候,极其有用。
基本上,「桥接」是将一台「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上执行的命令:
# 创建网桥接口 brctl addbr br0 # 添加接口到网桥 brctl addif br0 eth0 eth1 # 启动所有的网络接口 ip link set dev br0 up
常见问题处理
持久化网桥设置
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?
2. Bringing interfaces up/down/Chapter 5. Configuring interfaces
Bridge traffic between two or more Ethernet interfaces on Linux