Raspberry Pi 配置无线热点

本文涉及的产品
公网NAT网关,每月750个小时 15CU
简介: 无线热点迷思这几天一直想着对BananaPro上增加输入和输出设备,折腾来折腾去的最后发现是自己的思路出问题了。作为上位除了做媒体中心之时需要输入输出设备,貌似大多数情况下是不需要这些的,它只是一台提供服务超小型服务器将它当作普通PC来用确在是一种思路上误区。
无线热点

迷思

这几天一直想着对BananaPro上增加输入和输出设备,折腾来折腾去的最后发现是自己的思路出问题了。作为上位除了做媒体中心之时需要输入输出设备,貌似大多数情况下是不需要这些的,它只是一台提供服务超小型服务器将它当作普通PC来用确在是一种思路上误区。

我们本来就拥有各种的输入输出设备,例如iMac, iPad, iPhone 作为交互与显示的终端它们应该首选而不是在上位机上加个LCD。我只需要将它作为一个中继器链接我的所有设备,同时提供一些我所必备的服务就好了。

工作原理

  • 启动 WIFI 访问点和广播频道
  • 启用DHCP 服务为接入设备动态分配IP
  • 建立NAT 将 WIFI 的连接请求数据转发至网卡

配置过程

在安装之前先更新安源

sudo apt-get update

安装必备的工具包 hostadpudhcpd

sudo apt-get install hostadp udhcpd

配置 DHCP. 修改 /etc/udhcpd.conf 配置文件的内容

start 192.168.42.2 # This is the range of IPs that the hostspot will give to client devices.
end 192.168.42.20
interface wlan0 # The device uDHCP listens on.
remaining yes
opt dns 8.8.8.8 4.2.2.2 # The DNS servers client devices will use.
opt subnet 255.255.255.0
opt router 192.168.42.1 # The Pi's IP address on wlan0 which we will set up shortly.
opt lease 864000 # 10 day DHCP lease time in seconds 

将 DHCP 服务的默认配置 /etc/default.udhcpd:

DHCPD_ENABLED="no"

修改为

#DHCPD_ENABLED="no"

无线网卡作为中继器时需要使用静态地址:

sudo ifconfig wlan0 192.168.100.1

wlan0 是无线网卡的设备ID,可能你的设备ID会是其它的值,请先用 iwconfig 确认无线网卡的设备ID。

如果要将上述配置添加到起动项中,可以编辑 /etc/network/interfaces 并将 iface wlan0 inet dhcp 替换为:

allow-hotplug wlan0
iface wlan0 inet static
address 192.168.100.1
netmask 255.255.255.0

配置 HostAPD

接下来就是配置WIFI 热点服务了,打开 /etc/hostapd/hostapd.conf 文件,并将内容修改如下:

interface=wlan0
driver=nl80211
ssid=My_AP
hw_mode=g
channel=6
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

这里有几个参数是需要说明的:

  • ssid 是 AP 在连接设备中所显示的可用接入点名,
  • wpa_passphrase 连接密码

由于我们需要AP能在系统启动时就自动生效,hostadp 是作为服务运行的,此时我们需要将 hostadp 的默认配置文件的指向声明一下。

编辑 /etc/default/hostapd 配置文件,将

#DAEMON_CONF=""

修改为刚才编辑的配置文件的绝对路径

DAEMON_CONF="/etc/hostapd/hostapd.conf"

配置NAT

NAT (Network Address Translation) 也叫做网络掩蔽或者IP掩蔽(IP masquerading),是一种在IP封包通过路由器或防火墙时重写源IP地址或目的IP地址的技术。这种技术被普遍使用在有多台主机但只通过一个公有IP地址访问因特网的私有网络中。根据规范,路由器是不能这样工作的,但它的确是一个方便并得到了广泛应用的技术。当然,NAT也让主机之间的通信变得复杂,导致通信效率的降低。

我们配置NAT的原因是,由中继器必定是具有两个网卡(本例中与内部设备连接为WIFI网卡,与路由器直连的是一个普通千兆网卡),这两个网卡是处于两个不同网段的,普通网卡的地址是从路由器的DHCP分配获得的,那么就可以使得中继器本身可以访问互联网,而WIFI网卡是与其它的设备连接是静态地址,而且通过这个网卡向其它的连接设备分配动态IP,那么这两个网段之间是不会互通的,那么如果希望使得通过中继连接的设备也可以连接到互联网,那么就得将WIFI连接设备上发来的请求转发至普通网卡上,再通过该网卡连接到互联网。也就是上述所说的NAT结构。接下来我们就需要配置NAT的地址表, 打开 /etc/sysctl.conf 配置文件,在文件最后一行加入:

net.ipv4.ip_forward=1

然后,在内核启动 NAT:

sudo iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
sudo iptables -A FORWARD -i eth0 -o wlan0 -m state --state RELATED,ESTABLISHED -j ACCEPT
sudo iptables -A FORWARD -i wlan0 -o eth0 -j ACCEPT 

接着,重新打开 /etc/network/interfaces 网络接口配置文件,添加:

up iptables-restore < /etc/iptables.ipv4.nat

启动服务

至此已基本配置成功,下面就是启动 hostapdudhcpd 服务了:

sudo service hostapd start
sudo service udhcpd start

最后我将需要将这两个服务在系统启动时一并启动:

sudo update-rc.d hostapd enable
sudo update-rc.d uphcpd enable

重启,大功告成!这个配置过程在 Lubuntu 和 Raspberry 上都测试成功

相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
相关文章
|
数据可视化
ShapeNet数据集及dataset代码分析
ShapeNet数据集及dataset代码分析
1278 0
|
消息中间件 Java Kafka
Spring Boot集成Kafka动态创建消费者与动态删除主题(实现多消费者的发布订阅模型)
Spring Boot集成Kafka动态创建消费者与动态删除主题(实现多消费者的发布订阅模型)
17837 1
Spring Boot集成Kafka动态创建消费者与动态删除主题(实现多消费者的发布订阅模型)
|
Ubuntu
Ubuntu系统镜像下载,国内镜像站大全(山大/清华/阿里/浙大/中科大...)
装Ubuntu,是很多理工科同学入门的第一个挑战,首先我们就需要找到一个能用的iso镜像,根据你的网络环境的不同,不同的站点下载速度会不一样,下面列举一下几个比较好用的,都是来自Ubuntu官方推荐镜像站链接导航国内分区
9081 0
|
算法 安全 编译器
【C++ 关键字 override】C++ 重写关键字override(强制编译器检查该函数是否覆盖已存在的虚函数)
【C++ 关键字 override】C++ 重写关键字override(强制编译器检查该函数是否覆盖已存在的虚函数)
500 0
react-Native init初始化项目报错”TypeError: cli.init is not a function“
react-Native init初始化项目报错”TypeError: cli.init is not a function“
1227 1
|
7月前
|
JavaScript 数据安全/隐私保护
Vue Amazing UI 组件库(Vue3+TypeScript+Vite 等最新技术栈开发)
Vue Amazing UI 是一个基于 Vue 3、TypeScript、Vite 等最新技术栈开发构建的现代化组件库,包含丰富的 UI 组件和常用工具函数,并且持续不断维护更新中。另外,组件库全量使用 TypeScript,支持自动按需引入和 Tree Shaking 等,能够显著提升开发效率,降低开发成本。
470 5
Vue Amazing UI 组件库(Vue3+TypeScript+Vite 等最新技术栈开发)
|
9月前
|
人工智能 机器人 vr&ar
Find3D:加州理工学院推出的3D部件分割模型
Find3D是由加州理工学院推出的3D部件分割模型,能够根据任意文本查询分割任意对象的任何部分。该模型利用强大的数据引擎自动从互联网上的3D资产生成训练数据,并通过对比训练方法训练出一个可扩展的3D模型。Find3D在多个数据集上表现出色,显著提升了平均交并比(mIoU),并能处理来自iPhone照片和AI生成图像的野外3D构建。
162 5
Find3D:加州理工学院推出的3D部件分割模型
|
10月前
|
JSON 算法 安全
JWT Bearer 认证在 .NET Core 中的应用
【10月更文挑战第30天】JWT(JSON Web Token)是一种开放标准,用于在各方之间安全传输信息。它由头部、载荷和签名三部分组成,用于在用户和服务器之间传递声明。JWT Bearer 认证是一种基于令牌的认证方式,客户端在请求头中包含 JWT 令牌,服务器验证令牌的有效性后授权用户访问资源。在 .NET Core 中,通过安装 `Microsoft.AspNetCore.Authentication.JwtBearer` 包并配置认证服务,可以实现 JWT Bearer 认证。具体步骤包括安装 NuGet 包、配置认证服务、启用认证中间件、生成 JWT 令牌以及在控制器中使用认证信息
387 2
|
Ubuntu Linux Shell
树莓派ubuntu镜像备份详细教程
本文是关于树莓派Ubuntu镜像备份的详细教程,包括如何获取镜像、使用PiShrink工具减小镜像体积的步骤和命令,以及相关参数的说明。
413 0
|
编解码 数据可视化 数据挖掘
空间单细胞|Slide-seq分析、可视化与整合(1)
空间单细胞|Slide-seq分析、可视化与整合(1)