树莓派 zero W变热点

试了网上N多方法都不行, 

https://github.com/RaspAP/raspap-webgui 这个很好用也傻瓜化, 但是我不想要这么重, 又PHP又啥的一大堆, 我只要连上我的一个Web应用就好了.

hostapd的文章也看了N多, 一次都配置不成功.

最后参考一个用热点来当诱骗器搞坏事文章里弄成功了, 不用hostapd, 直接通过wpa_supplicant 来实现.

怎么用树莓派制作一个流氓热点: https://jerryryle.github.io/rogueportal/

跟文中的步骤不一样的是, 我不用他的web应用, 略过nginx那一节, 保留了ssh通道, 并且给热点设置了密码.

----------------- 防止链接失效, 记录下关键步骤 ------------------

安装必要的包:

sudo apt install dnsmasq iptables-persistent macchanger nginx

在接下来的界面里都选"Yes", 回车之.

macchanger是用来随机改变Mac地址的, 搞坏事用, 搞正事其实用处不大.

[配置nginx过程略]

创建 wpa_supplicant 配置用来创建热点.

sudo nano /etc/wpa_supplicant/wpa_supplicant_rogueportal.conf

输入以下内容:

ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1
country=US

network={
    ssid="[Your SSID Here]"
    mode=2
    # key_mgmt=NONE
    key_mgmt=WPA-PSK
    psk="[Your Password Here]"
    frequency=2412
}

ssid 是热点名, 国家换成CN. 原文不做任何认证, 因为要设陷阱, 所有人可以连接这个wifi, 我的目的跟他不一样, 加上了认证.

禁止默认的wpa_supplicant服务, 本来是用来连接wifi的.

sudo systemctl disable wpa_supplicant

配置 dhcpcd 添加静态IP

sudo nano /etc/dhcpcd.conf
env wpa_supplicant_conf=/etc/wpa_supplicant/wpa_supplicant_rogueportal.conf
interface wlan0
static ip_address=10.1.1.1/24

开启IP转发

sudo nano /etc/sysctl.conf

找到 #net.ipv4.ip_forward=1 并去掉注释变成

net.ipv4.ip_forward=1

配置 iptables 接受 DHCP, DNS和HTTP请求, 原文中拒接了别的请求, 但我保留了, 因为要用ssh.

sudo nano /etc/iptables/rules.v4

*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]

# Accept incoming packets on existing connections on wlan0
-A INPUT -i wlan0 -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT

# Allow incoming DNS requests on wlan0
-A INPUT -i wlan0 -p udp --dport 53 -j ACCEPT

# Allow incoming DHCP requests on wlan0
-A INPUT -i wlan0 -p udp --dport 67 -j ACCEPT

# Allow incoming HTTP requests on wlan0
-A INPUT -i wlan0 -p tcp --dport 80 -j ACCEPT

# Drop all other incoming requests on wlan0 如果不想使用ssh等, 可以把这条加上
# -A INPUT -i wlan0 -j REJECT 

COMMIT

配置 dnsmasq

sudo nano /etc/dnsmasq.conf

把原有内容清除掉, 加入以下内容:

listen-address=10.1.1.1
no-hosts
log-queries
log-facility=/var/log/dnsmasq.log
dhcp-range=10.1.1.2,10.1.1.254,72h
dhcp-option=option:router,10.1.1.1
dhcp-authoritative
dhcp-option=114,http://go.rogueportal/index.html

# Resolve everything to the portal's IP address.
address=/#/10.1.1.1

配置 dnsmasq 不使用 Loopback接口

sudo nano /etc/default/dnsmasq

把下面一行加到最后, 或者在原有内容上去掉注释

# Do not run dnsmasq on the loopback interface 
DNSMASQ_EXCEPT=lo # 在我的系统里是 DNSMASQ_EXCEPT="lo" 带双引号, 估计没啥区别

启用 dnsmasq

sudo nano /etc/default/dnsmasq

把ENABLED=0改为ENABLED=1, 然后 

sudo systemctl enable dnsmasq

重启, 连上上面设置的热点名, 打开浏览器输入任意域名, 就可以访问Web应用了, 树莓派IP地址为 10.1.1.1

输入类似这样的地址 "name@something.com"
输入类似这样的地址"http://someaddress.com"
验证码 不区分大小写(看不清)