本文參考自,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年前就在關注了,可是沒作,太懶了……