开发者-导航 猿导航

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. 停止 hostapd 和 dnsmasq 服务,关闭开机启动,
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 创建热点