将树莓派配置为AP路由器

树莓派配置为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小车相关文章和知识。

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

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

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

### 配置树莓派4B作为软件定义的路由器 #### 准备工作 为了使树莓派4B能够充当路由器的角色,需要确保其操作系统已经正确安装并更新。对于此目的,推荐使用Ubuntu Server 20.04 LTS版本[^2]。 #### 安装必要的包和服务 首先,在树莓派上打开终端窗口,并执行以下命令以安装所需的软件包: ```bash sudo apt update && sudo apt upgrade -y sudo apt install hostapd dnsmasq bridge-utils iptables-persistent -y ``` 这些工具分别用于创建无线接入点、提供DNS服务和DHCP功能、管理网络接口桥接以及保存防火墙规则。 #### 设置静态IP地址 编辑`/etc/dhcpcd.conf`文件来为eth0(有线连接)分配一个固定的IPv4地址范围内的地址,这将是内部LAN端口;而wlan0则保持动态获取外网IP以便上网共享给内网设备: ```bash interface eth0 static ip_address=192.168.50.1/24 nohook wpa_supplicant ``` 上述配置使得eth0获得了一个固定私有的子网下的第一个可用主机号作为默认网关[^3]。 #### 启用IP转发 允许Linux内核转发数据包,即开启路由功能。修改 `/etc/sysctl.conf` 文件取消注释下面这一行: ```plaintext net.ipv4.ip_forward=1 ``` 接着应用新的设置: ```bash sudo sysctl -p ``` #### NAT转换与防火墙规则设定 为了让局域网中的其他计算机可以通过树莓派访问互联网,需建立NAT表项并将所有来自指定接口的数据重定向到外部网络接口上去。这里假设wan侧是 wlan0 , lan侧 是 eth0 : ```bash sudo iptables -t nat -A POSTROUTING -o wlan0 -j MASQUERADE sudo iptables-save | sudo tee /etc/iptables/rules.v4 ``` 以上指令实现了源地址伪装(Source Network Address Translation),从而让内网机器可以借用树莓派的身份向外发送请求[^1]。 #### HostAPD配置Wi-Fi热点 接下来要的就是把WLAN变成一个可供客户端连接上的WiFi AP (Access Point) 。 编辑hostpad配置文件 `/etc/hostapd/hostapd.conf` 如下所示: ```ini interface=wlan0 driver=nl80211 ssid=RaspberryPiRouter hw_mode=g channel=7 macaddr_acl=0 auth_algs=1 ignore_broadcast_ssid=0 wpa=2 wpa_passphrase=YourSecurePasswordHere wpa_key_mgmt=WPA-PSK rsn_pairwise=CCMP ``` 最后一步启动HostAPD服务并且将其加入开机自启列表里边去: ```bash sudo systemctl unmask hostapd sudo systemctl enable hostapd sudo service hostapd start ``` #### DNSMASQ DHCP服务器配置 同样地调整dnsmasq的服务参数使其能响应来自eth0所代表的那个小型局域网里的客户机发出的租约申请。 修改/etc/dnsmasq.conf如下: ```ini interface=eth0 # Use the require interface - change 'eth0' as required dhcp-range=192.168.50.50,192.168.50.150,12h server=8.8.8.8 # Google's public DNS server or any other preferred one. domain-needed # Never forward addresses in the non_fqdn domain. bogus-priv # Never forward addresses in the private range. ``` 重启DNSServer之后即可生效: ```bash sudo service dnsmasq restart ``` 完成以上步骤后,树莓派就变成了一个完整的软路由装置,它不仅支持基本的路由功能还集成了WiFi热点分享能力[^4]。
评论 12
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

玩转智能机器人

但行好事,莫问前程,日拱一卒

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值