树莓派变身路由器
驱动网卡
买了一个便宜的USB网卡,里面的芯片是8188eu。
下面用这个USB网卡来驱动树莓派。首先,树莓派里面没有这个网卡的ko,所以去网上下载了一个:
https://github.com/lwfinger/rtl8188eu/tree/master
再看了一下kernel 的版本:
pi@raspberrypi ~ $ uname -a Linux raspberrypi 3.12.28+ #709 PREEMPT Mon Sep 8 15:28:00 BST 2014 armv6l GNU/Linux
接下来编译解压出来的驱动文件,发现kernel header没有装。于是去下载了kernel header:
http://www.niksula.hut.fi/~mhiienka/Rpi/linux-headers-rpi/
接下来编译又出问题了,于是更新了gcc版本:
sudo apt-get -f install cpp-4.7 gcc-4.7
最后可以编译了,但是最后insmod module发现symbol layout有问题, 于是放弃了自己编译的想法,上网自己下载
了一个编译好的:
http://gordon.d4rc.net/8188eu_3.12.28.zip
加载了这个驱动之后,使用wpa_cli已经可以scan 了,dmesg也显示正常。说明驱动成功。
要注意的是,不要忘记把firmware装进去。
hostapd
下一步就是要使用hostapd了,首先要干掉系统自带的wpa_supplicant,然后用8188eu驱动包里面的
hostapd(官方的hostapd可能不会成功)
sudo killall wpa_supplicant sudo killall hostapd ./hostapd rtl_hostapd.conf
这样子就可以了成功开启AP了,其中配置文件自己要修改好,密码也要设置好。
DHCP server
要做路由器,当然要用dhcp组件了。
先安装:
sudo apt-get install isc-dhcp-server然后配置/etc/dhcp/dhcpd.conf :
添加下面几行进去吧:
subnet 192.168.0.0 netmask 255.255.255.0 { range 192.168.0.2 192.168.0.250; option subnet-mask 255.255.255.0; option domain-name-servers 8.8.8.8; option routers 192.168.0.1; }
这里就配置好了。
转发开启
这几行代码屡试不爽:
echo "1" >/proc/sys/net/ipv4/ip_forward iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE iptables -P FORWARD ACCEPT iptables -F FORWARD
完成配置
注意到,执行各个时候有顺序的,不能随便开启,这里搭配aria2c 给出来吧:
#!/bin/sh sudo killall wpa_supplicant sudo killall hostapd sudo killall aria2c sudo aria2c --conf-path=/home/pi/HDD/aria2/aria2.conf & ifconfig wlan0 192.168.0.1 netmask 255.255.255.0 echo "1" >/proc/sys/net/ipv4/ip_forward iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE iptables -P FORWARD ACCEPT iptables -F FORWARD service isc-dhcp-server restart ./hostapd rtl_hostapd.conf &
这就是一个完整的脚本了,而且可以搭配aria2c做一个下载器和路由器。
实际上这几步做完简单了,几乎和ubuntu里面的做法一样(不同的是,ubuntu里面要干掉NetworkManager)
pi@raspberrypi ~ $ uname -a Linux raspberrypi 3.12.28+ #709 PREEMPT Mon Sep 8 15:28:00 BST 2014 armv6l GNU/Linux