概述

树莓派是一款来源于英国慈善组织“Raspberry Pi 基金会”的基于微处理器的硬件平台。核心是 Broadcom ARM 架构 CPU,可以完整运行 Ubuntu、Windows 10 IoT Core 等操作系统。

最新款的树莓派 4B 还板载了 USB 3.0 接口、千兆以太网卡、2.4/5 GHz 802.11b/g/n/ac 无线网卡等设备,性能强大,价格却足够便宜,能用来 DIY 很多东西。

这篇文章就来教大家,如何从零开始将树莓派打造成一个功能强大的无线热点。

准备宽带

以太网线

micro SD 卡和读卡器

树莓派(最好是 4B 版本)

安装 Raspbian 操作系统

安装 Raspbian 是为了给无线热点准备操作系统环境。具体步骤参考:树莓派 4B 安装和启动

最好也要把软件源指向国内,避免后续软件下载速度太慢:教你如何给树莓派更换软件源

安装配置 hostapd 服务

Hostapd 是一个运行在用户态,提供热点访问和鉴权的服务端进程。

首先安装服务:

$ sudo apt install hostapd

$ sudo systemctl stop hostapd

接着,我们需要配置一下热点参数。配置文件地址在 /etc/hostapd/hostapd.conf,打开并编辑(如果没有这个文件的话,新建一个即可):

$ sudo nano /etc/hostapd/hostapd.conf

写入如下配置项。注意要根据自己的实际情况,替换 ??? 处的内容:ssid: WiFi 名称,8~64 个字符,最好用英文字母,不要出现特殊字符

hw_mode: WiFi 网络模式,一般填 g 即可,设备支持的话可以填 a 启用 5G 频段:a = IEEE 802.11a (5 GHz)

b = IEEE 802.11b (2.4 GHz)

g = IEEE 802.11g (2.4 GHz)

channel: 信道编号。如果上面配置了 hw_mode=g 使用 2.4G 频段,则一般填 7 即可。如果配置了 5G 频段,则信道编号有所不同,具体参考:WLAN信道列表

wpa_passphrase: WiFi 密码,最好用英文加数字,不要出现特殊字符

interface=wlan0

driver=nl80211

ssid=???

hw_mode=???

channel=???

wmm_enabled=0

macaddr_acl=0

auth_algs=1

ignore_broadcast_ssid=0

wpa=2

wpa_passphrase=???

wpa_key_mgmt=WPA-PSK

wpa_pairwise=TKIP

rsn_pairwise=CCMP

这里给出一个示例配置值:

然后,给 hostapd 指定我们刚刚配置的配置文件。打开 /etc/default/hostapd 这个文件,去掉 DAEMON_CONF 的注释,并配置成 /etc/hostapd/hostapd.conf,如图所示。意思就是告诉 hostapd 要从 /etc/hostapd/hostapd.conf 读取配置参数。

sudo nano /etc/default/hostapd

最后,启动 hostapd 服务。

sudo systemctl unmask hostapd

sudo systemctl enable hostapd

sudo systemctl start hostapd

过一会儿,就能看到 hardcore-rpi 的 WiFi 信号了。但是这个 WiFi 还没有连接网络,也不能给客户端分配 IP,接下来的小节就解决这些问题。

如果服务启动失败,比如报错 "systemctl status hostapd.service" and "journalctl -xe" for details 等,可以按如下步骤逐一排查: 1. 重启树莓派,再尝试启动 hostapd 2. 命令行执行 sudo /usr/sbin/hostapd /etc/hostapd/hostapd.conf,直接运行 hostapd,观察输出日志,一般都能发现问题。比如常见的: 1. hostapd.conf 配置错误导致启动失败。检查配置文件,修改后,新启动 hostapd 即可。 2. wlan0 端口未开启导致启动失败。执行 sudo ifconfig wlan0 up 开启端口后,重新启动 hostapd 即可。

这里给一个直接运行 hostapd 成功的截图,只要看到 "ENABLED" 字样就表示启动成功了。

配置 wlan 静态 IP

用于 WiFi 热点的 wlan0 端口需要有固定的 IP 地址。假设树莓派热点的 IP 网段是 192.168.4.x,那么 wlan0 的 IP 就要设置成静态地址 192.168.4.1。

树莓派以及大多数 Linux 发行版都由 dhcpcd 服务通过 DHCP(动态主机配置协议)获取自己的 IP 地址,所以这里我们要改掉 dhcpcd 的配置,让 wlan0 端口有静态 IP。

编辑 dhcpcd 配置文件:

sudo nano /etc/dhcpcd.conf

在文件末尾添加:

interface wlan0

static ip_address=192.168.4.1/24

nohook wpa_supplicant

保存后,重启 dhcpcd 服务:

sudo systemctl restart dhcpcd

执行 ifconfig 可以看到,wlan0 的 IP 地址已经固定成 192.168.4.1 了。

安装配置 dnsmasq 服务

dnsmasq 是一个小型的用于配置 DNS 和 DHCP 的工具,适用于小型网络,它提供了 DNS 和 DHCP 功能。

首先安装 dnsmasq 服务。

$ sudo apt install dnsmasq

$ sudo systemctl stop dnsmasq

接着,配置 dnsmasq 参数。打开 /etc/dnsmasq.conf 配置文件,把里面的其他内容都注释掉,添加新的配置项:

sudo nano /etc/dnsmasq.conf

interface=wlan0

dhcp-range=192.168.4.2,192.168.4.20,255.255.255.0,24h

dhcp-range 配置项的意思是,dhcp 服务会给客户端分配 192.168.4.2 到 192.168.4.20 的 IP 空间,24 小时租期。更多配置信息可以参考 Man page of DNSMASQ

然后,重启 dnsmasq 服务。

sudo systemctl reload dnsmasq

此时用手机去连接热点,就能看到成功分配了动态 IP。

配置 IP 包转发

上面我们给树莓派安装了 hostapd 热点服务 和 dnsmasq DHCP 服务,已经可以让手机连接 WiFi 热点并分配到动态 IP 了,但仍不能联网,所以现在就剩最后一步:给树莓派配置 IP 包转发,让手机连接 WiFi 后能正常上网。

首先,开启 Linux 内核的 ip 转发功能。打开 /etc/sysctl.conf 系统配置文件,去掉 net.ipv4.ip_forward=1 这个配置项的注释:

出于安全考虑,Linux系统默认是禁止数据包转发的。所谓转发即当主机拥有多于一块的网卡时,其中一块收到数据包,根据数据包的目的ip地址将数据包发往本机另一块网卡,该网卡根据路由表继续发送数据包。这通常是路由器所要实现的功能。

要让Linux系统具有路由转发功能,需要配置一个Linux的内核参数net.ipv4.ip_forward。这个参数指定了Linux系统当前对路由转发功能的支持情况;其值为0时表示禁止进行IP转发;如果是1,则说明IP转发功能已经打开。

Linux ip_forward 数据包转发

然后,修改 Linux 防火墙规则,完成报文源地址目标转换。

sudo iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

接着,设置开机自动导入防火墙规则。

sudo sh -c "iptables-save > /etc/iptables.ipv4.nat"

编辑 /etc/rc.local,把 iptables-restore < /etc/iptables.ipv4.nat 加到最后一行 exit 0 的前面:

然后,重启树莓派:

sudo reboot

测试验证

重启树莓派后,手机连接树莓派热点。一切正常的话,手机就可以 WiFi 上网了。

后话

树莓派热点能做很多事情,比如和手机等其他设备互联通信。插入多个无线网卡,还能实现 WiFi 中继等。

但这篇文章介绍的树莓派路由器只是个简单版本,没有 ADSL 宽带拨号功能,也没有进行性能优化,和商业路由器的差距还是比较大的。后续我会介绍如何用树莓派进行宽带拨号,甚至编译 openwrt 打造真正强大的路由器。

参考资料

欢迎关注专栏,获取更多树莓派硬核资料和教程。

共享网络获取树莓派ip_从零开始:树莓派共享 WiFi 秒变无线热点(树莓派路由器...相关推荐

  1. 从零开始:树莓派共享 WiFi 秒变无线热点(树莓派路由器

    树莓派共享 WiFi 在线配置工具已上线,一键共享 WiFi,再也不用手打指令啦. 戳:树莓派共享 WiFi 在线配置工具 概述 树莓派是一款来源于英国慈善组织"Raspberry Pi 基 ...

  2. [RK3399][Android7.1.1]Tethering:修复使用USB共享网络,拔出USB后 USB共享没有自动关闭的问题

    测试平台 Platform: RK3399 OS: Android 7.1.1 现象 热点:使用USB共享网络时,当USB拔出后,共享没有自动关闭的问题 解决方案 From 166712b80a4ef ...

  3. 共享网络获取树莓派ip_用优盘共享文件多不方便,简单几步用树莓派搭建个私有云盘...

    这次我们要在树莓派上搭建个私有云盘,在局域网内为家里的设备提供24小时不间断的磁盘服务. 准备材料: 树莓派:我用了4B,需要刷个64位的linux系统,推荐 Debian-Pi-Aarch64. 蓝 ...

  4. linux服务器共享网络设置方法,用Linux系统设置共享上网

    导读 环境:一台Linux机器单网卡,一台window机器单网卡,一个四口集线器.背景:房东只提供了一条上网线,并且限定了只能用一个网卡上网(就是我的Linux机器的网卡).目的:通过Linux共享上 ...

  5. xp计算机怎么共享网络,windows XP下如何实现共享上网的方法

    通常来说共享本地连接的电脑即网关电脑要有两块网卡(其中一块是有线或无线网卡),并且有交换机或集线器等网络设备,电脑与电脑之间通过网络设备或无线局域网连接下面是学习啦小编为大家整理的关于windows ...

  6. 网络3共享网络2计算机打印机,打印机如何共享到另一台电脑

    打印机在我们的工作与生活中使用的越来越频繁,办公室几乎离不开打印机,但并不是每台电脑都有配置打印机,实际上也不需要每台都配备,想要每台电脑都能使用打印机,只需要设置打印机共享就可以完成.本文以win1 ...

  7. 通过wifi网络共享网络的方式连接PYNQ开发板

      手册上介绍了两种PYNQ开发板连接网络的方式,一种是直接连接路由器,一种是通过PC连接WIFI,开发板连接PC,通过PC网络共享给开发板的方式.   本文主要介绍了在没有路由器的情况下,如何给PY ...

  8. 共享的网络如何让自己比别人快_OPPO K3如何共享网络?

    在生活中相信大家都遇到过因为种种原因给别人共享网络,大部分都是开热点共享,其实OPPO K3一共有四种共享网络方法呢,你了解吗? 一.个人热点 1.前往「设置」>「其他无线连接」>「个人热 ...

  9. 如何通过手机给没有无线网卡的电脑提供网络 | usb共享网络给电脑

    如何通过手机给没有无线网卡的电脑提供网络 1.原理的一句话概括 本质是就是通过手机自带的"usb共享网络"的功能将手机的流量4G网络通过数据线共享给电脑使用 2.使用场景 3.具体 ...

最新文章

  1. 1004 Counting Leaves (30分) (vector实现)
  2. Thread和Object类中关于线程的相关方法
  3. 小白该如何学习Linux操作系统(2)
  4. 工作391-选择Hbuilder x作为开发工具
  5. 成为顶尖架构师必须要面对的面试题
  6. short类型占16位,可以赋给short类型的最大值32767,最小值为-32768
  7. 第 5 章 结合javabean实现CRUD
  8. Marathon环境下fastdfs和vsftpd和miniIo文件服务器搭建的方式
  9. niceScroll 的使用
  10. 通过mtd读写flash_linuxmtd读写flash
  11. 电脑系统常用的10个快捷键,适合电脑新用户看看
  12. jvm System.gc()说明
  13. img在div中居中
  14. InnoDB行格式(COMPACT,redundant)对比
  15. 开源技术分享:SDN网络浅析与选型
  16. UML交互图(时序图、顺序图、序列图是一样的、协作图)
  17. 日语口语1.13 ジェトロの山本さんから部長のことをお伺いまして
  18. Google开放星空观测应用SkyMap源代码
  19. 论文笔记:联邦学习——Federated Learning: Strategies for Improving Communication Efficiency
  20. linux下用C语言实现MP3播放器

热门文章

  1. 网速慢的几种原因--冤枉的几天呀(网线的问题)
  2. 基于51单片机的脉搏心率心跳血压体温测量检测仿真(仿真+原理图+源码+论文)
  3. Word2010版 ,每页上下都有一根粗黑线,但是不是页眉或页脚的下框线,怎么删除?
  4. Unity 实战项目 ☀️| Unity实现 天空盒 轮播系列切换
  5. 年已过,新的一年如何过?
  6. 《啊哈!算法》第一章 - 第三节 - 快速排序(Java实现)
  7. 大疆社招测开面经(一年经验,已通过)
  8. 2021最全 深圳互联网公司
  9. FileUriExposedException: file:////XXXXXXXX g exposed beyond app through ClipData.Item.getUri()问题的解决
  10. 《城市大脑系列建设标准规范》立项评审会胜利召开