网卡选择
不同于windows上,大部分的网卡都支持软AP ,linux下的网卡需要支持mode master的才可以做软AP 。具体识别方法如下
1、iwconfig识别
1 | iwconfig wlxec888fbd5d61 mode master |
2、iw识别
上面的操作失败,证明不支持。再进行进一步的验证,有些新的网卡用的是mac80211 framework,对于这些网卡的话,用iwconfig来测试它是否支持master模式是行不通的。
因为他们是使用新的 nl80211接口在用户空间通信的。再使用iw命令进行测试:
1 | [root@localhost ~]$ sudo iw list |
如果「Supported interface modes」中有「AP」的话,那么恭喜你,你的无线网卡可以架设虚拟AP 。如果没有则不支持。
3、驱动识别
1 | root@XuQi:~/proj/Private# ethtool -i wlxec888fbd5d61 |
例如上面的示例中使用的驱动为rtl8192cu,通过http://wireless.kernel.org/en/users/Drivers AP模式支持的驱动列表里的查找AP项为yes,证明其支持。
即然如此,如何在未购买网卡前选择一款一定支持的网卡呢?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/releases/hostapd-2.9.tar.gz
hostapd-rtl871xdrv补丁
1 | git clone http://www.github.com/pritambaral/hostapd-rtl871xdrv |
1 | Configuration file: hostapd.conf |
这个问题的出现是由于你的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 | CFLAGS += -I/home/xuqi/hostadp/build/include/libnl3 |
编译错误,注释DBUS
1 | # Add support for new DBus control interface |
启动:
1 | sudo ./wpa_supplicant -i wlxec888fbd5d61 -c ./wpa_supplicant.conf -B |
扫描:
1 | sudo wpa_cli -i wlxec888fbd5d61 scan |
连接:
如果要连接加密方式是[WPA-PSK-CCMP+TKIP][WPA2-PSK-CCMP+TKIP][ESS]
(wpa
加密),wifi
名称是name
,wifi
密码是:psk
。
1 | sudo wpa_cli -i wlxec888fbd5d61 set_network 0 ssid '"dev-xu"' |
保存连接:
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时,可能会发生这种情况。
请尝试以下步骤:
- 在终端中运行:
sudo rfkill unblock wifi; sudo rfkill unblock all
- 重新运行
sudo rfkill list
以确认该卡已被解除阻止。 - 重启
- 再次重新运行
sudo rfkill list
以确认已保留的解除阻塞。 - 重新运行
sudo lshw -class network
– 您现在应该看到内核已识别(或不识别)无线卡。
如果已识别无线内核模块(不应该说”unclaimed”),则网络管理器现在应该能够看到您的空闲区域中可用的无线网络。