树莓派变身路由器

2024-03-15 11:08
文章标签 路由器 树莓 变身

本文主要是介绍树莓派变身路由器,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!




驱动网卡


买了一个便宜的USB网卡,里面的芯片是8188eu。



下面用这个USB网卡来驱动树莓派。首先,树莓派里面没有这个网卡的ko,所以去网上下载了一个:

https://github.com/lwfinger/rtl8188eu/tree/master




再看了一下kernel 的版本:

pi@raspberrypi ~ $ uname -a
Linux raspberrypi 3.12.28+ #709 PREEMPT Mon Sep 8 15:28:00 BST 2014 armv6l GNU/Linux


接下来编译解压出来的驱动文件,发现kernel header没有装。于是去下载了kernel header:

http://www.niksula.hut.fi/~mhiienka/Rpi/linux-headers-rpi/


接下来编译又出问题了,于是更新了gcc版本:

sudo apt-get -f install cpp-4.7 gcc-4.7

最后可以编译了,但是最后insmod module发现symbol layout有问题, 于是放弃了自己编译的想法,上网自己下载

了一个编译好的:


http://gordon.d4rc.net/8188eu_3.12.28.zip


加载了这个驱动之后,使用wpa_cli已经可以scan 了,dmesg也显示正常。说明驱动成功。

要注意的是,不要忘记把firmware装进去。


hostapd

下一步就是要使用hostapd了,首先要干掉系统自带的wpa_supplicant,然后用8188eu驱动包里面的

hostapd(官方的hostapd可能不会成功)


sudo killall wpa_supplicant
sudo killall hostapd
./hostapd   rtl_hostapd.conf

这样子就可以了成功开启AP了,其中配置文件自己要修改好,密码也要设置好。



DHCP server

要做路由器,当然要用dhcp组件了。

先安装:
sudo apt-get install isc-dhcp-server
然后配置/etc/dhcp/dhcpd.conf :
添加下面几行进去吧:
	subnet 192.168.0.0 netmask 255.255.255.0{range 192.168.0.2 192.168.0.250;option subnet-mask 255.255.255.0;option domain-name-servers 8.8.8.8;option routers 192.168.0.1;}


这里就配置好了。


转发开启

这几行代码屡试不爽:
echo "1" >/proc/sys/net/ipv4/ip_forward
iptables -t nat -A POSTROUTING  -o eth0 -j MASQUERADE 
iptables -P FORWARD ACCEPT
iptables -F FORWARD


完成配置

注意到,执行各个时候有顺序的,不能随便开启,这里搭配aria2c 给出来吧:



#!/bin/shsudo killall wpa_supplicant
sudo killall hostapd
sudo killall aria2csudo aria2c --conf-path=/home/pi/HDD/aria2/aria2.conf &ifconfig wlan0 192.168.0.1 netmask 255.255.255.0
echo "1" >/proc/sys/net/ipv4/ip_forward
iptables -t nat -A POSTROUTING  -o eth0 -j MASQUERADE 
iptables -P FORWARD ACCEPT
iptables -F FORWARD
service isc-dhcp-server restart./hostapd   rtl_hostapd.conf &

这就是一个完整的脚本了,而且可以搭配aria2c做一个下载器和路由器。



实际上这几步做完简单了,几乎和ubuntu里面的做法一样(不同的是,ubuntu里面要干掉NetworkManager)




pi@raspberrypi ~ $ uname -a
Linux raspberrypi 3.12.28+ #709 PREEMPT Mon Sep 8 15:28:00 BST 2014 armv6l GNU/Linux


这篇关于树莓派变身路由器的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/811759

相关文章

让树莓派智能语音助手实现定时提醒功能

最初的时候是想直接在rasa 的chatbot上实现,因为rasa本身是带有remindschedule模块的。不过经过一番折腾后,忽然发现,chatbot上实现的定时,语音助手不一定会有响应。因为,我目前语音助手的代码设置了长时间无应答会结束对话,这样一来,chatbot定时提醒的触发就不会被语音助手获悉。那怎么让语音助手也具有定时提醒功能呢? 我最后选择的方法是用threading.Time

树莓派5_opencv笔记27:Opencv录制视频(无声音)

今日继续学习树莓派5 8G:(Raspberry Pi,简称RPi或RasPi)  本人所用树莓派5 装载的系统与版本如下:  版本可用命令 (lsb_release -a) 查询: Opencv 与 python 版本如下: 今天就水一篇文章,用树莓派摄像头,Opencv录制一段视频保存在指定目录... 文章提供测试代码讲解,整体代码贴出、测试效果图 目录 阶段一:录制一段

计算机网络基础概念 交换机、路由器、网关、TBOX

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言一、VLAN是什么?二 、交换机三、路由器四、网关五、TBOXTelematics BOX,简称车载T-BOX,车联网系统包含四部分,主机、车载T-BOX、手机APP及后台系统。主机主要用于车内的影音娱乐,以及车辆信息显示;车载T-BOX主要用于和后台系统/手机APP通信,实现手机APP的车辆信息显示与控

1-8 图像腐蚀 opencv树莓派4B 入门系列笔记

目录 一、提前准备 二、代码详解 kernel=np.ones((2,2),np.uint8) _, binary_image = cv2.threshold(image, 127, 255, cv2.THRESH_BINARY) eroded_image=cv2.erode(binary_image,kernel,iterations=1) eroded_image2=cv2.ero

路由器的Loopback地址是什么意思?

本地环回接口(或地址),亦称回送地址(loopback address)。 此类接口是应用最为广泛的一种虚接口,几乎在每台路由器上都会使用。常见于如下用途: 1 作为一台路由器的管理地址  系统管理员完成网络规划之后,为了方便管理,会为每一台路由器创建一个loopback 接口,并在该接口上单独指定一个IP 地址作为管理地址,管理员会使用该地址对路由器远程登录(telnet )

逗比学树莓派之lcd1602显示

通过树莓派GPIO连接LCD1602,使用wiringPi库和其附带的LCD库进行显示树莓派的CPU温度和内存使用情况。 1.首先按下图连接好硬件电路图: 2.然后在终端使用命令 sudo apt-get install git 安装版本管理软件Git 。

树莓派wiringPi常用的函数介绍

 1.void pinMode (int pin, int mode) ; 这个函数式设置pin脚的输入和输出模式以及PWM的输入和输出模式。在wiringPi中只有 pin 1 (BCM_GPIO 18)是支持PWM的输出的。 2.void digitalWrite (int pin, int value) ; 这个函数式用来设置pin脚的高低电平的,当我们写HIGH or LO

RasberryPi 3B树莓派基本配置

RaspberryPi 3B树莓派基本配置 文章目录 RaspberryPi 3B树莓派基本配置一、准备工作1.1 硬件准备:1.1.1 树莓派和电源适配器:1.1.2 USB转TTL模块:1.1.3 读卡器和TF卡: 1.2 软件准备:1.2.1 下载 Raspberry Pi OS:1.2.2 SD Card Formatter:1.2.3 下载系统镜像刻录软件:1.2.4 MobaX

树莓派使用WiringPi库配合时间函数实现超声波测距

树莓派使用WiringPi库配合时间函数实现超声波测距 文章目录 树莓派使用WiringPi库配合时间函数实现超声波测距一、HR-04超声波模块原理1.1 超声波测距原理:1.2 超声波时序图: 二、树莓派与超声波模块硬件连接三、时间函数3.1 时间函数gettimeofday()原型和头文件: 四、实现超声波测距4.1 使用wiringOP库和时间函数实现超声波测距: 五、实现超声波测距

1-9 图像膨胀 opencv树莓派4B 入门系列笔记

目录 一、提前准备 二、代码详解 kernel = np.ones((3, 3), np.uint8) _, binary_image = cv2.threshold(image, 127, 255, cv2.THRESH_BINARY) dilated_image = cv2.dilate(binary_image, kernel, iterations=1) 三、运行现象 四