首页 > 代码库 > 树莓派做AP发射wifi(RTL8188CUS芯片)
树莓派做AP发射wifi(RTL8188CUS芯片)
最近在做一个项目,需要用树莓派作为AP发射wifi,对比cubieboard,树莓派的配置容易得多,而且支持也更多。
较为官方的介绍配置为无线热点的文章莫过于这一篇《RPI-Wireless-Hotspot》
按照这个设置,我的其实不成功,于是找到这篇文章《Turn Your Raspberry Pi Into a WiFi Hotspot with Edimax Nano USB EW-7811Un (RTL8188CUS chipset)》
下面是我配置的过程,主要是hostapd加桥接的方式:
1,安装hostapd
sudo apt-get install 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
接下来有两种方式搭建你的AP,一种是通过桥接的方式设置,类似交换机,另一种是路由的方式。
2,桥接的方式实现。
首先要安装桥接的软件
sudo apt-get install bridge-utils然后配置网卡:
sudo vim /etc/network/interfaces最后的配置文件如下:
auto lo iface lo inet loopback iface eth0 inet dhcp #allow-hotplug wlan0 #iface wlan0 inet manual #wpa-roam /etc/wpa_supplicant/wpa_supplicant.conf #iface default inet dhcp #bridge auto br0 iface br0 inet dhcp bridge_ports eth0 wlan0然后配置hostapd:
sudo <span style="font-family:Microsoft YaHei;">vim</span> /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然后重启树莓派,就可以测试是否成功了。
sudo reboot重启完成后,测试是否成功:
sudo hostapd /etc/hostapd/hostapd.conf应该是可以搜索到你的wifi并且正常上网的,这时候树莓派的ip地址就是你的br0的ip地址,查询使用ifconfig。
3,路由的方式实现
首先要安装DHCP软件,用来动态分配ip给你的设备。
sudo apt-get install udhcpd配置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"配置无线网卡:
修改interfaces文件,给你的无线网卡分配静态IP,无线网卡的配置如下:
allow-hotplug wlan0 iface wlan0 inet static address 192.168.42.1 netmask 255.255.255.0hostapd配置:
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启动IP转向功能以便于开通NAT:
sudo sh -c "echo 1 > /proc/sys/net/ipv4/ip_forward"编辑
/etc/sysctl.conf
改动下面这行:net.ipv4.ip_forward=1配置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将刚才配置的iptables保存下来:
sudo sh -c "iptables-save > /etc/iptables.ipv4.nat"
编辑/etc/network/interfaces
然后在最后加上下面这行以使每次启动都自动加载iptables配置:
up iptables-restore < /etc/iptables.ipv4.nat<span style="font-family:Microsoft YaHei;">重启并测试hostapd</span>
sudo reboot
sudo hostapd /etc/hostapd/hostapd.conf另外:在http://wangye.org/blog/archives/845/ 日志中,指出了一种解决DHCP不稳定的方法:有遇到的同学可以参考:
最近经常发现无线网卡配置的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" |
重启了几次进行测试,结果一切正常!
树莓派做AP发射wifi(RTL8188CUS芯片)