树莓派创建AP以及恢复

本文是以树莓派4B+为实验原型,理论上可拓展至所有树莓派,但是根据许多网上的教程可以看出来,树莓派3B+的配置方法与本文所介绍的并不相同,猜测可能是和对应文章发布时的树莓派系统版本有关。
因此如果你再使用本文提供的方法上遇到什么问题欢迎留言讨论。

使树莓派变成热点其实思路很简单,只需要一个AP软件,一个DHCP服务器,然后将树莓派自己本身变成网关即可,这个过程相对于安卓、Windows和一些Linux发行版来说是相对困难了一些。
网上也有很多例如create_ap等的工具来辅助实现这个需求,实现的方法也比较干净,但是在我使用过程中发现无法启动wlan0接口,我试了几次也不行,网上相关资料也比较少,因此写这么一篇文章来阐述一下我的折腾过程。

希望我的折腾能对你有所帮助

首先需要hostapd、dnsmasq两个软件包
其核心配置文件分别是:
/etc/hostapd/hostapd.conf
/etc/dnsmasq.conf

核心问题在于这两个conf文件的内容

/etc/hostapd/hostapd.conf
这个配置文件是直接控制树莓派网卡变成AP的配置文件
配置内容如下:

interface=wlan0
driver=nl80211
ssid=name
hw_mode=g
channel=7
wmm_enabled=0
macaddr_acl=0
auth_algs=1
ignore_broadcast_ssid=0
wpa=2
wpa_passphrase=password
wpa_key_mgmt=WPA-PSK
wpa_pairwise=TKIP
rsn_pairwise=CCMP

各项配置的意义

  • interface=wlan0 #使用的网卡
  • driver=nl80211 #这项配置在wiki上并没有给出,但是在树莓派文档有,默认值会使hostapd,应该是可填可不填的。
  • ssid=name #开的wifi的名字
  • hw_mode=g #操作模式,g意味着2.4GHz频段,如果需要5G频段可以改成a,2.4G和5G区别可以看这里,若是用5G需要相应改动channel。
    其中查看树莓派5G可用的channel可以使用iwconfig list
  • channel=7 #使用的信道,可以看 WLAN信道列表 – 维基百科
  • wmm_enabled=0 #跟wmm有关,这里似乎是关闭了wmm support,不是很清楚,具体可以看 WMM的百度百科和下面的详细配置文档
  • macaddr_acl=0 #基于MAC地址的身份验证 翻译是这样的(默认值似乎就是0,意味着允许所有设备除非其在黑名单上。
  • auth_algs=1 #IEEE 802.11规定了两种身份验证算法,这个设置可以用于配置仅允许其中之一还是同时开放,1意味着同时开放。
  • ignore_broadcast_ssid=0 #原文看这里,默认是0,意思应该是设置为0是可以被发现,否则需要设备指定ssid再尝试连接不能直接搜索到?
  • wpa=2 #使用WPA3
  • wpa_passphrase=password #wifi密码
  • wpa_key_mgmt=WPA-PSK #密钥管理算法
  • wpa_pairwise=TKIP #应该不重要吧,可以自己看配置文档,我有点不知道是干什么的,下面这项配置同样。
  • rsn_pairwise=CCMP

/etc/dnsmasq.conf
这个配置项目是为树莓派开启的AP自动分配IP地址的

interface=wlan0
dhcp-range=192.168.0.1,192.168.0.200,255.255.255.0,24h

各项配置的意义

  • interface=wlan0 指定需要dhcp分配地址的设备
  • dhcp-range=192.168.0.1,192.168.0.200,255.255.255.0,24h
    • 192.168.0.1 #指定IP地址分配的开头
    • 192.168.0.200 #指定IP地址分配的结尾
    • 255.255.255.0 #指定子网掩码
    • 24h #指定DHCP租约持续时间

这里要注意的是,第一文件名不能写错,第二起始地址需要包含网关地址

还需要更改一下dhcpcd.conf文件
/etc/dhcpcd.conf
这里需要将wlan口绑定并且配置为路由地址

interface wlan0
static ip_address=192.168.0.1/24
nohook wpa_supplicant
static routers=192.168.0.1
static domain_name_servers=223.5.5.5 114.114.114.114

这里需要注意的是,如果只绑定头三行(大多数教程都是这么写的)然后重启dhcpd网卡并不会被绑定上固定地址,至少要补上第四行才可以。或者还有一种情况也不会显示绑定上的地址,就是hostapd服务没有开启,也不会显示绑定的地址

还需要打开Linux的网络转发
/etc/sysctl.conf
找到 net.ipv4.ip_forward 行,取消注释并把值改为1,保存退出
执行sudo sysctl -p
然后需要使用iptable转发数据包到eth0网口,这里直接抄网上的配置
sudo iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
sudo sh -c “iptables-save > /etc/iptables.ipv4.nat”
如果需要快速启动,则需要在/etc/rc.local的exit 0前添加
iptables-restore < /etc/iptables.ipv4.nat

至此只需要重启dhcpd、 hostapd、dnsmasq 即可完成AP搭建

关于如何退出AP模式,理论上是只需要将上面关键几步进行逆操作即可,目前我还没有实验,等我试验了以后再更新

About the author

NOBUG.IN

Add comment

By NOBUG.IN

Your sidebar area is currently empty. Hurry up and add some widgets.