zoukankan      html  css  js  c++  java
  • 将树莓派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》。但是实际配置下来始终无法成功。但是无线网卡确实能够被识别,可以通过lsusblsmod查看到,不过我注意到这款无线的芯片型号是RealTek RTL8188CUS,初步怀疑是驱动问题。

    lsusb WiFi Adapter

    当然看到别人的老款无线网卡都配置成功了心里难免痒痒的,当然也不能再浪费银子去再买个网卡,于是只好自己摸索,不过天无绝人之路,在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管理。

    Raspbian download

    连接信息主要如下:

    主机名 : raspberrypi
    用户名 : pi
    密  码 : raspberry

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

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

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

    sudo raspi-config

    Raspberry ConfigurationInternationalisation Options

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

    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 nano /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=6
    macaddr_acl=0
    auth_algs=1
    ignore_broadcast_ssid=0
    wpa=2
    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

    Raspberry Pi with NetGear

    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"

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

  • 相关阅读:
    Windows Server 2012配置开机启动项
    Windows Server 2019 SSH Server
    NOIP2017 senior A 模拟赛 7.7 T1 棋盘
    Noip 2015 senior 复赛 Day2 子串
    Noip 2015 senior复赛 题解
    Noip 2014 senior Day2 解方程(equation)
    Noip 2014 senior Day2 寻找道路(road)
    Noip 2014 senior Day2 无线网络发射器选址(wireless)
    Noip2014senior复赛 飞扬的小鸟
    Noip 2014 senior 复赛 联合权值(link)
  • 原文地址:https://www.cnblogs.com/welhzh/p/4189621.html
Copyright © 2011-2022 走看看