树莓派配置无线连接与无线AP热点

原文

之前使用过将笔记本电脑的无线网卡设置成ap,给家里的iPhone,ipad和安卓手机提供wifi链接。但是每次必须得开着笔记本,这个极不方便又不节能,所以买了个迷你的无线路由器。最近在网上看到树莓派改造成无线ap的文章自己也尝试了下,效果还不错。之前的迷你路由器信号不是很强,这样就可以放置在不同的房间提供wifi了。

需要的硬件:树莓派一个,路由器一个,SD卡,无线网卡 
SD卡烧的系统是wheezy-raspbian,无线网卡的型号是“B-LINK BL-LW06-AR1” RTL8192CU芯片

系统初始化安装的过程,网上很多这边就不描述了。先讲讲如何使用无线网卡连接无线网络,测试网卡是否正常工作。 查看usb设配,看列表中是否有无线网卡

 
 
  1. sudo lsusb
返回
 
 
  1. Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
  2. Bus 001 Device 002: ID 0424:9512 Standard Microsystems Corp.
  3. Bus 001 Device 003: ID 0424:ec00 Standard Microsystems Corp.
  4. Bus 001 Device 004: ID 0bda:8178 Realtek Semiconductor Corp. RTL8192CU 802.11n WLAN Adapter

其中Bus 001 Device 004: ID 0bda:8178 Realtek Semiconductor Corp. RTL8192CU 802.11n WLAN Adapter代表的就是无线网卡被系统识别,芯片是RTL8192CU

 
 
  1. sudo cp /etc/network/interfaces /etc/network/interfaces.bak
  2. sudo vim /etc/network/interfaces

内容替换为:

 
 
  1. auto lo //表示使用localhost
  2. iface eth0 inet dhcp //表示如果有接口ech0, 则用dhcp获得IP地址
  3. auto wlan0 //表示如果有wlan设备,使用wlan0设备名
  4. allow-hotplug wlan0 //表示wlan设备可以热插拨
  5. iface wlan0 inet dhcp //表示如果有WLAN网卡wlan0 (就是WIFI网卡), 则用dhcp获得IP地址
  6. wpa-ssid "hisen" //hisen是WIFI网SSID名称,如果是别的,请更改
  7. wpa-psk "Raspberry" //表示连接WIFI网络时,使用wpa-psk认证方式,认证密码是Raspberry。

如果有以太网网线连接,则优先采取DHCP自动连接。如果有名为hisen的WIFI网络,则采取DHCP自动连接。

此时查看ifconfig,其中wlan0的inet addr还是没有IP地址的。拔掉以太网网线

 
 
  1. sudo /etc/init.d/networking restart
再次查看ifconfig,就会显示出ip地址了,表示链接成功。 
到此无线的配置使用结束


接下来讲如何将树莓派配置成WIFI AP(access point) 
1.安装软件  
hostapd is a user space daemon for wireless access point and authentication servers
All IP devices need addresses, and ISC DHCP is the easiest and most efficient way to provide them 
 
 
  1. sudo apt-get install hostapd isc-dhcp-server
这里可能出现错误提示,需要进行sudo apt-get update操作,再执行上面的命令 
2.配置DHCP服务
 
 
  1. sudo vim /etc/dhcp/dhcpd.conf
注释掉域名,以及域名服务器。找到
 
 
  1. option domain-name "example.org";
  2. option domain-name-servers ns1.example.org, ns2.example.org;

前面加上#,修改成

 
 
  1. #option domain-name "example.org";
  2. #option domain-name-servers ns1.example.org, ns2.example.org;

找到

 
 
  1. #If this DHCP server is the official DHCP server for the local
  2. #network, the authoritative directive should be uncommented.
  3. #authoritative;

去掉authoritative前面的#,修改成

 
 
  1. #If this DHCP server is the official DHCP server for the local
  2. #network, the authoritative directive should be uncommented.
  3. authoritative;

并在文件底部加上以下代码,并保持退出

 
 
  1. subnet 192.168.42.0 netmask 255.255.255.0 {
  2. range 192.168.42.10 192.168.42.50;
  3. option broadcast-address 192.168.42.255;
  4. option routers 192.168.42.1;
  5. default-lease-time 600;
  6. max-lease-time 7200;
  7. option domain-name "local";
  8. option domain-name-servers 8.8.8.8, 8.8.4.4;
  9. }

配置说明: 
authoritative:如果这台 DHCP 服务器是网络中的「官方」服务器,则加这一行。 
option domain-name:用来设定网络域名。 
option domain-name-servers:设定DNS服务器IP。 
option subnet-mask:设定要给客户端的预设自网络掩码。 
option broadcast-address:设定要给客户端的预设广播地址。 
option time-offset:设定本地时间和格林威治时间差几秒 
default-lease-time:设定预设的租期。租期以秒计算,租约到期后,服务器会回收改 IP。 
max-lease-time:当租约到期后,客戶端可以继续要求使用同一个 IP,这个选项控制该 IP 最长可以被使用多久。 
ddns-update-style:这是用来设定是否支持 ddns 更新 IP,这个选项一定要存在才不会有错误。

 
 
  1. sudo vim /etc/default/isc-dhcp-server
修改那个接口提供DHCP服务,多个接口使用空格隔开,如“eth0 eth1”。找到 INTERFACES=""修改成
 
 
  1. INTERFACES="wlan0"

3.配置无线网卡为静态ip
如果无线网卡在工作,先停掉运行
 
 
  1. sudo ifdown wlan0
修改interface文件
 
 
  1. sudo vim /etc/network/interfaces
内容为
 
 
  1. auto lo
  2. iface lo inet loopback
  3. iface eth0 inet dhcp
  4. allow-hotplug wlan0
  5. iface wlan0 inet static
  6. address 192.168.42.1
  7. netmask 255.255.255.0

说明192.168.42.1是给raspberry pi 做的路由器分配的网关 ip 这个不能跟局域网里其他路由网关ip重复

分配一个静态ip

 
 
  1. sudo ifconfig wlan0 192.168.42.1

4.配置Access Point  
这里需要配置一个需要密码认证的网络
 
 
  1. sudo vim /etc/hostapd/hostapd.conf
内容修改为:
 
 
  1. interface=wlan0
  2. driver=rtl871xdrv
  3. ssid=hisen
  4. hw_mode=g
  5. channel=6
  6. macaddr_acl=0
  7. auth_algs=1
  8. ignore_broadcast_ssid=0
  9.  
  10. wpa=2
  11. wpa_passphrase=raspberry
  12. wpa_key_mgmt=WPA-PSK
  13. wpa_pairwise=TKIP
  14. rsn_pairwise=CCMP

配置说明: 
interface: 那个接口作为接入点 
driver: 使用无线驱动,树莓派是rtl871xdrv,注意是187L(小写的L) 
ssid: 共享网络的SSID 
hwmode: 指定802.11协议,包括 a = IEEE 802.11a, b = IEEE 802.11b, g = IEEE 802.11g 
channel: 指定无线信道 
macaddr
acl: 指定MAC地址过滤规则,0表示除非在禁止列表否则允许,1表示除非在允许列表否则禁止,2表示使用外部RADIUS服务器; 
acceptmacfile:指定允许MAC列表文件所在; 
denymacfile:指定禁止MAC列表文件所在; 
authalgs: 指定采用哪种认证算法 1表示开放系统认证(Open System Authentication, OSA),2表示共享密钥认证(Shared Key Authentication, SKA,3则两种认证方式都支持 
ignore
broadcastssid: 是否禁止广播SSID 
wpa=2: 使用WPA2加密方式,WEP非常容易被破解不推介使用 
wpa
passphrase:WPA/WPA2加密需要指定密钥,这个选项就是配置WPA/WPA2的密钥。注意wpapassphrase要求8~63个字符。另外还可以通过配置wpapsk来制定密钥,不过要设置一个256位的16进制密钥 
wpakeymgmt: 设置客户端密钥算法验证方式。认证方式为WPA-PSK 加密方式为CCMP 
wpapairwise/rsnpairwise: 如果启用了WPA,需要指定wpapairwise;如果启用了WPA2,需要指定rsnpairwise,或者采用wpa_pairwise的设定

保存退出

 
 
  1. sudo vim /etc/default/hostapd
找到#DAEMON_CONF=""修改成
 
 
  1. DAEMON_CONF="/etc/hostapd/hostapd.conf"
保存退出 开机启动设置ip转发
 
 
  1. sudo vim /etc/sysctl.conf
底部加上一行
 
 
  1. net.ipv4.ip_forward=1
  2. sudo sh -c "echo 1 > /proc/sys/net/ipv4/ip_forward"
sysctl命令说明: 
系统引导时sysctl命令会读取sysctl.conf配置文件,所以如何需要永久改变某参数的值可在此文件下添加,格式为variable=value, 变量名是相对于/proc/sys的路径名,使用圆点(.)来代替斜线(/)。 因此配置等同于下面的命令
 
 
  1. sudo sh -c "echo 1 > /proc/sys/net/ipv4/ip_forward"
在以太网端与无线网端建立转发
 
 
  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

查看iptables是否正确

 
 
  1. sudo iptables -t nat -S
  2. sudo iptables -S

确保开机自动生效 保存iptables规则

 
 
  1. sudo sh -c "iptables-save > /etc/iptables.ipv4.nat"
  2. sudo vim /etc/network/interfaces

在底部新增一行

 
 
  1. up iptables-restore < /etc/iptables.ipv4.nat
更新hostapd,确保支持无线网卡
 
 
  1. wget http://www.adafruit.com/downloads/adafruit_hostapd.zip
  2. unzip adafruit_hostapd.zip
  3. sudo mv /usr/sbin/hostapd /usr/sbin/hostapd.ORIG
  4. sudo mv hostapd /usr/sbin
  5. sudo chmod 755 /usr/sbin/hostapd

5.测试
 
 
  1. sudo /usr/sbin/hostapd /etc/hostapd/hostapd.conf
成功的话,打开手机会发现多了一个hisen的无线,但是目前还无法链接成功的。 
6.收尾
启动服务
 
 
  1. sudo service hostapd start
  2. sudo service isc-dhcp-server start

检查ap和dhcp状态,返回successfully表示启动成功

 
 
  1. sudo service hostapd status
  2. sudo service isc-dhcp-server status

设置开机自动启动

 
 
  1. sudo update-rc.d hostapd enable
  2. sudo update-rc.d isc-dhcp-server enable

参考资料: 
《linux系统管理技术手册》 
http://en.wikipedia.org/wiki/Hostapd 
http://www.isc.org/downloads/dhcp/ 
http://www.twbsd.org/cht/book/ch18.htm 
http://learn.adafruit.com/setting-up-a-raspberry-pi-as-a-wifi-access-point

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值