Wifi隔离 (AP隔离)的原理及实现

2023-11-18

1、wifi隔离是什么
无线隔离又称客户端隔离(client isolation),也称AP隔离,指的是阻止连接路由器的设备之间互相访问,多见于无线通信方面,常见于路由器设置中。

AP隔离非常类似有线网络的VLAN(虚拟局域网),将所有的无线客户端设备之间完全隔离,是客户端只能访问AP接入的固定网络。通俗来讲,就是各个连接无线的客户机(如手机、电脑等)之间无法互相通讯的,即你无法在两台同时连接AP的电脑间使用类似共享文件等功能。因此,在开启该功能之后,可以保护不同用户间的数据安全,有利于抵御外部攻击。

2、wifi隔离的应用场景
(1)、非常适合大型的会议室、酒店、机场等公共场所的无线网络建设,让各个接入的无线客户端之间相互保持隔离,提供彼此间更加安全的接入。
(2)、对于家庭用户来说没有太多的实际意义,但企业用户在一些特殊的场合可以采用这种方式来加强无线网络的安全性。例如有客户或外单位人员参加的会议等公共活动。
(3)、用于对酒店和机场等公共热点Hot Spot的架设,让接入的无线客户端保持隔离,提供安全的Internet接入。

3、wifi隔离的原理
对接收到的数据报文进行解析,如果目的地址是单播地址,且目的地址位于无线系统中,则此时根据“无线隔离”的关键字的值来做相应处理,如果开启无线隔离,则将收到的包直接丢弃。

4、realTek芯片厂商在无线芯片8192cd中的实现
在8192cd_rx.c中,对接收到的数据报文进行解析,如果目的地址是单播地址,且目的地址位于无线系统中,则此时根据block_relay的值来做相应处理,如果开启无线隔离,block_relay=1,则将收到的包直接丢弃;如果block_relay=2,则不再中继到目的地址,而是将此包转发到桥;如果block_relay=3,则做其他一些特殊处理。
(1)、通过字段“block_relay”来配置,默认关闭;可以通过getmib block_relay来获取当前状态,打开WiFi隔离可以通过以下命令实现:setmib block_relay 1

(2)、在8192cd_rx.c中,函数process_datafrme(struct rtl8192cd_priv *priv, struct rx_frinfo *pfrinfo)中确定指定数据包的转法或是丢弃。


代码流程图如下:


5、MTK芯片厂商在无线芯片mtk7603中的实现
(1)、MTK的无线隔离是通过关键字”NoForwarding“来配置

(2)、在ap_data.c中,函数INT ap_rx_foward_handle(RTMP_ADAPTER *pAd, struct wifi_dev *wdev, PNDIS_PACKET pPacket)中确定数据包的转法还是丢弃。

(3)、当NoForwarding==1时,to_air为FALSE,不进行转发。


6、BRCOM芯片厂商在无线芯片bcm96848中的实现
(1)、BRCOM的无线隔离是通过关键字”ap_isolate”来配置默认值为0,也即不开启该功能。
net/wl/impl20/dhd/dhd/sys/dhd_common.c

博通通过该命令开启/关闭客户端隔离:wl ap_isolate 1/0
net/wl/impl20/wl/exe/wlu.c

(2)、在net/wl/impl20/wl/exe/wlu.c中,函数static void BCMFASTPATH wlc_recvdata_sendpkt(
wlc_info_t *wlc, void *p, wlc_if_t *wlcif)中确定数据包的转法还是丢弃。

处理发送到BSS中的数据包,决定是转发还是丢弃。通过下面宏定义来确定隔离发生区域范围。

/* ap_isolate bitmaps */
#define AP_ISOLATE_DISABLED        0x0
#define AP_ISOLATE_SENDUP_ALL        0x01
#define AP_ISOLATE_SENDUP_MCAST        0x02

上述函数处理的是fast path过程的数据转发流程,此外,在函数void
dhd_rx_frame(dhd_pub_t *dhdp, int ifidx, void *pktbuf, int numpkt, uint8 chan)中,直接处理rx数据帧。


7、小结
综合对上面客户端隔离代码的分析可知,整体处理流程大致相似,所有隔离发生在rx数处理过程中,博通芯片的处理考虑了(BSS)基本服务集,隔离只发生在同一服务集下的sta。在realtek的芯片中,对各种数据报文的处理大多集中在process_datafrme函数中,对各种报文进行特定的处理,对于定制化的需求,可以在该模块中实现。

原文链接:https://blog.csdn.net/sky619351517/article/details/86363247

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Wifi隔离 (AP隔离)的原理及实现 的相关文章

随机推荐