欢迎光临
我们一直在努力

Debian10使用Hostapd搭建WiFi热点

我这个环境是在proxmox内开了一台虚拟机,把usb无线网卡直通给虚拟机,然后在虚拟机内操作的。

网络很简单,我是光猫改了个桥接,然后用路由器拨号上网的,proxmox是接到路由器的LAN口,proxmox内的虚拟机是配置的桥接网络。

简而言之proxmox和虚拟机都在同一个网段内:192.168.0.x。配置的步骤都差不多,关键点其实在于这个usb无线网卡:

1.首先这个网卡要支持AP模式。

2.其次得搞一个在Linux有比较好的驱动支持的。

3.和Hostapd兼容。

我在这里看了半天:https://wireless.wiki.kernel.org/en/users/drivers

发现这些驱动支持的芯片貌似都很老了,现在外面卖的usb无线网卡不一定是用的这些芯片,而且貌似都没有一个功能支持特别全面的芯片。

我最终选择rt2800usb驱动支持的RT3070芯片,特地去某宝买了一个用这个芯片的usb无线网卡,以防翻车。。

把usb无线网卡直通给虚拟机后,看看虚拟机能不能识别到,没有的话你可能需要找合适的驱动自己手动安装:

root@debian:~# lsusb
Bus 001 Device 002: ID 148f:3070 Ralink Technology, Corp. RT2870/RT3070 Wireless Adapter
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 005 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 004 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 003 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 002 Device 002: ID 0627:0001 Adomax Technology Co., Ltd 
Bus 002 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub

可以看到能识别到RT2870/RT3070 Wireless Adapter,接下来看看网卡支不支持AP模式:

apt -y update
apt -y install iw lshw
iw list

确保下面能列出AP,没有的话就不能搭建Wi-Fi热点:

	Supported interface modes:
		 * IBSS
		 * managed
		 * AP
		 * AP/VLAN
		 * monitor
		 * mesh point

接下来看有没有wlan0接口:

lshw -c network

如果有的话那恭喜你什么都不用做,可以说是开箱即用。

有一种像我这种情况:有无线网卡的接口,但名字不是wlan0,是一个以MAC地址命名的接口。

这显然是不正常的,后续我也发现hostapd识别不到这个接口,所以这里我需要编辑grub:

nano /etc/default/grub

加入下面的配置:

GRUB_CMDLINE_LINUX="net.ifnames=0 biosdevname=0"

更新grub:

update-grub

这样的话机器重启后会帮我们重命名接口。但是有一个问题,主网卡的接口名字也会被重命名,我的是ens18重启后会变成eth0。

所以在重启之前还需要编辑接口配置文件:

nano /etc/network/interfaces

修改主网卡的接口名字为eth0:

allow-hotplug eth0
iface eth0 inet dhcp

最后重启即可:

reboot

hostapd支持桥接和NAT两种方式配置网络,这里我选择用桥接。现在安装hostapd和桥接需要用到的包:

apt -y install hostapd bridge-utils

还是编辑接口配置文件:

nano /etc/network/interfaces

建一个名为br0的网桥,这个网桥只需要桥到eth0即可:

allow-hotplug eth0
iface eth0 inet manual

auto br0
iface br0 inet static
    address 192.168.0.8
    netmask 255.255.255.0
    gateway 192.168.0.1 # 我的路由器IP
    bridge_ports eth0

重启网络:

systemctl restart networking

接下来编辑hostapd的配置文件:

nano /etc/hostapd/hostapd.conf

修改为如下配置:

interface=wlan0 # 无线网卡接口名
bridge=br0 # 网桥名和之前建立的网桥名对应
driver=nl80211 # 驱动
ssid=imlala # Wi-Fi的SSID
utf8_ssid=1 # 防止某些设备出现SSID乱码
preamble=1 # 优化网络的设置
hw_mode=g # 模式
ieee80211n=1 # 启用802.11n支持
wmm_enabled=1 #QoS支持
ht_capab=[HT40+][SHORT-GI-40][RX-STBC1] # 这个需要根据你的网卡支持情况自己修改,通过iw list命令查看Capabilities,不需要可以注释掉
country_code=CN # 国家
channel=6 # 信道
macaddr_acl=0 # 允许所有MAC地址连接
ignore_broadcast_ssid=0 # 广播SSID
auth_algs=1 # 验证
wpa=2 # 1指设置WPA,2指WPA2,3指两者皆支持
wpa_passphrase=yourpassword # 设置你的Wi-Fi密码
wpa_key_mgmt=WPA-PSK # 认证方式
wpa_pairwise=TKIP # TKIP加密方式
rsn_pairwise=CCMP # AES加密方式

上面这个配置是最基本的使用WPA2-PSK认证的Wi-Fi热点。

由于每个人的硬件和网络环境都不一定完全相同,这个配置只能说比较通用,如果你的设备使用这个配置不能正常工作,你需要参考一下示例配置文件,根据需要自己修改:

https://w1.fi/cgit/hostap/plain/hostapd/hostapd.conf

由于Debian10仓库的这个hostapd包谜之操作,你需要先unmask它:

systemctl unmask hostapd

才能像往常一样使用systemd管理:

systemctl enable hostapd
systemctl start hostapd

如果Wi-Fi速度慢,可能是由于熵过低,查看值如果少于1000:

cat /proc/sys/kernel/random/entropy_avail

安装并启用haveged来增加熵:

apt -y install haveged
systemctl start haveged
systemctl enable haveged

最后测试一下可以连接:

WPA2-PSK折腾完了,那么接下来就是EAP-TLS之类的东西了,有空折腾出来了再水文章吧。。。

参考文献:

https://github.com/raspberrypi/documentation/issues/1018
https://wiki.gentoo.org/wiki/Hostapd#802.11b.2Fg.2Fn_with_WPA2-PSK_and_CCMP
https://askubuntu.com/questions/928084/how-to-rename-wlp2s0-to-wlan0-in-ubuntu-17-04

赞(0)
未经允许不得转载:拆东墙 » Debian10使用Hostapd搭建WiFi热点

评论 抢沙发

登录

找回密码

注册