发布时间:
目录
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 #
- 停止
hostapd和dnsmasq服务,关闭开机启动,
sudo systemctl stop hostapd
sudo systemctl disable hostapd
- 设置 NM 管理
wlan0
sudo nmcli device set wlan0 managed yes
- 重启 NetworkManager
sudo systemctl restart NetworkManager
- 用 nmcli 创建热点