使用 hostapd 在笔记本电脑上配置 wifi 接入点

使用 hostapd 在笔记本电脑上配置 wifi 接入点

我基本上是尝试将一台 Linux 笔记本电脑配置为一个 wifi 路由器,其他笔记本电脑和手机可以连接到该路由器,然后我可以操纵流量进行一些网络流量测试(使用较低的带宽和上限等)

我的 hostapd 配置文件是,

interface=wlan0
driver=nl80211
ssid=atest
hw_mode=g
channel=1
macaddr_acl=0
auth_algs=1
ignore_broadcast_ssid=0
wpa=3
wpa_passphrase=1234567890
wpa_key_mgmt=WPA-PSK
wpa_pairwise=TKIP
rsn_pairwise=CCMP

但是 hostapd 总是失败,使用 -d 选项时我看到了这一点,

random: Trying to read entropy from /dev/random
Configuration file: /etc/hostapd/hostapd.conf
nl80211: interface wlan0 in phy phy0
rfkill: initial event: idx=1 type=2 op=0 soft=1 hard=0
rfkill: initial event: idx=2 type=1 op=0 soft=0 hard=0
nl80211: Using driver-based off-channel TX
nl80211: Register frame command failed (type=208): ret=-114 (Operation already in progress)
nl80211: Register frame match - hexdump(len=2): 04 0a
nl80211: Failed to register Action frame processing - ignore for now
nl80211: Add own interface ifindex 4
nl80211: Set mode ifindex 4 iftype 3 (AP)
nl80211: Failed to set interface 4 to mode 3: -95 (Operation not supported)
nl80211: Interface already in requested mode - ignore error
nl80211: Create interface iftype 6 (MONITOR)
nl80211: New interface mon.wlan0 created: ifindex=16
nl80211: Add own interface ifindex 16
BSS count 1, BSSID mask 00:00:00:00:00:00 (0 bits)
nl80211: Regulatory information - country=00
nl80211: 2402-2472 @ 40 MHz
nl80211: 2457-2482 @ 20 MHz
nl80211: 2474-2494 @ 20 MHz
nl80211: 5170-5250 @ 40 MHz
nl80211: 5735-5835 @ 40 MHz
nl80211: Added 802.11b mode based on 802.11g information
Completing interface initialization
Mode: IEEE 802.11g  Channel: 1  Frequency: 2412 MHz
nl80211: Set freq 2412 (ht_enabled=0 sec_channel_offset=0)
nl80211: Failed to set channel (freq=2412): -16 (Device or resource busy)
Could not set channel for kernel driver
wlan0: Unable to setup interface.
Flushing old station entries
Could not connect to kernel driver.
Deauthenticate all stations
nl80211: Remove interface ifindex=16
netlink: Operstate: linkmode=0, operstate=6
nl80211: Set mode ifindex 4 iftype 2 (STATION)

任何帮助使其工作起来的帮助都将非常感激。

答案1

(从https://stackoverflow.com/a/22845597

问题似乎是 hostapd 2.1 因之前忽略的一个错误而退出。此问题在 Ubuntu 桌面版中可重现,因为资源 (WLAN) 正忙。

如果关闭访问资源的程序,hostapd 就有机会抓住它并发挥作用。

在 Ubuntu 桌面 14.04 beta 中,一个解决方案是关闭使用有问题的 wlan 的程序。

这对我有用:

sudo nmcli nm wifi off
sudo rfkill unblock wlan

然后 hostapd 就可以从命令行正常启动了。当然,如果你想让 hostapd 在启动时启动,你必须确保网络管理器没有提前抢占资源。

答案2

我在运行 pidora 2014(Raspberry Pi 的 Fedora 20 remix)时遇到了同样的问题。答案与此处给出的另外两个答案基本相同:wpa_supplicant 正在运行,这阻止了 hostapd 使用该设备。

但万一其他人发现它有用,这里是我用来解决问题的程序。

在我的例子中,wpa_supplicant 由 NetworkManager 启动,NetworkManager 是大多数现代 Linux 发行版用来控制网络的守护进程。虽然它在桌面环境中运行良好,但它似乎不支持 AP 配置,即使我尝试手动停止它,它也会不断重新生成 wpa_supplicant。

解决方案是禁用 NetworkManager 服务并启用“旧版”网络服务,该服务使用简单的初始化脚本来控制网络接口:

sudo systemctl disable NetworkManager.service 
sudo systemctl enable network.service

此后 hostapd 启动并正常运行。

答案3

Hostapd 无法通过 nl80211 驱动程序设置网卡上的通道:

Mode: IEEE 802.11g  Channel: 1  Frequency: 2412 MHz
nl80211: Set freq 2412 (ht_enabled=0 sec_channel_offset=0)
nl80211: Failed to set channel (freq=2412): -16 (Device or resource busy)

错误代码表明其他东西正在使用该设备,因此不允许更改频道 - 也许 wpa_supplicant 正在后台运行?

答案4

使用systemctl --force stop wpa_supplicant.service,然后hostapd正常启动 v2.1。

相关内容