http://wangye.org/blog/archives/845/

最近又开始折腾起Raspberry Pi来了,因为某处上网需要锐捷拨号,于是我就想能不能让我的树莓派代劳,当然首先要将其改造为路由器,默认自带的网口作为WAN口,我们还缺一个网口, 木有办法,只好占用一个USB口,接上一个USB网卡,网上的USB转RJ45网线口的适配器比较少,价格也不便宜,于是就考虑干脆将其改造成无线路由, 也符合时下高端大气上档次的标准。

准备工作,当然要先去购买一个USB无线网卡,可以购买的型号比较多,Raspberry Pi官方也提供了兼容性列表供大家参考,具体猛击这里。我这里购买的是网件(Netgear)WNA1000M 150M迷你USB无线网卡

较为官方的介绍配置为无线热点的文章莫过于这一篇《RPI-Wireless-Hotspot》。但是实际配置下来始终无法成功。但是无线网卡确实能够被识别,可以通过lsusblsmod查看到,不过我注意到这款无线的芯片型号是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管理。

连接信息主要如下:

  1. 主机名 : raspberrypi
  2. 用户名 : pi
  3. : raspberry

如果你是直接通过SSH连接到Raspberry Pi的话,下面的配置步骤是必要的:

1.2.1 初始化配置,下面的配置只有在新安装的系统内需要,仅做一次。

运行下面的命令,进入配置界面:

  1. sudo raspi-config

推荐更新下面的配置选项(新配置界面):

  1. 1 Expand Filesystem
  2. 2 Change User Password
  3. 4 Internationalisation Options
  4. I1 Change Locale
  5. I2 Change Timezone
  6. 8 Advanced Options
  7. A3 Memory Split
  8. A6 Update

(旧配置界面)

  1. update
  2. expand_rootfs
  3. change_pass
  4. change_timezone
  5. memory_split

这里要注意Memory Split/memory_split,默认预留给图形界面的是64MB,作为一台无线路由基本上就用不到图形界面了,很显然64MB略有奢侈,我们将其改成32MB

最后Finish完成初始化配置。系统会自动提示重启,如果没有按预期重启,请使用下面的命令重启系统:

  1. sudo shutdown -r now

2. 安装hotspot(hostapd)

  1. sudo apt-get install bridge-utils hostapd

hostapd实现的是无线共享,但需要注意的是官方提供的程序不兼容RTL8188CUS芯片的无线网卡,不过Edimax团队为我们专门编译了兼容的版本,下面的操作需要替换hostapd为兼容版本。

替换的命令如下:

  1. wget http://www.daveconroy.com/wp3/wp-content/uploads/2013/07/hostapd.zip
  2. unzip hostapd.zip
  3. sudo mv /usr/sbin/hostapd /usr/sbin/hostapd.bak
  4. sudo mv hostapd /usr/sbin/hostapd.edimax
  5. sudo ln -sf /usr/sbin/hostapd.edimax /usr/sbin/hostapd
  6. sudo chown root.root /usr/sbin/hostapd
  7. sudo chmod 755 /usr/sbin/hostapd

接下来提供两种方案,一种是桥接方式设置热点,有点类似交换机工作原理,将网线口的信号转换为无线,另外一种则是路由方式实现无线上网,和大部分路由器工作方式一样。

3. 桥接的方式设置WiFi热点(方案一)

3.1 安装必备程序

  1. sudo apt-get install bridge-utils

3.2 配置网卡

编辑网卡配置文件:

  1. sudo nano /etc/network/interfaces

注释掉所有的关于无线网卡的部分,最后应该变成下面所示:

  1. #allow-hotplug wlan0
  2. #wpa-roam /etc/wpa_supplicant/wpa_supplicant.conf
  3. #iface default inet dhcp

加上下面这段桥接配置:

  1. auto br0
  2. iface br0 inet dhcp
  3. bridge_ports eth0 wlan0

最终的配置主要由以下几个部分组成:

  1. #loopback adapter
  2. auto lo
  3. iface lo inet loopback
  4. #wired adapter
  5. iface eth0 inet dhcp
  6. #bridge
  7. auto br0
  8. iface br0 inet dhcp
  9. bridge_ports eth0 wlan0

3.3 配置hostapd

  1. sudo nano /etc/hostapd/hostapd.conf

配置信息如下:

  1. interface=wlan0
  2. driver=rtl871xdrv
  3. bridge=br0
  4. ssid=My_SSID_Name
  5. channel=1
  6. wmm_enabled=0
  7. wpa=1
  8. wpa_passphrase=MYPASSWORD
  9. wpa_key_mgmt=WPA-PSK
  10. wpa_pairwise=TKIP
  11. rsn_pairwise=CCMP
  12. auth_algs=1
  13. macaddr_acl=0

配置文件具体我就不说了,想必大家看内容也知道各项的含义,保存这个配置文件。

3.4 重启并测试hostapd

  1. sudo reboot

重启完成后,使用下面的命令测试是否正确:

  1. sudo hostapd -dd /etc/hostapd/hostapd.conf

如果没有错误的话,你这时应该能搜索到你所配置的无线信号。然后Ctrl+C退出这个测试。

如果一切正常的话,我们可以设置hostapd的配置文件路径了。

  1. sudo nano /etc/default/hostapd

去掉注释符号并改动下面这行为我们的配置文件路径:

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

桥接方式配置完成!

4. 路由的方式设置WiFi热点(方案二)

4.1 安装必备程序

  1. sudo apt-get install udhcpd

udhcpd主要为连接到WiFi的设备自动分配IP地址的,当然你也可以换用你所熟悉的软件。

4.2 配置udhcpd,编辑/etc/udhcpd.conf,主要内容如下:

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

接下来编辑/etc/default/udhcpd并且将下面这行注释掉,以使DHCP Server正常工作:

  1. #DHCPD_ENABLED="no"

4.3 配置无线网卡

通过下面的命令给无线网卡设置一个IP地址:

  1. sudo ifconfig wlan0 192.168.42.1

当然为了下次启动仍然有效,我们需要配置/etc/network/interfaces文件:

  1. sudo nano /etc/network/interfaces

注释掉所有的关于无线网卡的部分,最后应该变成下面所示:

  1. #wpa-roam /etc/wpa_supplicant/wpa_supplicant.conf
  2. #iface default inet dhcp

注意保留allow-hotplug wlan0,英文原文是不保留的,但是我操作下来发现如果不保留这段的话,无线网卡有时无法正常配置IP,最后无线网卡IP的配置信息如下:

  1. allow-hotplug wlan0
  2. iface wlan0 inet static
  3. address 192.168.42.1
  4. netmask 255.255.255.0

4.4 编辑hostapd配置

  1. sudo nano /etc/hostapd/hostapd.conf

内容如下:

  1. interface=wlan0
  2. driver=rtl871xdrv
  3. ssid=My_SSID_Name
  4. hw_mode=g
  5. channel=6
  6. macaddr_acl=0
  7. auth_algs=1
  8. ignore_broadcast_ssid=0
  9. wpa=2
  10. wpa_passphrase=MYPASSWORD
  11. wpa_key_mgmt=WPA-PSK
  12. wpa_pairwise=TKIP
  13. rsn_pairwise=CCMP

4.7 启动IP转向功能以便于开通NAT

  1. sudo sh -c "echo 1 > /proc/sys/net/ipv4/ip_forward"

编辑/etc/sysctl.conf改动下面这行:

  1. net.ipv4.ip_forward=1

4.8 配置iptables防火墙

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

到这里路由的NAT功能已经被启用,我们将刚才配置的iptables保存下来以便于下次使用:

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

编辑/etc/network/interfaces然后在最后加上下面这行以使每次启动都自动加载iptables配置:

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

4.9 重启并测试hostapd

  1. sudo reboot

重启完成后,使用下面的命令测试是否正确:

  1. sudo hostapd -dd /etc/hostapd/hostapd.conf

如果没有错误的话,你这时应该能搜索到你所配置的无线信号。然后Ctrl+C退出这个测试。

如果一切正常的话,我们可以设置hostapd的配置文件路径了。

  1. sudo nano /etc/default/hostapd

去掉注释符号并改动下面这行为我们的配置文件路径:

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

4.10 启动相应软件,并加入启动项

  1. sudo service hostapd start
  2. sudo service udhcpd start
  3. sudo update-rc.d hostapd enable
  4. 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的内容修改配置如下:

  1. INTERFACES="eth0"
  2. HOTPLUG_INTERFACES="eth0"
  3. ARGS="-q -f -u0 -d10 -w -I"
  4. SUSPEND_ACTION="stop"

重启了几次进行测试,结果一切正常!

将树莓派Raspberry Pi设置为无线路由器(WiFi热点AP,RTL8188CUS芯片)的更多相关文章

  1. 【树莓派】【转】将树莓派Raspberry Pi设置为无线路由器(WiFi热点AP,RTL8188CUS芯片)

    下文为转载,文章转自:http://wangye.org/blog/archives/845/,仅供本次学习实践参考. 最近又开始折腾起Raspberry Pi来了,因为某处上网需要锐捷拨号,于是我就 ...

  2. ubuntu设置WPA2-PSK的wifi热点(AP)——hostapd+dhcpd

    在ubuntu 12.04中,默认可以设置的wifi热点是只能用WEP加密,毫无疑问,这样的加密方式,安全性低,现在可以在10几秒的时间内破解,并且只能添加ad-hoc模式的热点,不支持添加AP模式, ...

  3. 树莓派(Raspberry Pi)使用Shell编写的极简Service

    树莓派(Raspberry Pi)运行的系统是基于Debian的,不仅可以运行Shell,还支持systemd和docker,可以编写一个简单的服务,让其在启动时运行,执行一些自动化的操作.这里在Ra ...

  4. 树莓派(Raspberry Pi)搭建简单的lamp服务

    树莓派(Raspberry Pi)搭建简单的lamp服务: 1. LAMP 的安装 sudo apt-get install apache2 mysql-server mysql-client php ...

  5. 树莓派raspberry pi配置

    (1)国际化语言 树莓派初装系统之后,首次启动会出现“raspi-config”工具,如下图:(若不是初次启动,在命令模式下,请输入 sudo raspi-config 命令,即可调出此界面.若在图形 ...

  6. VLOG丨树莓派Raspberry Pi 3安装PLEX并挂载USB硬盘打造最牛的微型家庭影音服务器2018

    视频介绍 树莓派3安装目前最流行的PLEX服务器,实现既能最大限度降低功耗,也能随时随地观看分享影片. 一.在树莓派下安装PLEX媒体服务器 1.在终端,将你的树莓派更新至最新 sudo apt up ...

  7. 用树莓派Raspberry Pi和Micro:bit做一个自拍器

    在这个项目中,我们将使用Python来构建一个由Micro:bit触发树莓派Raspberry Pi和相机模块的自拍器.这是开始使用硬件和简单文本编程的好方法. 我们将学习: 如何设置Raspberr ...

  8. 树莓派 Raspberry PI基础

    树莓派 Raspberry PI基础 官网网址:https://www.raspberrypi.org 下载地址:https://www.raspberrypi.org/downloads/ 官方系统 ...

  9. 树莓派(raspberry pi)学习4: 更改键盘布局(转)

    树莓派(raspberry pi)用了几次后,发现键盘老是按错,一些字符打不出来或打错 这个问题,折腾我半天.还是把心得分享一下吧 上网查,发现是键盘布局不对,树莓派(raspberry pi)是英国 ...

随机推荐

  1. JavaScript 踩坑心得— 为了高速(下)

    一.前言 本文的上一篇 JavaScript 踩坑心得- 为了高速(上) 主要和大家分享的是 JavaScript 使用过程中的基本原则以及编写过程中的心得分享,本文主要和大家聊聊在各个使用场景下的 ...

  2. chardet安装

    1.下载 chardet-2.2.1.tar.gz (md5)   https://pypi.python.org/pypi/chardet#downloads 2.解压至C:\Python27\Li ...

  3. [itint5]跳马问题加强版

    http://www.itint5.com/oj/#12 首先由跳马问题一,就是普通的日字型跳法,那么在无限棋盘上,任何点都是可达的.证法是先推出可以由(0,0)到(0,1),那么由对称型等可知任何点 ...

  4. 从iPhone4、iPhone5、iPhone6看手机外壳加工工艺进化史

    从iPhone4.iPhone5到iPhone6,苹果为我们推出了一代又一代新产品,让我们享受到最新的科技产品.每次不只是配置上的改变,苹果在工艺上也不断改变.下面就阐述一下我对这几款手机在设计和制造 ...

  5. Django用户认证系统(一)User对象

    User对象 User对象是认证系统的核心.用户对象通常用来代表网站的用户,并支持例如访问控制.注册用户.关联创建者和内容等.在Django认证框架中只有一个用户类,例如超级用户('superuser ...

  6. sed找到重复的行

    sed之仅打印相邻重复的行 cat file  aaa bbb bbb ccc ddd eee eee fff   只显示重复的行: bbb bbb eee eee   sed -n ':a;N;/\ ...

  7. Android-xUtils框架介绍(三)

    继续介绍xUtils的最后两个模块:DbUtils和HttpUtils.首先先介绍第一个SQLite数据库操纵的简单ORM框架,只要能理解xUtils为我们提供的api,相信你也能熟练的把DbUtil ...

  8. Pyhon中的除法

    Python中分为3种除法:传统除法.精确除法.地板除. 传统除法: 如果是整数除法则执行地板除,如果是浮点数除法则执行精确除法. >>>1/2 0 >>>1.0/ ...

  9. js实现对数据库的增删查改

    1.查询 复制代码 代码如下: <HTML> <HEAD> <TITLE>数据查询</TITLE> <Script > var conn = ...

  10. NOI2013矩阵游戏

    Description 婷婷是个喜欢矩阵的小朋友,有一天她想用电脑生成一个巨大的n行m列的矩阵(你不用担心她如何存储).她生成的这个矩阵满足一个神奇的性质:若用F[i][j]来表示矩阵中第i行第j列的 ...