开发者-导航 猿导航

RK3588 nmcli 创建热点 DHCP 失败解决:hostapd+DNSmasq 搭建 AP 热点完整教程

发布时间:

目录

nmcli 创建 ztl-wifi 热点出现手机 DHCP 连接失败、静态 IP 无法 PING 通的问题,提供hostapd+DNSmasq 替代搭建 AP 模式热点的完整解决方案;包含 NetworkManager 解除 wlan0 管理、hostapd 配置、wlan0 静态 IP 设置、DHCP 地址池分配、服务自启配置,以及恢复 NM 管理的回滚步骤,解决热点 IP 分配异常与局域网连通性问题

问题描述 #

使用 ncmil 设置热点,手机端连接 ztl-wifi 网络无法连接成功(DHCP)。连接时将 IP 改成静态 IP(手动设置)就可以连接成功,但无法 PING 通。

创建热点 #

sudo nmcli device wifi hotspot ifname wlan0 con-name ztl-wifi ssid ztl-wifi password 12345678

解决办法 #

使用 hostapd + DNSmasq 来创建 AP 模式。

提示

非常重要,关掉 NM(NetworkManager)对 wlan0 的管理,默认 wlan0 是由 NM 管理端的,并重启 NetworkManager

sudo nmcli device set wlan0 managed no

sudo systemctl restart NetworkManager

一、安装&配置 hostapd #

如果没有安装 hostapd,执行以下命令安装:

sudo apt install hostapd

创建配置文件:

sudo vim /etc/hostapd/hostapd.conf
interface=wlan0
driver=nl80211
ssid=ztl-wifi
hw_mode=g
channel=6
wpa=2
wpa_passphrase=12345678
wpa_key_mgmt=WPA-PSK
rsn_pairwise=CCMP

二、wlan0 添加静态 IP #

ip addr add 192.168.1.1/24 dev wlan0
ip link set wlan0 up

三、设置 dnsmasq 分配 IP #

dnsmasq --interface=wlan0 \
  --dhcp-range=192.168.1.100,192.168.1.200,12h

四、验证 hostapd #

手动启动(推荐你先用这个验证)

sudo hostapd -dd /etc/hostapd/hostapd.conf

看到类似下面内容才是 成功状态:

wlan0: AP-ENABLED

验证没问题,使用系统服务命令启动 hostapd,先解除被 systemd 禁止启动,直接启动可能会出现:Failed to start hostapd.service: Unit hostapd.service is masked.

sudo systemctl unmask hostapd
# 启动
sudo systemctl start hostapd
# 开机自启
sudo systemctl enable hostapd

完成以上操作就可以实现连接热点自动分配 IP 了,局域网内也可以使用 PING 测试。

五、查看已连接的设备 #

ARP 表:

ip neigh show dev wlan0

示例:

192.168.1.101 lladdr 34:ab:cd:ef:12:34 REACHABLE

恢复 NM 管理 wlan0 #

  1. 停止 hostapddnsmasq 服务,关闭开机启动,
sudo systemctl stop hostapd
sudo systemctl disable hostapd
  1. 设置 NM 管理 wlan0
sudo nmcli device set wlan0 managed yes
  1. 重启 NetworkManager
sudo systemctl restart NetworkManager
  1. nmcli 创建热点