kali-pi 配置热点

文章已经更新,只需最后一步就能开启热点,参见 #0x05

适用于树莓派(Raspberry-pi)的 kali 官方镜像 2018.2 版本,并不是很兼容 rpi 3B+ 的无线模块,使用过程中可能遇到 wifi 不稳定或者配置过程中报错的状况。还好 Re4son kernel 项目对此进行了内核级别的优化,让 kali 对新版的 rpi 更加友好。更多内容请参考Re4son-Pi-Kernel – Re4son-Kernel

这篇文章主旨并不在此,当其他一切都配置的差不多的时候,为了让 kali-pi 有更良好的便携性,通过 kali-pi 配置的热点服务可以通过手机连接轻松地实现对树莓派的管控,摆脱网线的束缚。

这篇文章同时也适用于想要把树莓派变成一台路由设备的玩家。

0x00 软硬件环境

  • kali-pi 3B+:kali 2018.2 + re4son kernel + Raspberry-pi 3B+
  • USB 无线网卡:RT3070L 芯片,免驱
  • 笔记本电脑:WIFI 联网,有线作为 kali-pi 的配置口
  • 一根网线

如果具备以上环境,可以配置笔记本给树莓派共享上网,配置过程参考:笔记本 共享上网 树莓派_百度搜索

0x01 确保设备未关联 rfkill

1
2
3
4
5
6
7
8
9
10
11
root@kali:~# apt-get -y install rfkill
root@kali:~# rfkill list
0: phy0: Wireless LAN
Soft blocked: yes
Hard blocked: no
root@kali:~# rfkill unblock wlan # 或者 rfkill unblock all
root@kali:~# rfkill list
0: phy0: Wireless LAN
Soft blocked: no
Hard blocked: no
root@kali:~#

0x02 配置 DNS 和 DHCP

dnsmasq提供 DNS 缓存和 DHCP 服务,执行 apt install dnsmasq 安装。
修改配置文件:

1
2
3
4
5
6
root@kali:~# vi /etc/dnsmasq.conf
interface=wlan1 # USB 网卡接口
listen-address=10.0.0.1 # 网卡地址
dhcp-range=10.0.0.2,10.0.0.254,12h # 地址池与租期
dhcp-option=3,10.0.0.1 # 路由
dhcp-option=6,8.8.8.8 # DNS

0x03 Hostapd

Hostapd提供了 AP 的认证服务,执行 apt install hostapd 安装。
修改配置文件:

1
2
root@kali:~# vi /etc/default/hostapd
DAEMON_CONF="/etc/hostapd/hostapd.conf"

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
root@kali:~# vi /etc/hostapd/hostapd.conf
# Basic configuration
channel=1
ssid=wifi # wifi 的名称
interface=wlan1 # USB 网卡接口

# Hardware configuration
hw_mode=g
driver=nl80211 # 驱动,保持默认

#_Ap_
wpa=2
auth_algs=3

# WPA and WPA2 configuration
rsn_pairwise=CCMP
wpa_pairwise=TKIP
wpa_key_mgmt=WPA-PSK
wpa_passphrase=password # WIFI 密码

测试命令:hostapd -d /etc/hostapd/hostapd.conf
因错误 hostapd error “nl80211: Could not configure driver mode” 不能成功开启热点,由 NetworkManager 托管造成的,参考 wireless - hostapd error “nl80211: Could not configure driver mode” - Ask Ubuntu
查看当前托管状态:nmcli dev status
c6a2d18f483e128e715c5f187954a3af.png
关闭所有托管:nmcli net off
e9a61b6d6cae81bac1e36c31f51ac1e4.png

0x04 自定义服务——用于开关热点

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
root@kali:~# vi /etc/init.d/my-wifi
#! /bin/bash
#
### BEGIN INIT INFO
# Provides: my-wifi
# Required-Start: $remote_fs $syslog
# Required-Stop: $remote_fs $syslog
# Should-Start: $network $time
# Should-Stop: $network $time
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: Start and stop the wifi ap server
# Description: Controls the main wifi ap server
### END INIT INFO
#
case $1 in
"start")
sleep 1
ifconfig wlan1 10.0.0.1 netmask 255.255.255.0
sleep 1
echo "1" > /proc/sys/net/ipv4/ip_forward
sleep 1
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
sleep 1
/etc/init.d/hostapd start
sleep 1
/etc/init.d/dnsmasq start
;;
"stop")
/etc/init.d/dnsmasq stop
/etc/init.d/hostapd stop
sleep 1
iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE
sleep 1
echo "0" > /proc/sys/net/ipv4/ip_forward
sleep 1
ifconfig wlan1 down
sleep 1
ifconfig wlan1 up
;;
*)
echo "Usage $0 {start|stop}"
;;
esac

# 给与执行权限
root@kali:~# chmod +x /etc/init.d/my-wifi

该脚本大概意思就是,先配置 wlan1 为静态地址,然后添加(删除)NAT,开启(关闭)ipv4 流量转发,之后启动(停止)两个服务:dnsmasqhostapd

启动命令:/etc/init.d/my-wifi start
关闭命令:/etc/init.d/my-wifi stop
开机启动:systemctl enable my-wifi
取消自启:systemctl disable my-wifi

但是现实总是不美好的,脚本启动并没有报错,但是手机并没有搜索到该热点,通过排查后发现仅启动了一个服务,hostapd服务启动失败,截图如下:
2b3053bcaef9fc4ff7b02f43cb0de5fb.png
启动失败的原因:Unit hostapd.service is masked.
所以这么解决:systemctl unmask hostapd

my-wifi 服务顺利启动截图:
3aaaf21855dd8f092912252d82054e78.png
ea80669fe7fee54657db53b38266fe0c.png


2018-11-18 更新

0x05 一键开启热点,如此简单

脚本项目地址:oblique/create_ap
使用方法:README
使用前请先安装依赖:apt-get install bash util-linux procps hostapd iproute2 iw iwconfig haveged dnsmasq iptables
安装方法:

1
2
3
git clone https://github.com/oblique/create_ap
cd create_ap
make install

开启一个不需要共享 internet 的热点:

1
create_ap -n wlan0 MyAccessPoint MyPassPhrase

使用 systemctl 启动服务的时候需要留意 hostapd 生成的配置文件位置hostapd.conf,这个配置文件里面有热点的名称和密码,通过修改可以更改热点信息。





root@kali ~# cat 重要声明
本博客所有原创文章,作者皆保留权利。转载必须包含本声明,保持文本完整,并以超链接形式注明出处【Techliu】。查看和编写文章评论都需翻墙,为了更方便地获取文章信息,可订阅RSS,如果您还没有一款喜爱的阅读器,不妨试试Inoreader.
root@kali ~# Thankyou!