shixudong@163.com

无线AP上大都有一个选项:启用AP隔离,启用该功能后,连接到同一AP的无线终端之间不能互相通信,但该功能并不限制无线终端和有线终端之间的通信。本人对Linux下用hostapd实现AP隔离进行了一些分析,特此记录。

Hostapd参数ap_isolate,用于控制AP隔离,但hostapd本身并不实现这一功能,只是将该参数通过nl80211传递给mac80211,由mac80211来实现AP隔离功能(鉴于mac80211与softmac驱动配套使用,fullmac驱动压根不需要使用mac80211,所以使用fullmac驱动的无线设备不保证支持AP隔离功能)。经对mac80211相关源码进行分析,ap_isolate的真实作用是控制无线AP收到包后,是通过调用dev_queue_xmit将包通过无线网卡直接发送出去(ap_isolate=0),或是通过调用netif_receive_skb交由本机上层网络栈处理(ap_isolate=1)。

ap_isolate=0时,无线终端之间数据包经由AP无线网卡直接通信(此时AP行为如同HUB),并不抵达AP上层网络栈。ap_isolate=1时,无线终端之间数据包只发往AP上层网络栈,如AP没加入网桥,其上层网络栈为无线AP三层,因数据包目标MAC不是AP无线网卡MAC(包类型对应PACKET_OTHERHOST),包将被三层DROP;如AP已启用网桥,其上层网络栈为网桥,无线终端之间数据包由网桥进行二层转发,但由于桥转发本身的内在机制,网桥收到的包不允许从同一端口再次转发出去,故包被二层DROP。故ap_isolate=1时,无论是否加入网桥,无线终端之间都无法通信,从而实现AP隔离。同一网桥下无线终端和有线终端之间不存在上述二层转发限制,可以互相访问。

在与网桥配合使用时,ap_isolate=1除了实现AP隔离外,还可利用multicast_snooping优化组播性能或利用SDN对无线终端进行管控,其实质都是将无线终端之间的数据包引导到AP的网桥处理。由此引发了一个新的挑战,既希望利用网桥处理数据包的优势,又需要关闭AP隔离功能,让无线终端之间互相通信,显然,此时无法通过改变ap_isolate来实现上述目的,为此可利用网桥端口hairpin模式控制AP是否隔离。设置网桥无线端口的hairpin_mode=1后,从同一无线端口进来的包允许通过hairpin功能原路返回,无线终端之间数据包可以进行二层转发,从而实现互相通信,这也是新版Openwrt实现无线AP的标准配置(ap_isolate=1、hairpin_mode=1)。

其实Linux是相当灵活的,可以用多种方式实现同一目的。当ap_isolate=1的主要目的是为了将无线终端之间数据包引导到AP的网桥处理时,还可通过网桥无线端口的isolated参数控制AP是否隔离(此时hairpin_mode应固定为1,否则AP隔离始终处于开启状态):isolated=1,开启AP隔离,isolated=0,关闭AP隔离。

上文分析了hostapd参数ap_isolate=1时网桥无线端口参数hairpin_mode、isolated如何控制无线终端之间的通信行为,这两个参数属于“或”关系,某种意义上是等效的。(1)hairpin_mode=0,始终开启AP隔离;hairpin_mode=1,通过isolated控制AP隔离开启与否。(2)isolated=1,始终开启AP隔离;isolated=0,通过hairpin_mode控制AP隔离开启与否。但如ap_isolate=0,鉴于无线终端之间相互通信不经过网桥,此时参数hairpin_mode、isolated压根无法影响或控制无线终端之间的通信,AP隔离始终处于关闭状态。

顺便提一下,isolated作为网桥参数,不仅可以控制AP隔离(前提是ap_isolate=1,数据包经由网桥处理),还可以控制同一网桥下无线终端和有线终端之间的相互通信:数据包进出端口的isolated均设为1,即可隔离两个端口上所连接设备之间相互通信。

Linux无线AP隔离功能分析相关推荐

  1. cpe linux -无线 -ap,CPE 是啥?Wi-Fi 6+ 牛在哪儿?一文看懂华为移动路由发展史

    2 月 24 日,余承东在巴塞罗那发布全球首款 Wi-Fi 6+ 5G 路由器--华为 5G CPE Pro 2.它同时搭载 5G 和 Wi-Fi 6+ Top2 连接技术,5G 理论峰值下载速度 3 ...

  2. Linux下用hostapd架无线AP(转载)

    原网址:http://ihacklog.com/post/use-hostapd-to-setup-wireless-access-point-under-linux.html 本文将介绍在linux ...

  3. Linux下用hostapd架无线AP

    Published by 荒野无灯 on 2011-10-08 00:56:02 under 服务器/MySQL Tags: 路由,无线AP,hostapd 34452 views 本文将介绍在lin ...

  4. 使用树莓派3B+ 制作一个属于自己的无线AP 无线路由器 一个Wi-Fi热点

    前提条件: 硬件准备: 1.树莓派3(选择因为它有一个以太网端口和一个内置的Wi-Fi连接). 2.树莓派的电源. 3.一张至少8GB的MicroSD卡. 4. 一条RJ45网线 软件: 5. Ras ...

  5. 家庭局域网开启AP隔离利用无线路由器互连

    一开始可以上网,可以ping网关192.168.1.1,但是几台电脑之间就是不能互ping. 其实,真实的原因就是没有开启无线路由器的AP隔离. 在浏览器中输入192.168.1.1进入路由搜索一般用 ...

  6. 计算机管理ap,如何设置AC功能管理无线AP

    AC功能管理无线AP第一步.连接ap 举例型号TL-ER6520G 不同类型的AP供电方式可能有所差异,包括直流电源供电和网线供电(PoE供电)两种.如下 [1] 直流电源供电 使用自带的电源适配器给 ...

  7. iptables学习笔记:使用NAT实现简单的无线AP

    之前使用的是无线路由让手机上网.学习了iptables后,尝试在非openwrt系统的Linux上实现相同功能.本文简单记录一下. 手上有块X86的板子,上面安装了Linux系统.几个月前研究了WIF ...

  8. 计算机网络ap参数,酒店计算机网络(含无线AP)系统主要技术参数.docx

    酒店计算机网络(含无线AP)系统主要技术参数 交换机 产品特点 内部支持ARP防欺骗功能,防攻击功能,能够自动识别ARP欺骗报文,并进行隔离,避免了ARP等病毒对网络的影响,保障了网络的稳定.POE供 ...

  9. 天融信数通小百科:无线AP的Soul mate—POE交换机

    什么是POE交换机 说到无线AP,大家或多或少都会有概念--就是头顶上那个给我们提供无线信号的设备吧! AP能正常工作,我们的无线上网体验就会平稳.高速. 如果AP工作不稳定,甚至断电停止工作,对于已 ...

最新文章

  1. java怎么将前端的数据存到关联的表中_MySQL数据库性能优化
  2. 全球第一所人工智能大学成立:培养硕博研究生,全员全额奖学金
  3. Prometheus — 软件架构
  4. kafka 启动_「首席看Event Hub」如何在您的Spring启动应用程序中使用Kafka
  5. 简单的ASP.NET无刷新分页
  6. Flutter原理与实践
  7. 对于公司,也是我对软件行业,软件项目的五想法
  8. tomcat增加处理线程数量
  9. IplImage, CvMat, Mat 的关系和相互转换(转)
  10. pcie总线连接两台电脑_基于PCIE总线多主互连系统的设计与实现
  11. Excel中的常用快捷键
  12. c# Invalidate() Update() Refresh()的区别
  13. 如何撰写一份好的市场调查报告
  14. 数据分析方法(3)之AARRR模型
  15. javascript 基本用法
  16. 新一代区块链手机“甲骨文”即将上市
  17. S7-200SMART案例分析——运动控制编程
  18. 区块链开发之windows环境配置
  19. 【信息安全课程设计】字典破解密码
  20. 微信公众号都有哪些营销技巧

热门文章

  1. 摸石头——NOde.js(四)
  2. 有一个人愿意参加第一届校园活力健美操这
  3. 5个视频剪辑必用网站
  4. 汇编——从一道题目浅谈分支结构
  5. 面试-android
  6. 开机输入用户名密码时弹出被调用对象已与其客户端断开连接解决方法
  7. 高德地图功能点使用整理
  8. 把 Win 8.1 升级成 Windows 2012 R2 (再续)
  9. EMMC内存芯片和NAND区别
  10. padding不会撑开盒子的情况