本文参考自,Source: http://elinux.org/RPI-Wireless-Hotspot前端
由于本身有个RPi,可是以前用的8188CUS芯片的无线网卡不支持,虽然当时买的时候是为了让笔记本连双WiFi的,所以只挑了个最便宜的。后来发现无法在RPi上面作AP,因而就又从新买了个。国内也有树梅派的论坛讨论过哪些无线网卡的支持,发现Ralink的芯片能够,所以就再花了34块钱买了个腾达的W331M,使用最新的Raspbian内核来进行操做(非最新的话可能须要本身编译驱动)。linux
如下是结合上面的参考连接给出的如何将RPi搭建为一个路由器:网络
首先是必备材料:less
而后是必备技能:编辑器
感谢原文给出的驱动提示,这里也抄一下。请确认无线网卡支持AP模式或者Master模式,已知下列网卡的具体状况:加密
想看你使用的是那种芯片?用lsusb吧!(省略了部分输出)spa
pi@raspberrypi ~ $ lsusb ... Bus 001 Device 007: ID 148f:5370 Ralink Technology, Corp. RT5370 Wireless Adapter
呼……一大波前提说完了,下面要干正事了!.net
先说一下大概步骤:rest
正文开始了:code
sudo apt-get install hostapd udhcpd
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 当中的这一行 DHCPD_ENABLED="no" 变为
#DHCPD_ENABLED="no"
固然,你须要给无线网卡指定一个地址(静态地址,不会变的),为了达到开机启动就设置好的目的,你须要编辑/etc/network/interfaces:
iface wlan0 inet static address 192.168.42.1 netmask 255.255.255.0
若是原来有“iface wlan0 inet dhcp”之类的那么就删除,“wpa-roam /etc/wpa_supplicant/wpa_supplicant.conf”什么的也删除。
interface=wlan0 driver=nl80211 ssid=Daochen_AP hw_mode=g channel=6 macaddr_acl=0 auth_algs=3 ignore_broadcast_ssid=0 wpa=2 wpa_passphrase=DaochenShi wpa_key_mgmt=WPA-PSK wpa_pairwise=TKIP rsn_pairwise=CCMP
wpa_passphrase <ssid> [明文密码]
pi@raspberrypi ~ $ wpa_passphrase Daochen_AP DaochenShi network={ ssid="Daochen_AP" #psk="DaochenShi" psk=0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef
}
也就是你把wpa_passphrase去掉,换为wpa_psk=0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef便可
若是你想使用开放网络(不含密码),那么就这样配置:interface=wlan0 ssid=Daochen_AP hw_mode=g channel=6 auth_algs=1 wmm_enabled=0
以后还要接着编辑 /etc/default/hostapd
把原来的DAEMON_CONF="/etc/hostapd/hostapd.conf" 变为:DAEMON_CONF="/etc/hostapd/hostapd.conf"
首先编辑/etc/sysctl.conf文件,主要是打开ipv4的转发功能。
net.ipv4.ip_forward=1
那么这就在内核当中开启了ipv4的转发,以后须要设置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
为了之后重启以后能够自动加载,所以运行命令来保存为一个文件:
sudo sh -c "iptables-save > /etc/iptables.ipv4.nat"
up iptables-restore < /etc/iptables.ipv4.nat
运行一下命令:
sudo service hostapd start sudo service udhcpd start
若是你想开机启动的话,那么就这么作:
sudo update-rc.d hostapd enable sudo update-rc.d udhcpd enable
固然,最开始用8188CUS的时候参考的是 http://sirlagz.net/2012/08/09/how-to-use-the-raspberry-pi-as-a-wireless-access-pointrouter-part-1/
可是从hostapd那一步以后就失败了,因此我实际上在此次设置无线网络的时候不少地方都不须要怎么操做了。这个连接的是有三部分组成,有兴趣的也能够看一下。
我本身遇到了安装好udhcpd以后死活启动不了,报错是:
udhcpd: is interface wlan0 up and configured?: Cannot assign requested address
并且sudo ifup wlan0的时候报错,不过它指出来了错误地点:
pi@raspberrypi /etc/hostapd $ sudo ifup wlan0 ip6tables-restore v1.4.14: Couldn't load match `icmp':No such file or directory Error occurred at line: 17 Try `ip6tables-restore -h' or 'ip6tables-restore --help' for more information. Failed to bring up wlan0.
由于我也设置了ip6tables,而wlan0目前没有设置ipv6,因此就出错了,解决方法也很简单,把错的那一行删了就能够了。若是你也以为udhcpd启动不了,可使用
sudo udhcpd -f
来进行前端显示。
最后,接下来须要作的是:将eth0的ipv6经过相似brouter之类的东西使得无线网也有ipv6. 查过说有ebtables能够,可是具体怎么弄我一直没搞明白过(这个问题1年前就在关注了,可是没作,太懒了……