浅析Linux下的桥接

桥接:桥接就是把一台机器上的若干个网络接口“连接”起来。其结果是,其中一个网口收到的报文会被复制给其他网口并发送出去。以使得网口之间的报文能够互相转发。

特别注意:桥接模式下,桥接口和子桥接口其中一个MAC地址需相同
这里写图片描述

三层的路由器,如上图,路由器有五个port口,port4是连接CPU的,只有一个eth2真实网卡,eth2.1,eth2.2都是虚拟网卡,是通过eth2用vlan划分出来的。

vconfig add eth2 1 /*添加eth2.1*/
vconfig add eth2 2 /*添加eth2.2*/

/*划分vlan*/
switch reg w 44 1001 /*port0 port1 vid 1*/ 
switch reg w 48 1002 /*port2 vid 1 port3 vid 2*/

eth2.1 表示的port1,2,3三个网口做LAN口,eth2.2表示port4做WAN口

一. 路由模式下

一般,我们用br0做LAN口,所以用br0桥接到eth2.1,port0,port1,port2之间可以相互通信。

brctl addbr br0   /*添加br0虚接口*/
brctl addif br0 eth2.1   /*eth2.1桥接到br0*/
ifconfig eth2.1 192.168.1.1 /*起接口*/

虚化分出一个br1桥接到WAN口(eth2.2)

brctl addbr br1
brctl addif br1 eth2.2
ifconfig br1 0.0.0.0
/*桥接无线*/
brctl addbr ra0
brctl addif br0 ra0
ifconfig ra0 0.0.0.0

二. 桥接模式下
由于功能需求vlan穿透,索性去除vlan,保留br1作为LAN口

/*reset vlan*/
vconfig rem eth2.1
vconfig rem eth2.2
brctl delif br0 ra0   /*去掉ra0在br0上的桥接*/
brctl delif br0 eth2.1  /*去掉eth2.1在br0上的桥接*/
brctl delif br1 eth2.2
brctl addbr br1 eth2
brctl addbr br1 ra0

eth2作为真实网卡,作为br1的一个端口,整个路由器没有LAN,WAN之分,类似傻瓜交换机。

网桥的实现实在数据链路层

这里写图片描述
如上图:
网桥设备br0绑定了eth0和eth1。对于网络协议栈的上层来说,只看得到br0,因为桥接是在数据链路层实现的,上层不需要关心桥接的细节。于是协议栈上层需要发送的报文被送到br0,网桥设备的处理代码再来判断报文该被转发到eth0或是eth1,或者两者皆是;反过来,从eth0或从eth1接收到的报文被提交给网桥的处理代码,在这里会判断报文该转发、丢弃、或提交到协议栈上层。
而有时候eth0、eth1也可能会作为报文的源地址或目的地址,直接参与报文的发送与接收(从而绕过网桥)。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值