【树莓派】【转】将树莓派Raspberry Pi设置为无线路由器(WiFi热点AP,RTL8188CUS芯片)
下文为转载,文章转自:http://wangye.org/blog/archives/845/,仅供本次学习实践参考。
最近又开始折腾起Raspberry Pi来了,因为某处上网需要锐捷拨号,于是我就想能不能让我的树莓派代劳,当然首先要将其改造为路由器,默认自带的网口作为WAN口,我们还缺一个网口,木有办法,只好占用一个USB口,接上一个USB网卡,网上的USB转RJ45网线口的适配器比较少,价格也不便宜,于是就考虑干脆将其改造成无线路由,也符合时下高端大气上档次的标准。
准备工作,当然要先去购买一个USB无线网卡,可以购买的型号比较多,Raspberry Pi官方也提供了兼容性列表供大家参考,具体猛击这里。我这里购买的是网件(Netgear)WNA1000M 150M迷你USB无线网卡。
较为官方的介绍配置为无线热点的文章莫过于这一篇《RPI-Wireless-Hotspot》。但是实际配置下来始终无法成功。但是无线网卡确实能够被识别,可以通过lsusb
和lsmod
查看到,不过我注意到这款无线的芯片型号是RealTek RTL8188CUS,初步怀疑是驱动问题。
当然看到别人的老款无线网卡都配置成功了心里难免痒痒的,当然也不能再浪费银子去再买个网卡,于是只好自己摸索,不过天无绝人之路,在N次刷机重装系统后,终于找到了成功的办法,其实关键的文章就在上面那篇文章的一个链接中《Turn Your Raspberry Pi Into a WiFi Hotspot with Edimax Nano USB EW-7811Un (RTL8188CUS chipset)》。
好了,下面我将实践的过程记录下来供大家参考,当然主要参考了上面两篇文章,这里是配置的回忆,我尽量记录详细,遗漏之处望指出。
1. 安装系统(如果系统已经安装可以跳过这一步)
1.1 尽量使用最新系统,首先下载官方最新镜像,然后使用Win32DiskImager烧录到SD卡上。注意这里我们选用的是Raspbian。
1.2 Raspberry Pi连接上无线网卡,然后系统镜像刷入SD卡后,我们连接显示器键盘和鼠标进行初始化配置工作,当然没有条件的话推荐直接使用SSH连接Raspberry Pi,这样更方便,因为新系统默认开放了SSH管理。
连接信息主要如下:
主机名 : raspberrypi 用户名 : pi 密 码 : raspberry
如果你是直接通过SSH连接到Raspberry Pi的话,下面的配置步骤是必要的:
1.2.1 初始化配置,下面的配置只有在新安装的系统内需要,仅做一次。
运行下面的命令,进入配置界面:
sudo raspi-config |
推荐更新下面的配置选项(新配置界面):
1 Expand Filesystem
2 Change User Password
4 Internationalisation Options
I1 Change Locale
I2 Change Timezone
8 Advanced Options
A3 Memory Split
A6 Update
(旧配置界面)
update
expand_rootfs
change_pass
change_timezone
memory_split
这里要注意Memory Split/memory_split
,默认预留给图形界面的是64MB,作为一台无线路由基本上就用不到图形界面了,很显然64MB略有奢侈,我们将其改成32MB。
最后Finish
完成初始化配置。系统会自动提示重启,如果没有按预期重启,请使用下面的命令重启系统:
sudo shutdown -r now
2. 安装hotspot(hostapd)
sudo apt-get install bridge-utils hostapd
hostapd实现的是无线共享,但需要注意的是官方提供的程序不兼容RTL8188CUS芯片的无线网卡,不过Edimax团队为我们专门编译了兼容的版本,下面的操作需要替换hostapd为兼容版本。
替换的命令如下:
wget http://www.daveconroy.com/wp3/wp-content/uploads/2013/07/hostapd.zip
unzip hostapd.zip
sudo mv /usr/sbin/hostapd /usr/sbin/hostapd.bak
sudo mv hostapd /usr/sbin/hostapd.edimax
sudo ln -sf /usr/sbin/hostapd.edimax /usr/sbin/hostapd
sudo chown root.root /usr/sbin/hostapd
sudo chmod 755 /usr/sbin/hostapd
接下来提供两种方案,一种是桥接方式设置热点,有点类似交换机工作原理,将网线口的信号转换为无线,另外一种则是路由方式实现无线上网,和大部分路由器工作方式一样。
3. 桥接的方式设置WiFi热点(方案一)
3.1 安装必备程序
sudo apt-get install bridge-utils
3.2 配置网卡
编辑网卡配置文件:
sudo vi /etc/network/interfaces
注释掉所有的关于无线网卡的部分,最后应该变成下面所示:
#allow-hotplug wlan0
#wpa-roam /etc/wpa_supplicant/wpa_supplicant.conf
#iface default inet dhcp
加上下面这段桥接配置:
auto br0
iface br0 inet dhcp
bridge_ports eth0 wlan0
最终的配置主要由以下几个部分组成:
#loopback adapter
auto lo
iface lo inet loopback
#wired adapter
iface eth0 inet dhcp
#bridge
auto br0
iface br0 inet dhcp
bridge_ports eth0 wlan0
3.3 配置hostapd
sudo nano /etc/hostapd/hostapd.conf
配置信息如下:
interface=wlan0
driver=rtl871xdrv
bridge=br0
ssid=My_SSID_Name
channel=1
wmm_enabled=0
wpa=1
wpa_passphrase=MYPASSWORD
wpa_key_mgmt=WPA-PSK
wpa_pairwise=TKIP
rsn_pairwise=CCMP
auth_algs=1
macaddr_acl=0
配置文件具体我就不说了,想必大家看内容也知道各项的含义,保存这个配置文件。
3.4 重启并测试hostapd
sudo reboot
重启完成后,使用下面的命令测试是否正确:
sudo hostapd -dd /etc/hostapd/hostapd.conf
如果没有错误的话,你这时应该能搜索到你所配置的无线信号。然后Ctrl+C退出这个测试。
如果一切正常的话,我们可以设置hostapd的配置文件路径了。
sudo nano /etc/default/hostapd
去掉注释符号并改动下面这行为我们的配置文件路径:
DAEMON_CONF="/etc/hostapd/hostapd.conf"
桥接方式配置完成!
4. 路由的方式设置WiFi热点(方案二)
4.1 安装必备程序
sudo apt-get install udhcpd
udhcpd主要为连接到WiFi的设备自动分配IP地址的,当然你也可以换用你所熟悉的软件。
4.2 配置udhcpd,编辑/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
接下来编辑/etc/default/udhcpd
并且将下面这行注释掉,以使DHCP Server正常工作:
#DHCPD_ENABLED="no"
4.3 配置无线网卡
通过下面的命令给无线网卡设置一个IP地址:
sudo ifconfig wlan0 192.168.42.1
当然为了下次启动仍然有效,我们需要配置/etc/network/interfaces
文件:
sudo nano /etc/network/interfaces
注释掉所有的关于无线网卡的部分,最后应该变成下面所示:
#wpa-roam /etc/wpa_supplicant/wpa_supplicant.conf
#iface default inet dhcp
注意保留allow-hotplug wlan0
,英文原文是不保留的,但是我操作下来发现如果不保留这段的话,无线网卡有时无法正常配置IP,最后无线网卡IP的配置信息如下:
allow-hotplug wlan0
iface wlan0 inet static
address 192.168.42.1
netmask 255.255.255.0
4.4 编辑hostapd配置
sudo nano /etc/hostapd/hostapd.conf
内容如下:
interface=wlan0
driver=rtl871xdrv
ssid=My_SSID_Name
hw_mode=g
channel=
macaddr_acl=
auth_algs=
ignore_broadcast_ssid=
wpa=
wpa_passphrase=MYPASSWORD
wpa_key_mgmt=WPA-PSK
wpa_pairwise=TKIP
rsn_pairwise=CCMP
4.7 启动IP转向功能以便于开通NAT
sudo sh -c "echo 1 > /proc/sys/net/ipv4/ip_forward"
编辑/etc/sysctl.conf
改动下面这行:
net.ipv4.ip_forward=1
4.8 配置iptables防火墙
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
到这里路由的NAT功能已经被启用,我们将刚才配置的iptables保存下来以便于下次使用:
sudo sh -c "iptables-save > /etc/iptables.ipv4.nat"
编辑/etc/network/interfaces
然后在最后加上下面这行以使每次启动都自动加载iptables配置:
up iptables-restore < /etc/iptables.ipv4.nat
4.9 重启并测试hostapd
sudo reboot
重启完成后,使用下面的命令测试是否正确:
sudo hostapd -dd /etc/hostapd/hostapd.conf
如果没有错误的话,你这时应该能搜索到你所配置的无线信号。然后Ctrl+C退出这个测试。
如果一切正常的话,我们可以设置hostapd的配置文件路径了。
sudo nano /etc/default/hostapd
去掉注释符号并改动下面这行为我们的配置文件路径:
DAEMON_CONF="/etc/hostapd/hostapd.conf"
4.10 启动相应软件,并加入启动项
sudo service hostapd start
sudo service udhcpd start
sudo update-rc.d hostapd enable
sudo update-rc.d udhcpd enable
2013年12月12日更新
最近经常发现无线网卡配置的DHCP不能发挥作用,经过排查发现给无线网卡指定的静态IP失败了,也就是说无线网卡没有IP导致DHCP无法工作,在网上找到这篇文章《Why won't dnsmasq's DHCP server work when using hostapd?》,根据内容我将/etc/default/ifplugd
的内容修改配置如下:
INTERFACES="eth0"
HOTPLUG_INTERFACES="eth0"
ARGS="-q -f -u0 -d10 -w -I"
SUSPEND_ACTION="stop"
重启了几次进行测试,结果一切正常!
【树莓派】【转】将树莓派Raspberry Pi设置为无线路由器(WiFi热点AP,RTL8188CUS芯片)的更多相关文章
- 将树莓派Raspberry Pi设置为无线路由器(WiFi热点AP,RTL8188CUS芯片)
http://wangye.org/blog/archives/845/ 最近又开始折腾起Raspberry Pi来了,因为某处上网需要锐捷拨号,于是我就想能不能让我的树莓派代劳,当然首先要将其改造为 ...
- ubuntu设置WPA2-PSK的wifi热点(AP)——hostapd+dhcpd
在ubuntu 12.04中,默认可以设置的wifi热点是只能用WEP加密,毫无疑问,这样的加密方式,安全性低,现在可以在10几秒的时间内破解,并且只能添加ad-hoc模式的热点,不支持添加AP模式, ...
- 树莓派(1)- Raspberry Pi 3B 安装系统并联网
一.背景 昨天到手淘宝买的3B,既然买了就不能让它吃灰,动起来. 二.物料 名称 说明 硬件 树莓派3B 主体 树莓派电源 5V 2A sd卡 4G低速(推荐是16G class10),我手头只有这 ...
- android 代码设置、打开wifi热点及热点的连接
用过快牙的朋友应该知道它们在两天设备之间传输文件的时候使用的是wifi热点,然后另一台便连接这个热点再进行传输.快牙传输速度惊人应该跟它的这种机制有关系吧.不知道它的搜索机制是怎样的,但我想应该可以通 ...
- android 代码设置、打开wifi热点及热点的连接(转)
用过快牙的朋友应该知道它们在两天设备之间传输文件的时候使用的是wifi热点,然后另一台便连接这个热点再进行传输.快牙传输速度惊人应该跟它的这种机制有关系吧.不知道它的搜索机制是怎样的,但我想应该可 ...
- 树莓派设定笔记(Raspberry Pi 3 B+)
树莓派默认用户名密码 pi / raspberry 一.启用root用户 设置root用户密码 sudo passwd root 开启root账户 sudo passwd --unlock root ...
- Raspberry Pi:树莓派安装基础系统 Raspberry Pi(树莓派系统)
准备材料 树莓派4B 树莓派系统镜像 SDFormatter (格式化工具) Win32DiskImager (镜像拷录工具) 镜像下载 Rspberry Pi (2020-08-24版本比较稳定) ...
- Raspberry Pi开发之旅-WIFI遥控小车
一.简单介绍树莓派的GPIO口 上图是树莓派2代的接口(不同型号接口会有差异),我们就以此为例来说下这些接口. 1.GPIO介绍 GPIO 英文全称是:General-purpose input/ou ...
- ubuntu下设置电脑为WiFi热点
这是个问题 自从Windows奔溃以来! 扔掉360:Linux下无线网卡作WiFi路由器
随机推荐
- PHP服务器配置环境变量
我们写的PHP应用程序,通常会分别在本地.开发.测试.RC.生产环境中运行,不同环境中全局变量各不相同.通常简单的部署做法是,每次部署到一个环境,都需要先修改对应的全局变量,然后再部署代码.如果部署频 ...
- expdp ORA-31693 ORA-31617 ORA-19505 ORA-27037
使用expdp并行导出数据的时候报如下错误: Connected to: Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64b ...
- c/c++ qsort 函数的简单使用(1)
#include <stdio.h> #include <stdlib.h> //打印数组元素 void print(int arr[], int n){ ; i < n ...
- React 基础入门,基础知识介绍
React不管在demo渲染还是UI上,都是十分方便,本人菜鸟试试学习一下,结合阮一峰老师的文章,写下一点关于自己的学习react的学习笔记,有地方不对的地方,希望各位大牛评论指出: PS:代码包下载 ...
- 列表边框column-rule
column-rule主要是用来定义列与列之间的边框宽度.边框样式和边框颜色.简单点说,就有点类似于常用的border属性.但column-rule是不占用任何空间位置的,在列与列之间改变其宽度不会改 ...
- 【《zw版·Halcon与delphi系列原创教程》 zw_halcon人脸识别
[<zw版·Halcon与delphi系列原创教程>zw_halcon人脸识别 经常有用户问,halcon人脸识别方面的问题. 可能是cv在人脸识别.车牌识别方面的投入太多了. 其实,人脸 ...
- IIS7 全新管理工具AppCmd.exe的命令使用实例分享
IIS 7 提供了一个新的命令行工具 Appcmd.exe,可以使用该工具来配置和查询 Web 服务器上的对象,并以文本或 XML 格式返回输出. 下面是一些可以使用 Appcmd.exe 完成的任务 ...
- CSS之float样式总结
从四大开始开始慢慢接触前端,大概半年多过去了,虽然做了一些东西,但感觉有些点始终不是很清晰.有时候为了赶进度,没有太多时间对某个点进行全面深入思考分析,只能从网上搜一搜,试一试,只要效果出来了,任务就 ...
- IOS 7 风格Checkbox
Switchery Switchery is a simple component that helps you turn your default HTML checkbox inputs into ...
- Qt qml 单例模式
Qt qml 单例模式,没什么好说的,看代码吧.单例模式很适合做全局的配置文件. [示例下载] http://download.csdn.net/detail/surfsky/8539313 [以下是 ...