XuQi's Blog

  • 首页

  • 归档

hostapd_dhcpd

发表于 2019-09-20 更新于 2019-10-20

网卡选择

不同于windows上,大部分的网卡都支持软AP ,linux下的网卡需要支持mode master的才可以做软AP 。具体识别方法如下

1、iwconfig识别

1
2
3
iwconfig wlxec888fbd5d61 mode master
Error for wireless request "Set Mode" (8B06) :
SET failed on device wlxec888fbd5d61 ; Invalid argument.

2、iw识别

上面的操作失败,证明不支持。再进行进一步的验证,有些新的网卡用的是mac80211 framework,对于这些网卡的话,用iwconfig来测试它是否支持master模式是行不通的。

因为他们是使用新的 nl80211接口在用户空间通信的。再使用iw命令进行测试:

1
2
3
4
5
6
7
8
9
10
11
[root@localhost ~]$ sudo  iw list
........略........................
Supported interface modes:
* IBSS
* managed
* AP
* AP/VLAN
* monitor
* mesh point
* P2P-client
* P2P-GO

如果「Supported interface modes」中有「AP」的话,那么恭喜你,你的无线网卡可以架设虚拟AP 。如果没有则不支持。

3、驱动识别

1
2
3
4
5
6
7
8
9
10
11
root@XuQi:~/proj/Private# ethtool -i wlxec888fbd5d61
driver: rtl8192cu
version: 4.15.0-60-generic
firmware-version: N/A
expansion-rom-version:
bus-info: 2-6:1.0
supports-statistics: yes
supports-test: no
supports-eeprom-access: no
supports-register-dump: no
supports-priv-flags: no

例如上面的示例中使用的驱动为rtl8192cu,通过http://wireless.kernel.org/en/users/Drivers AP模式支持的驱动列表里的查找AP项为yes,证明其支持。

1568948144309

即然如此,如何在未购买网卡前选择一款一定支持的网卡呢?wireless.kernel.org也给我们提供了一个方法 ,通过http://wireless.kernel.org/en/users/Devices 硬件列表
(该页按pci、usb、pcmcia接口类型做了区分,点开相应的类型即可查看具体的硬件)。当然,这个表里列出的并不完全,也并不能保证是最适合做软AP的硬件 。是否识合请参查看上面的三个方法。

编译hostapd

编译依赖libnl-3.2.25

http://lists.infradead.org/pipermail/libnl/2014-July/001549.html

下载:http://www.infradead.org/~tgr/libnl/files/libnl-3.2.25.tar.gz

编译依赖openssl

https://www.openssl.org/source/

下载:https://www.openssl.org/source/openssl-1.0.2t.tar.gz

编译hostapd

http://w1.fi/hostapd/

下载:http://w1.fi/releases/hostapd-2.9.tar.gz

hostapd-rtl871xdrv补丁
1
git clone http://www.github.com/pritambaral/hostapd-rtl871xdrv
1
2
3
4
5
6
7
8
9
10
11
Configuration file: hostapd.conf
drv->ifindex=4
l2_sock_recv==l2_sock_xmit=0x0x1130410
ioctl[SIOCSIWMODE]: Invalid argument
Could not set interface to mode(3)!
Could not set interface to master mode!
rtl871xdrv driver initialization failed.
wlxec888fbd5d61: interface state UNINITIALIZED->DISABLED
wlxec888fbd5d61: AP-DISABLED
wlxec888fbd5d61: CTRL-EVENT-TERMINATING
hostapd_free_hapd_data: Interface wlxec888fbd5d61 wasn't started

这个问题的出现是由于你的kernel内核没有配置对wifi的master模式的支持(即对AP热点的支持),解决这个问题的办法就是用make menuconfig打开图形界面,然后选择IEEE 802.11 for Host AP (Prism2/2.5/3 and WEP/TKIP/CCMP)这个选项;这个选择的地址可以参考WG217 wifi模块RTL8811CU的移植(linux)这篇博客里面的第三部分:RTL8821CU驱动所需的支持中的第2小点:master的选项所在位置有详细的讲解。
原文链接:https://blog.csdn.net/weixin_44362642/article/details/88891384

编译wpa_supplicant

http://w1.fi/releases/wpa_supplicant-2.9.tar.gz

添加

1
2
3
4
CFLAGS +=  -I/home/xuqi/hostadp/build/include/libnl3
LIBS += -L/home/xuqi/hostadp/build/lib

CFLAGS += -I/home/xuqi/hostadp/build/include/

编译错误,注释DBUS

1
2
3
4
5
6
# Add support for new DBus control interface
# (fi.w1.hostap.wpa_supplicant1)
#CONFIG_CTRL_IFACE_DBUS_NEW=y

# Add introspection support for new DBus control interface
#CONFIG_CTRL_IFACE_DBUS_INTRO=y
启动:
1
sudo ./wpa_supplicant -i wlxec888fbd5d61 -c ./wpa_supplicant.conf -B
扫描:
1
2
3
sudo wpa_cli -i wlxec888fbd5d61  scan
sudo wpa_cli -i wlxec888fbd5d61 scan_result
sudo wpa_cli -i wlxec888fbd5d61 add_network
连接:

如果要连接加密方式是[WPA-PSK-CCMP+TKIP][WPA2-PSK-CCMP+TKIP][ESS] (wpa加密),wifi名称是name,wifi密码是:psk。

1
2
3
sudo wpa_cli -i wlxec888fbd5d61 set_network 0 ssid '"dev-xu"'
sudo wpa_cli -i wlxec888fbd5d61 set_network 0 psk '"xuqi9999"'
sudo wpa_cli -i wlxec888fbd5d61 enable_network 0
保存连接:
1
sudo wpa_cli -i wlxec888fbd5d61 save_config
断开连接:
1
sudo wpa_cli -i wlxec888fbd5d61 disable_network 0
分配IP:
1
udhcpc -i wlxec888fbd5d61 -s /etc/udhcpc.script -q

Soft-blocking

输出到sudo rfkill list显示您的网卡是”soft-blocked”。

当无线卡通过内核发信号通知switch-off时,可能会发生这种情况。

请尝试以下步骤:

  1. 在终端中运行:sudo rfkill unblock wifi; sudo rfkill unblock all
  2. 重新运行sudo rfkill list以确认该卡已被解除阻止。
  3. 重启
  4. 再次重新运行sudo rfkill list以确认已保留的解除阻塞。
  5. 重新运行sudo lshw -class network – 您现在应该看到内核已识别(或不识别)无线卡。

如果已识别无线内核模块(不应该说”unclaimed”),则网络管理器现在应该能够看到您的空闲区域中可用的无线网络。

c++基础知识总结
  • 文章目录
  • 站点概览

XuQi

44 日志
30 标签
  1. 1. 网卡选择
  2. 2. 编译hostapd
    1. 2.1. 编译依赖libnl-3.2.25
    2. 2.2. 编译依赖openssl
    3. 2.3. 编译hostapd
    4. 2.4. hostapd-rtl871xdrv补丁
  3. 3. 编译wpa_supplicant
    1. 3.1. 启动:
    2. 3.2. 扫描:
    3. 3.3. 连接:
    4. 3.4. 保存连接:
    5. 3.5. 断开连接:
    6. 3.6. 分配IP:
  • Soft-blocking
  • © 2019 XuQi
    由 Hexo 强力驱动 v3.9.0
    |
    主题 – NexT.Muse v7.3.0