树莓派和Ubuntu12.04配置无线连接与无线AP热点

转载自:http://laoniangke.com/pi/2013/06/29/pi-wifi-ap.html

下面是一个英文帖子,应该是原帖,推荐看原帖:

https://learn.adafruit.com/setting-up-a-raspberry-pi-as-a-wifi-access-point/install-software


说明:

我在转载的同时,补充了一丁点内容,为的是方便需要的朋友使用,希望原帖的作者不要介意。

转载这篇文章本来是因为要为rapberry pi配置ap,使用了本文的配置方法,配置成功。

后来由于需要,要在Ubuntu上配置ap,于是也使用了本文的方法,做了一点改动,也配置成功。

在后面的配置过程中,raspberry pi上的配置和Ubuntu上的配置不一样的地方,仅两处,我会注明,使用时请注意。 

在Ubuntu14.04上配置一直不成功,以后有时间会再尝试,若成功了会贴出来。

hostapd的相关信息,可以参考:https://wireless.wiki.kernel.org/en/users/documentation/hostapd

在Ubuntu上配置的时候,如果需要自己编译hostapd,可以参考:http://blog.csdn.net/hnllc2012/article/details/49151137


系统环境:Ubuntu12.04 Desktop

测试网卡:nimitz NT_WU150M、bl-lw06-ar1、tl-wn821n


系统环境:Raspberry Pi

测试网卡:bl-lw06-ar1、tl-wn821n


Raspberrp Pi配置WiFi部分:

之前使用过将笔记本电脑的无线网卡设置成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地址了,表示链接成功。 
到此无线的配置使用结束


在进行AP的配置之前,可以先查看网卡是否支持AP模式(Ubuntu适用)

运行命令:Iw list

找到“Supported interface modes: “,查看是否有AP,若有AP,则支持AP模式;若没有,则不支持AP模式(只能换网卡了)。


接下来部分为Raspberry Pi和Ubuntu12.04 AP配置部分:

接下来讲如何将树莓派配置成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

内容修改为:

interface=wlan0
driver=rtl871xdrv(Ubuntu:driver=nl80211)
ssid=hisen
hw_mode=g
channel=6
macaddr_acl=0
auth_algs=1
ignore_broadcast_ssid=0

wpa=2
wpa_passphrase=raspberry
wpa_key_mgmt=WPA-PSK
wpa_pairwise=TKIP
rsn_pairwise=CCMP




注意:每行配置信息间不要有空格,否则可能会在开启hostapd服务的时候提示配置文件中有非法字符


配置说明: 
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,确保支持无线网卡(Ubuntu12.04上的配置不需要这一步)

  1. wget http://www.adafruit.com/downloads/adafruit_hostapd.zip (如果不能下载的话,可以到这儿自己下载:http://w1.fi/hostapd/)
  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


以上设置完成后,树莓派已经可以作为AP使用了,手机可以正常连接到树莓派。但是不能正常上网。

还需要如下设置(根据自己的实际情况修改以下配置内容):


设置静态IP地址、DNS


sudo nano /etc/network/interfaces

如果配置信息中含有“iface etho inet dhcp",将这部分注释掉。

添加如下内容:

iface eth0 inet static
address 192.168.2.123
netmask 255.255.255.0
gateway 192.168.2.1

dns-nameservers 114.114.114.114  8.8.8.8




参考资料: 
《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

你可能感兴趣的:(树莓派,Linux,Raspberry,Pi,AP,WIFI,热点,Ubuntu)