我如何使 hostapd WPA2 工作?

我如何使 hostapd WPA2 工作?

我正在尝试创建一个简单的 WPA2 WiFi 接入点,以便当我远离路由器时可以更可靠地使用 WiFi。

我正在跟进本指南但我使用的是定制版本hostapd 中有适用于我的 USB WiFi 加密狗的驱动程序。

我根据指南稍微修改了 hostapd.conf 配置以创建开放热点:

interface=wlan0
ssid=WiFi
channel=6
macaddr_acl=0
auth_algs=1
ignore_broadcast_ssid=0
driver=rtl871xdrv
ieee80211n=1
hw_mode=g
device_name=RTL8192CU
manufacturer=Realtek

当我这样做时,一切都运行正常,我可以通过手机连接到 AP 来浏览互联网。

但是,当然,开放的 AP 是不可取的,我希望创建一个 WPA2 AP,所以我修改了配置文件:

interface=wlan0
ssid=WiFi
channel=6
macaddr_acl=0
auth_algs=1
ignore_broadcast_ssid=0
wpa=2
wpa_passphrase=Raspberry5
wpa_key_mgmt=WPA-PSK
wpa_pairwise=TKIP
rsn_pairwise=CCMP
driver=rtl871xdrv
ieee80211n=1
hw_mode=g
device_name=RTL8192CU
manufacturer=Realtek

这可不行!尽管在连接 AP 时输入了正确的密码“Raspberry5”,但我的手机(运行 Android Marshmallow)在“正在连接...”处停留了一段时间,然后返回到“已保存...”,然后又返回到“正在连接...”。这种情况不断发生,偶尔会闪烁“身份验证问题”。其他设备也无法连接。

我该如何解决这个问题以便能够成功连接到 AP?

这是 hostapd -d /etc/hostapd/hostapd.conf 的输出:

random: Trying to read entropy from /dev/random
Configuration file: /etc/hostapd/hostapd.conf
drv->ifindex=3
l2_sock_recv==l2_sock_xmit=0x0xb69648
BSS count 1, BSSID mask 00:00:00:00:00:00 (0 bits)
Completing interface initialization
Mode: IEEE 802.11g  Channel: 6  Frequency: 2437 MHz
RATE[0] rate=10 flags=0x1
RATE[1] rate=20 flags=0x1
RATE[2] rate=55 flags=0x1
RATE[3] rate=110 flags=0x1
RATE[4] rate=60 flags=0x0
RATE[5] rate=90 flags=0x0
RATE[6] rate=120 flags=0x0
RATE[7] rate=180 flags=0x0
RATE[8] rate=240 flags=0x0
RATE[9] rate=360 flags=0x0
RATE[10] rate=480 flags=0x0
RATE[11] rate=540 flags=0x0
Flushing old station entries
Deauthenticate all stations
+rtl871x_sta_deauth_ops, ff:ff:ff:ff:ff:ff is deauth, reason=2
rtl871x_set_key_ops
rtl871x_set_key_ops
rtl871x_set_key_ops
rtl871x_set_key_ops
Using interface wlan0 with hwaddr 80:1f:02:d0:f5:94 and ssid 'WiFi'
Deriving WPA PSK based on passphrase
SSID - hexdump_ascii(len=4):
     57 69 46 69                                       WiFi
PSK (ASCII passphrase) - hexdump_ascii(len=10): [REMOVED]
PSK (from passphrase) - hexdump(len=32): [REMOVED]
rtl871x_set_wps_assoc_resp_ie
rtl871x_set_wps_beacon_ie
rtl871x_set_wps_probe_resp_ie
urandom: Got 20/20 bytes from /dev/urandom
GMK - hexdump(len=32): [REMOVED]
Key Counter - hexdump(len=32): [REMOVED]
WPA: group state machine entering state GTK_INIT (VLAN-ID 0)
GTK - hexdump(len=16): [REMOVED]
WPA: group state machine entering state SETKEYSDONE (VLAN-ID 0)
rtl871x_set_key_ops
rtl871x_set_beacon_ops
rtl871x_set_hidden_ssid ignore_broadcast_ssid:0, WiFi,4
rtl871x_set_acl
wlan0: Setup of interface done.

这是 /etc/network/interfaces:

# interfaces(5) file used by ifup(8) and ifdown(8)

# Please note that this file is written to be used with dhcpcd
# For static IP, consult /etc/dhcpcd.conf and 'man dhcpcd.conf'

# Include files from /etc/network/interfaces.d:
source-directory /etc/network/interfaces.d

auto lo
iface lo inet loopback

iface eth0 inet dhcp

allow-hotplug wlan0
iface wlan0 inet static
  address 10.0.1.1
  netmask 255.255.255.0

up iptables-restore < /etc/iptables.ipv4.nat

以下是没有注释的 /etc/dhcp/dhcpd.conf:

ddns-update-style none;
default-lease-time 600;
max-lease-time 7200;
authoritative;
log-facility local7;
subnet 10.0.1.0 netmask 255.255.255.0 {
        range 10.0.1.2 10.0.1.254;
        option broadcast-address 10.0.1.255;
        option routers 10.0.1.1;
        default-lease-time 600;
        max-lease-time 7200;
        option domain-name "local";
        option domain-name-servers 10.0.0.1, 8.8.8.8;
}

我已经修改了指南中的 /etc/network/interfaces 和 /etc/dhcp/dhcp.conf 以使用我希望使用的 IP 地址范围。

在此先感谢您的帮助,当然,我很乐意提供更多有用的日志/文件。

答案1

好的,我已让它工作了。

我链接到了 Raspberry Pi 论坛上的这篇文章,一位用户 epoch1970 告诉我,对于使用 RTL8188CUS 芯片组的设备(我的就是这种芯片组),自定义版本的 hostapd 不再需要。事实上,你不能使用它——你会遇到我所遇到的问题!

他链接到此主题在论坛上,它解释了一些事情。

我全新安装了 Raspbian,并从 repo 安装了 hostapd,在我的 hostapd 配置中指定了 driver=nl80211,一切都运行正常。

相关内容