目录

linux热点替代方案

75

在无线设备的测试中经常需要使用 kali 加外接无线网卡的方式来开启热点, 供设备连接, 然后才能进行测试

在使用过程中发现新版本的 kali 在图形化界面开启的热点如果需要使用密码, 安全性只能是 WPA/WPA2/WPA3 个人

按道理来讲这个选项应该会向下兼容, 也就是不支持 WPA3 的设备, 会使用 WPA2 进行连接

但在使用过程中发现某些设备会连不上热点, 哪怕输入正确密码也会一直卡在连接中的状态

由于 kali 这里默认使用 NetworkManager 对网卡进行托管

所以这里一直在找办法替代 nm, 最后使用 hostapd 解决

how

这里使用的包有

  • hostapd: 开热点

  • dnsmasq: DHCP 和 DNS

  • iptables: 流量转发

  • netfilter-persistent: 持久化保存 iptables 配置

取消nm对网卡的托管

hostapd 和 NetworkManager 都能接管无线网卡设备, 为了让 hostapd 在使用无线网卡时网卡不被 nm 接管, 需要取消 nm 对无线网卡的托管

查看 /etc/NetworkManager/NetworkManager.conf 的内容, 一般内容如下:

 [main]
 plugins=ifupdown,keyfile
 ​
 [ifupdown]
 managed=false

如果没有启用 keyfile, 则手动补上

然后可以在文件中添加两行

 [keyfile]
 unmanaged-devices=interface-name:wlan0

或者新建一个文件 /etc/NetworkManager/conf.d/unmanaged.conf 在其中添加同样的内容

为网卡分配ip

由于取消了 nm 对网卡的接管, wlan0 此时是没有 ip 地址的, 使用 ifconfig 向网卡分配一个地址

sudo ifconfig wlan0 10.42.0.1 netmask 255.255.255.0

配置热点

在 hostapd 的配置文件 /etc/hostapd/hostapd.conf 内写入配置:

interface=wlan0 # 网卡
driver=nl80211
ssid=ansel # 热点名称
hw_mode=g
channel=6
macaddr_acl=0
auth_algs=1
ignore_broadcast_ssid=0
wpa=2 # 安全性
wpa_passphrase=11111111 # 密码
wpa_key_mgmt=WPA-PSK
rsn_pairwise=CCMP

为了解决 nm 开出的热点无法被某些设备连接, 所以这里 wpa 配置为 2, #只是为了暂时注释, 实际配置文件中需要删除

默认状态下, 由于有 nm 的存在, hostapd 的服务是屏蔽的, 如果需要 hostapd 开机自启, 需要手动解除屏蔽再启用:

sudo systemctl unmask hostapd
sudo systemctl enable hostapd
sudo systemctl start hostapd

这个时候热点已经可以被搜索到了, 但是仍然缺失两个功能: ip 分配和流量转发, 前者让连接热点的设备获得 ip 地址, 后者让设备可以上网

配置DHCP

在 dnsmasq 的配置文件目录新建一个配置文件写入自定义配置:

# /etc/dnsmasq.d/dnsmasq.conf
interface=wlan0 # 网卡
dhcp-range=10.42.0.2,10.42.0.100,255.255.255.0,24h # ip分配范围
dhcp-option=3,10.42.0.1  # 网关 IP
dhcp-option=6,8.8.8.8   # DNS 服务器
server=8.8.8.8

同样可以配置开机自启:

sudo systemctl enable dnsmasq
sudo systemctl start dnsmasq

配置流量转发

使用 iptables, 将网卡 wlan0 上的流量转发到 eth0 上, 实现通网:

sudo iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
sudo iptables -A FORWARD -i wlan0 -o eth0 -j ACCEPT
sudo iptables -A FORWARD -i eth0 -o wlan0 -m state --state RELATED,ESTABLISHED -j ACCEPT

持久化保存iptables命令

使用 netfilter-persistent 保存 iptables 命令:

sudo netfilter-persistent save 

使用 reload 即可加载 iptables 配置:

sudo netfilter-persistent reload

启动脚本

相关的配置完成后, 可以写一个 net.sh 脚本来完成剩余需要手动操作的命令:

# 为网卡配置ip
sudo ifconfig wlan0 10.42.0.1 netmask 255.255.255.0
# 加载iptables配置
sudo netfilter-persistent reload

快速方案

使用 linux-wifi-hotspot 包可以快速开启热点, 实现原理和上面的方法相同, 安装的时候会同时把上面提到的包都安装, 只是整合了一下功能, 同时有 gui 界面

github 地址:

https://github.com/lakinduakash/linux-wifi-hotspot

安装 (arch):

yay -S linux-wifi-hotspot

ubuntu:

sudo add-apt-repository ppa:lakinduakash/lwh
sudo apt update
sudo apt install linux-wifi-hotspot

图形界面使用:

​

image-20250729095758181

​