树莓派配置为AP模式

背景故事

树莓派的一个实用用途,就是将树莓派配置成个人家用路由,可以很方便的修改配置,用于日常生活和工作中,一起来看一下如何一步一步完成配置。

声明: *本教程使用树莓派4B验证测试通过 ,理论上可以支持树莓派其他型号,但其他型号未实际验证 *

准备工作

  • 键鼠+屏幕,网络配置过程中容易断网,建议用本地配置
  • 配置前,确保网线和wifi功能均可正常上网,且没有设置静态IP
  • 插上网线,过程中可能需要安装模块,访问网络
  • 确保树莓派安装了 Raspberry Pi OS 系统。(其他系统未验证过)
  • 准备好无线客户端(笔记本电脑、智能手机……)来测试AP的配置是否生效

安装 AP 和管理软件

安装hostapd工具,用来配置AP参数

sudo apt install hostapd

启用无线接入点服务并将其设置为在您的 Raspberry Pi 启动时启动:

sudo systemctl unmask hostapd
sudo systemctl enable hostapd

为了向无线客户端提供网络管理服务(DNS、DHCP),树莓派需要安装dnsmasq

sudo apt install dnsmasq

最后,安装netfilter-persistent及其插件iptables-persistent。用来配置和保存防火墙规则

sudo DEBIAN_FRONTEND=noninteractive apt install -y netfilter-persistent iptables-persistent

设置网络路由器

定义无线接口 IP 配置

Raspberry Pi 为无线网络运行 DHCP 服务器;这需要对 Raspberry Pi 中的无线接口 (wlan0 ) 进行静态 IP 配置。树莓派还充当无线网络上的路由器,按照惯例,我们会给它网络中的第一个 IP 地址:192.168.4.1

配置静态IP地址

sudo nano /etc/dhcpcd.conf

在文件末尾添加如下内容:

interface wlan0
    static ip_address=192.168.4.1/24
    nohook wpa_supplicant

启用路由和 IP 伪装

该部分决定了能否访问外网,如果你的AP不需要访问外网,可以跳过该部分内容

  1. 创建文件
sudo nano /etc/sysctl.d/routed-ap.conf

文件内容如下:

# Enable IPv4 routing
net.ipv4.ip_forward=1

该部分文件,让Raspberry Pi 可以使用“伪装”防火墙规则将无线客户端的 IP 地址替换为 LAN 上自己的 IP 地址.作用如下:

  • 主路由器将看到来自无线客户端的所有传出流量都来自 Raspberry Pi,从而允许与 Internet 通信。
  • Raspberry Pi 将接收所有传入流量,将 IP 地址替换回来,并将流量转发到原始无线客户端。
  1. 因此还需要配置防火墙规则
sudo iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

保存防火墙规则,注意该步骤容易忽略,不报存,不会生效

sudo netfilter-persistent save

为无线网络配置 DHCP 和 DNS 服务

备份默认配置文件并编辑一个新的

sudo mv /etc/dnsmasq.conf /etc/dnsmasq.conf.orig
sudo nano /etc/dnsmasq.conf

文件内容如下:

interface=wlan0 # Listening interface
dhcp-range=192.168.4.2,192.168.4.20,255.255.255.0,24h
                # Pool of IP addresses served via DHCP
domain=wlan     # Local wireless DNS domain
address=/gw.wlan/192.168.4.1
                # Alias for this router

Raspberry Pi 将在192.168.4.2和192.168.4.20之间提供 IP 地址,租用时间为 24 小时,给无线 DHCP 客户端。您应该能够gw.wlan从无线客户端访问该名称下的 Raspberry Pi

解锁5G频段

在 Raspberry Pi OS 中,在用户配置 WiFi 国家代码之前,5 GHz 无线网络被禁用,该步骤通常在系统安装初始化的时候会配置。

为确保 Raspberry Pi 上的 WiFi 无线电未被阻止,请执行以下命令:

sudo rfkill unblock wlan

配置 AP 软件(核心)

创建位于/etc/hostapd/hostapd.conf 的配置文件hostapd.conf,为您的新无线网络添加各种参数。

sudo nano /etc/hostapd/hostapd.conf

文件内容如下:

country_code=CN
interface=wlan0
ssid=NameOfNetwork
hw_mode=g
channel=1
macaddr_acl=0
auth_algs=1
ignore_broadcast_ssid=0
wpa=2
wpa_passphrase=12345678
wpa_key_mgmt=WPA-PSK
wpa_pairwise=TKIP
rsn_pairwise=CCMP

这里的关键字注释如下:

country_code=CN   # 国家码,国家码与信道是相互关联的,需要参考一些标准文件设置,其中CN为中国
interface=wlan0
ssid=NameOfNetwork  # SSID名称即wifi名称
hw_mode=g           # 2.4G频段
channel=1           # 指定手动信道1
macaddr_acl=0
auth_algs=1
ignore_broadcast_ssid=0
wpa=2                
wpa_passphrase=12345678  # wifi密码
wpa_key_mgmt=WPA-PSK     # 密钥类型,家用wifi一般用WPA-PSK
wpa_pairwise=TKIP        # 加密方式
rsn_pairwise=CCMP

关于该文件,基础路由配置参考上面的即可,国家码配置可以参考另一篇文章链接:wifi国家码和信道划分

关于hostapd.conf的详细配置,可以参考另一篇文章链接:hostapd配置文件解析

要使用国内5G频段,修改hw_mode=a,channel=149即可,国内国家码和信道对应表如下:

国家码-中国2.4G信道5G信道
CN1 2 3 4 5 6 7 8 9 10 11 12 13149 153 157 161 165

重启系统,验证AP生效

sudo systemctl reboot

重启后,用手机应该就能扫描到对应的wifi,并且可以连接上网了,如果想修改AP配置,比如账号、密码、加密方式、信道等,直接编辑/etc/hostapd/hostapd.conf ,重启系统即可,如果不想重启系统,可以使用指令 ps aux |grep hostapd 找到hostapd对应的进程,再使用指令杀掉该进程,进程自动重启,配置文件即可生效

ps aux |grep hostapd
sudo kill -9 对应的进程pid

·
·
·

欢迎各位老铁一键三连,本号后续会不断更新树莓派、人工智能、STM32、ROS小车相关文章和知识。

大家对感兴趣的知识点可以在文章下面留言,我可以优先帮大家讲解哦

欢迎大家光临我的淘宝小店【玩转智能机器人】,会定期推出教程中使用的物美价优的硬件,你的光临就是对我的支持

原创不易,转载请说明出处。

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐