关于 hostapd

2023-11-04

关于 hostapd

主页: http://w1.fi/hostapd/

hostapd是一个IEEE 802.11的AP和IEEE 802.1X/WPA/WPA2/EAP/RADIUS验证器.此页面用于怎么在linux系统下使用它.其他操作系统请参考hostapd主页

就Linux而言,版本只能使用以下3个包

所有的基于mac80211的驱动实现AP功能被hostapd's nl80211 驱动支持

The mac80211 子系统将所有的master模式已经移到用户空间.通过hostapd去处理客户端验证,设置加密密钥,建立密钥转化策略,以及无线公共部分的其他方面. 由此,老的使用'iwconfig <wireless interface> mode master'的方法已经不能使用了. 用户空间程序像hostapd目前使用netlink (the nl80211 driver)去创建master mode接口实现通信,monitor mode接口实现接收和发送管理框架

获得hostapd

Using your distributions hostapd

在编译和安装你的拷贝之前尝试发行版本是很明智的.这将让你以后的干礼轻松,如果你的版本大于0.6.8或更新,你通过简单配置hostapd-minimal.conf文件来进行测试:

#change wlan0 to your wireless device
interface=wlan0
driver=nl80211
ssid=test
channel=1

如果上述配置出现以下错误:

hostapd $ sudo hostapd ./hostapd-minimal.conf
Configuration file: ./hostapd-minimal.conf
Line 2: invalid/unknown driver 'nl80211'
1 errors found in configuration file './hostapd-minimal.conf'

那就意味着你的hostapd不支持nl80211,你将需要按以下操作编译。如果正常,你可以跳转到配置hostapd章节

下载和编译hostpad

使用基于nl80211的hostapd需要你有至少libnl-1.0 pre8或更新的 genl版本,nl80211依赖Generic Netlink. 大多数发行版都自带有这个或者更新的.在fedora或其它开发包和安装包分开发行版编译 时,你需要libnl-devel 包

使用下面命令在线获取hostapd:

git clone git://w1.fi/srv/git/hostap.git
cd hostap/hostapd

也可以使用下面的命令

wget http://w1.fi/releases/hostapd-x.y.z.tar.gz
tar xzvf hostapd-x.y.z.tar.gz
cd hostapd-x.y.z/hostapd

然后,我们需要在编译时配置enable nl80211支持.复制defconfig为.config,并编辑它.另外这里还有一些其他选项你可以开启支持,如果你的硬件支持,你可以开启802.11n支持. 大多数其他的加密类型和特性在大多数应用程序是不需要的,因此你可以自行考虑是否开启支持.

cp defconfig .config
vi .config

找到如下行:

#CONFIG_DRIVER_NL80211=y

取消'#'.同样根据你的要求配置其他选项.基本上,只要配置这行就足够让hostapd运行WPA/WPA2 验证和加密

编译:

make

如果出现以下错误:

driver_nl80211.c:21:31: warning: netlink/genl/genl.h: No such file or directory
driver_nl80211.c:22:33: warning: netlink/genl/family.h: No such file or directory
driver_nl80211.c:23:31: warning: netlink/genl/ctrl.h: No such file or directory
driver_nl80211.c:24:25: warning: netlink/msg.h: No such file or directory
driver_nl80211.c:25:26: warning: netlink/attr.h: No such file or directory

你需要安装或更新libnl0.6.8或更新.如果成功,尝试配置.

hostapd # ./hostapd ./hostapd-minimal.conf
Configuration file: ./hostapd-minimal.conf
Using interface wlan1 with hwaddr 00:0d:0b:cf:04:40 and ssid 'test'

如果像例子那样的显示,就可以配置hostapd. 如果出现其他错误,重新上述编译.如果出现以下错误:

Hardware does not support configured mode
wlan0: IEEE 802.11 Hardware does not support configured mode (2)
Could not select hw_mode and channel. (-2)
wlan0: Unable to setup interface.
rmdir[ctrl_interface]: No such file or directory

说明你设置了硬件不支持的hw_mode (a, b or g).

配置hostapd

Establishing Baseline for Configuration

配置之前,你需要了解客户端的能力.不是所有的设备都支持所有的你实现的方法,因此基准配置需被确定 . 你也需要了解你所在地区的channel上有最少的其他APs.当选择哪个channel使用,需要记住的是在20MHz内,channels和其他channels将会重叠 .

例如,你需要确定以下:

Encryption: wpa-psk + tkip
Wireless Mode: g
Normal for an environment that has to support semi legacy devices, that don't support ccmp or wpa2
Encryption: wpa2-psk + ccmp
Wireless Mode: g+n
Normal for an environment that has only up to date hardware and software
Encryption: wep
Wireless Mode: b
This is the works case scenario, as wep is broken and can be trivially cracked.  Don't consider this as anything more than keeping casual free loaders out.

一旦你确定的基准,你便可以开始编辑hostapd.conf:

Common Options: options that you will probably want to set
Additional Options: options that are likely useful to at least know you have
Extra Options: options that you aren't likely to need for most setups

Common Options

使用nl80211的最基本的配置选项在hostapd-minimal.conf已经提供,此配置不使用加密,不在意频段,在现实中不会这样.

首先,我们将设置无线接口,然后无线环境,最后加密.

Wireless Interface

设置概要:

  • interface:告诉hostapd使用的无线接口
  • bridge: 网络桥接口
  • driver: nl80211

如果你只有一个无线接口,并准备用它来桥接有线接口,一个例子如下:

interface=wlan0
bridge=br0
driver=nl80211

Wireless Environment

设置概要:

  • ssid: 设置名字(SSID = service set identifier) ,老版本(iwconfig)叫"essid".

  • hw_mode: 设置操作mode,channels.有效的值取决于硬件,通常:a, b, g
  • channel:设置hostapd操作的channel.

ssid很容易配置..

hw_mode需要你的硬件支持.'g'大多数都支持, 并向前兼容802.11b..

channel应该与其他AP被选择在 20mhz (4 channels)之外,或者每边10mhz (2 channels).这就意味着一个在channel 3的一个AP将干涉channel 1或者channel 5的AP.选择一个channel.通常用户的APs默认channel 6, 因此你使用channel 1或channel 11大多数情况下最佳. channels也依赖于本地规则.

例如:

ssid=MyNetwork
hw_mode=g
channel=1

802.11n 设置概要

802.11n在上述构建中添加了额外的功能 如果你的硬件不支持802.11n,或者你不打算用它,可以忽略

  • ieee80211n: 设置1开启802.11n,0禁用
  • ht_capab: 你设备的802.11n特性清单

可以使用 'iw list'查看你设备的能力

例如:

wme_enabled=1
ieee80211n=1
ht_capab=[HT40+][SHORT-GI-40][DSSS_CCK-40]

Authentication and Encryption

hostapd有大量的验证和加密选项. 以下介绍基本的加密wep/wpa/wpa2和其他选项.

设置概要:

  • macaddr_acl: MAC地址过滤. .
  • auth_algs: 加密字段, (1) 打开授权,(2) 共享授权(wep)(3).
  • ignore_broadcast_ssid: 开启或禁用广播ssid.
  • wpa: 类似auth_algs.first bit允许wpa1 (1), 第二位允许wpa2 (2), 都允许(3)
  • wpa_psk/wpa_passphrase: These establish what the pre-shared key will be for wpa authentication.
  • wpa_key_mgmt: This controls what key management algorithms a client can authenticate with.
  • wpa_pairwise: This controls wpa's data encryption
  • rsn_pairwise: This controls wpa2's data encryption

First, scratch macaddr_acl and ignore_broadcast_ssid from your priorities as they only enhance security (and even then, only slightly). Also, WEP has been effectively broken now, so unless you HAVE to support wep, scratch that from your list. This just leaves wpa/wpa2. Per the draft standard, wpa2 is required for 802.11n, and as there are known attacks on wpa now, wpa2 is the recommended authentication and encryption suite to use. Fortunately, you can have both enabled at once. If Windows clients are going to be connecting, you should leave ccmp encryption out of the wpa_pairwise option, as some windows drivers have problems with systems that enable it.

A good starting point for a wpa & wpa2 enabled access point is:

macaddr_acl=0
auth_algs=1
ignore_broadcast_ssid=0
wpa=3
wpa_passphrase=YourPassPhrase
wpa_key_mgmt=WPA-PSK
wpa_pairwise=TKIP
rsn_pairwise=CCMP

If, alternately, you just want to support wpa2, you could use something like:

macaddr_acl=0
auth_algs=1
ignore_broadcast_ssid=0
wpa=2
wpa_passphrase=YourPassPhrase
wpa_key_mgmt=WPA-PSK
wpa_pairwise=TKIP
rsn_pairwise=CCMP

That should be all of the settings that you'll need to change for a basic, secure, access point using hostapd with an AP enabled mac80211 driver.

Additional Options

Extra Options

Dynamic VLAN tagging

hostapd can be configured to move STAs into separate VLANs based on RADIUS tunnel attributes (as specified in RFC3580, http://tools.ietf.org/html/rfc3580#section-3.31):

Tunnel-Type=VLAN (13)
Tunnel-Medium-Type=802
Tunnel-Private-Group-ID=VLANID

To enable dynamic VLAN tagging the following options in hostapd.conf need to be set:

dynamic_vlan=1
vlan_file=/etc/hostapd.vlan

A value of 0 disables dynamic VLAN tagging, a value of 1 allows dynamic VLAN tagging and a value of 2 will reject the authentication if the RADIUS server does not provide the appropriate tunnel attributes.

Furthermore, hostapd needs to know how the VLAN interfaces should be named, this is done through an additional config file as specified in vlan_file.

Example /etc/hostapd.vlan:

1       wlan0.1
*       wlan0.#
This will create a wlan0.1 interface on top of wlan0 and move all STAs with the RADIUS supplied vlantag 1 to that interface. The second entry is used to dynamically create VLAN interfaces on top of wlan0, hostapd will create an interface wlan0.vlantag for each different vlantag as supplied by the RADIUS server. For example, if a STA associates and the RADIUS server attributes contain the vlantag 100 hostapd will create a wlan0.100 interface and map the STA to this new interface.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

关于 hostapd 的相关文章

  • harbor 离线同步

    场景 客户环境为离线环境 只能把公司私服的镜像下载后 然后通过客户端中转传到客户的私服上 客户端在客户内网中 然后拨号到公司的内网 bin bash harbor的url URL https 10 27 6 59 31009 源harbor
  • 文件锁

    借助 fcntl函数来实现文件锁机制 操作文件的进程没有获得文件锁时 可以打开文件 但无法执行read write操作 注意 文件锁只能用于进程间同步 fcntl函数 int fcntl int fd int cmd int fcntl i
  • 2022年江西省“网络空间安全”赛项模块B--流量分析(中职组)

    2022年中职组山西省 网络空间安全 赛项 B 6 流量分析任务书及解析 不懂私信博主 一 竞赛时间 420分钟 共计7小时 吃饭一小时 二 竞赛阶段 竞赛阶段 任务阶段 竞赛任务 竞赛时间 分值 第 阶段 单兵模式系统渗透测试 任务一 系
  • 【华为OD机试真题 Python】最差产品奖

    前言 本专栏将持续更新互联网大厂机试真题 并进行详细的分析与解答 包含完整的代码实现 希望可以帮助到正在努力的你 关于大厂机试流程 面经 面试指导等 如有任何疑问 欢迎联系我 wechat steven moda email nansun0
  • STM32外设天造地设的一对:ADC和DMA

    STM32外设天造地设的一对 ADC和DMA 引言 这篇文章主要介绍ADC和DMA配置的注意事项 适合懂得如何配置最基本的ADC和DMA 但是对它们两个的模式不是太理解的朋友们看 本文将重点介绍ADC和DMA模式的注意事项 DMA是CPU的
  • Spring Boot 报错org.springframework.jdbc.datasource.embedded.EmbeddedData

    记录一次Spring Boot错误解决方案 如果Spring Boot 在整合druid的时候 如果启动报错 并报以下错误的时候 org springframework beans factory UnsatisfiedDependency
  • 常用决策树模型ID3、C4.5、CART算法

    决策树概述 决策树 decision tree 是一种基本的分类与回归方法 下面提到的ID3 C4 5 CART主要讨论分类的决策树 在分类问题中 表示基于特征对实例进行分类的过程 可以认为是if then的集合 也可以认为是定义在特征空间
  • 计算机图形学期刊和会议

    目录 中国计算机学会推荐国际学术期刊 计算机图形学与多媒体 一 A类 二 B类 三 C类 中国计算机学会推荐国际学术会议 计算机图形学与多媒体 一 A类 二 B类 三 C类 中国计算机学会推荐国际学术期刊 计算机图形学与多媒体 一 A类 序

随机推荐

  • 光纤收发器怎么连?光纤收发器连接图解!

    光纤收发器可以实现光信号和电信号的转换 通过光纤进行信号的转换 最后和一些设备连接 让你的传输通信畅通无阻 当我们远距离传输时 通常会使用光纤来传输 因为光纤的传输距离很远 一般来说单模光纤的传输距离在10千米以上 而多模光纤的传输距离最高
  • C++报错提示某类名不是类或命名空间名称

    在学习C 的友元时 遇到一个问题 两个类互相调用时报错 如图 include
  • 三菱数控CNC系统G代码M代码大全

    G00 快速定位 G01 直线补间切削 G02 圆弧补间切削CW 顺时针 G03 圆弧补间切削CCW 逆时针 G02 3 指数函数补间 正转 G03 3 指数函数补间 逆转 G04 暂停 G05 高速高精度制御 1 G05 1 高速高精度制
  • C++ //STL 简介

    STL简介 STL Standard Template Library 即标准模板库 是一个具有工业强度的 高效的C 程序库 STL的一个重要特点是数据结构和算法的分离 STL另一个重要特性是它不是面向对象的 STL六大组件 容器 Cont
  • 非线性解方程组c语言_08 -- 非线性有限元分析方法

    到目前为止 讨论的都是线性问题 这里采用了两个基本假设 1 材料的应力 应变关系是线性的 D 2 结构的应变 位移关系是线性的 B 非线性有限元分析方法大同小异 以材料非线性为例 1 当材料的应力 应变关系是非线性时 刚度矩阵不是常数 与位
  • 代码管理工具SVN

    svn 什么是svn SVN是Subversion的简称 是一个开放源代码的版本控制系统 相较于RCS CVS 它采用了分支管理系统 它的设计目标就是取代CVS 互联网上很多版本控制服务已从CVS迁移到Subversion 说得简单一点SV
  • 力扣-->#剑指Offer 563 . 二叉树倾斜

    这道题要理解有一定的困难 首先看到这样的题目肯定想到的就是遍历 其次 需要有一个值来记录倾斜度 即 left right 再者 需要一个函数来帮忙辅助计算倾斜度 即findSum class Solution int findSum Tre
  • RIP、OSPF等路由协议严格意义上讲属哪一层?

    1 RIP基于UDP BGP基于TCP OSPF和EIGRP基于IP 这些在TCP IP协议栈中定义的路由协议用于发现和维护前往目的地的最短路径 你可以认为它们不属于网络层协议 注意 是用 based on 而不是实现了 BGP用TCP 所
  • 微信公众号h5页面实现授权,前端部分

    授权步骤 微信开发工具上配置公众号的apiId 微信环境内调起微信的授权功能 代码实现 此段代码放在app vue的监听函数中 每当路由发生变化 都会判断此页面是否已授权 没授权的话则进行授权 watch route handler fun
  • 4. 消息中心的设计与实现

    消息中心的设计与实现 一 引言 运用场景 1 消息的主动提醒 客户端被动接收 2 客户模块 及时通讯 3 单一登录 一个账号只能在一个设备登录 消息中心的实现方案 1 客户端轮询 2 TCP长连接 常用 Java的长连接的方案 Java B
  • windows命令行下ftp连接超时的可能原因

    1 需要连接的主机没有启用ftp服务 iis没有建立ftp站点 ftp身份验证设置不当 详情参考博文 windows下使用ftp 以及 windows开启ftp服务 两篇博文有重复的部分 我将他们取并集操作了一遍 另外 我还处理了iis未授
  • 使用Visual Studio编译ffmpeg

    一 首先参照下面的链接配置和编译 FFmpeg在VS2017下的编译 vs2017 ffmpeg源码编译 鱼儿 1226的博客 CSDN博客 vs2019编译ffmpeg源码为静态库动态库 完整步骤 亲测可行 ffmpeg vs 令狐掌门的
  • 嵩天老师-Python语言程序设计-Python123配套练习测验题目汇总整理

    测验1 Python基本语法元素 知识点概要 普遍认为Python语言诞生于1991年 Python语言中的缩进在程序中长度统一且强制使用 只要统一即可 不一定是4个空格 尽管这是惯例 IPO模型指 Input Process Output
  • 求最长不含重复字符的子字符串——C++

    声明 本文原题主要来自力扣 记录此博客主要是为自己学习总结 不做任何商业等活动 一 原题描述 剑指 Offer 48 最长不含重复字符的子字符串 请从字符串中找出一个最长的不包含重复字符的子字符串 计算该最长子字符串的长度 示例 1 输入
  • Linux查看进程命令

    查看进程 1 ps 命令用于查看当前正在运行的进程 grep 搜索 例如 ps ef grep java 表示查看所有进程里 CMD 是 java 的进程信息 2 ps aux grep java aux 显示所有状态 ps 3 kill
  • Sublime Text4 配置 Python3 环境、代码提示、编译报错教程

    1 配置 Python3 环境 单击 工具 gt 编译系统 gt 新建编译系统 弹出 替换里面的内容为 cmd G CodeTools anaconda3 python exe u file file regex File line 0 9
  • 数据中台数据分析过程梳理

    在当今社会中 随着企业的快速发展 相关业务系统的建设也会越来越多 新的业务模式 新的IT架构 多云环境的出现等等 而一些问题就逐渐暴露了出来 企业之间的IT无法做到互通 新模式生产数据与旧数据无法互通 企业IT架构错综复杂 底层数据互通更加
  • java使用opencv库二值化图片

    应用场景 截取监控视频图片保存到本地后用作后期监控视频角度调整参考 使用二值化后的图片并进行透明度降低进行监控矫正 package img import java awt Color import java awt image Buffer
  • delphi XE5如何把其它程序而不是本软件在通知区域的图标隐藏?不是关闭进程。请举个详细例子,比如Shell_NotifyIcon...

    Delphi XE5可以使用API函数Shell NotifyIcon来实现隐藏其它程序的图标 具体代码例子如下 procedure HideIcon APid Cardinal var noteIconData TNOTIFYICONDA
  • 关于 hostapd

    关于 hostapd 主页 http w1 fi hostapd hostapd是一个IEEE 802 11的AP和IEEE 802 1X WPA WPA2 EAP RADIUS验证器 此页面用于怎么在linux系统下使用它 其他操作系统请