最近又開始折騰起Raspberry Pi來了,由於某處上網須要銳捷撥號,因而我就想能不能讓個人樹莓派代勞,固然首先要將其改造爲路由器,默認自帶的網口做爲WAN口,咱們還缺一個網口,木有辦法,只好佔用一個USB口,接上一個USB網卡,網上的USB轉RJ45網線口的適配器比較少,價格也不便宜,因而就考慮乾脆將其改形成無線路由,也符合時下高端大氣上檔次的標準。less
準備工做,固然要先去購買一個USB無線網卡,能夠購買的型號比較多,Raspberry Pi官方也提供了兼容性列表供你們參考,具體猛擊這裏。我這裏購買的是網件(Netgear)WNA1000M 150M迷你USB無線網卡。oop
較爲官方的介紹配置爲無線熱點的文章莫過於這一篇《RPI-Wireless-Hotspot》。可是實際配置下來始終沒法成功。可是無線網卡確實可以被識別,能夠經過lsusb和lsmod查看到,不過我注意到這款無線的芯片型號是RealTek RTL8188CUS,初步懷疑是驅動問題。測試
lsusb WiFi Adapterrest
固然看到別人的老款無線網卡都配置成功了內心不免癢癢的,固然也不能再浪費銀子去再買個網卡,因而只好本身摸索,不過天無絕人之路,在N次刷機重裝系統後,終於找到了成功的辦法,其實關鍵的文章就在上面那篇文章的一個連接中《Turn Your Raspberry Pi Into a WiFi Hotspot with Edimax Nano USB EW-7811Un (RTL8188CUS chipset)》。router
好了,下面我將實踐的過程記錄下來供你們參考,固然主要參考了上面兩篇文章,這裏是配置的回憶,我儘可能記錄詳細,遺漏之處望指出。server
1. 安裝系統(若是系統已經安裝能夠跳過這一步)dns
1.1 儘可能使用最新系統,首先下載官方最新鏡像,而後使用Win32DiskImager燒錄到SD卡上。注意這裏咱們選用的是Raspbian。ip
1.2 Raspberry Pi鏈接上無線網卡,而後系統鏡像刷入SD卡後,咱們鏈接顯示器鍵盤和鼠標進行初始化配置工做,固然沒有條件的話推薦直接使用SSH鏈接Raspberry Pi,這樣更方便,由於新系統默認開放了SSH管理。路由
Raspbian downloadrem
鏈接信息主要以下:
主機名 : raspberrypi
用戶名 : pi
密 碼 : raspberry
若是你是直接經過SSH鏈接到Raspberry Pi的話,下面的配置步驟是必要的:
1.2.1 初始化配置,下面的配置只有在新安裝的系統內須要,僅作一次。
運行下面的命令,進入配置界面:
sudo raspi-config
Raspberry ConfigurationInternationalisation Options
推薦更新下面的配置選項(新配置界面):
1 Expand Filesystem
2 Change User Password
4 Internationalisation Options
I1 Change Locale
I2 Change Timezone
8 Advanced Options
A3 Memory Split
A6 Update
(舊配置界面)
update
expand_rootfs
change_pass
change_timezone
memory_split
這裏要注意Memory Split/memory_split,默認預留給圖形界面的是64MB,做爲一臺無線路由基本上就用不到圖形界面了,很顯然64MB略有奢侈,咱們將其改爲32MB。
最後Finish完成初始化配置。系統會自動提示重啓,若是沒有按預期重啓,請使用下面的命令重啓系統:
sudo shutdown -r now
2. 安裝hotspot(hostapd)
sudo apt-get install bridge-utils 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
接下來提供兩種方案,一種是橋接方式設置熱點,有點相似交換機工做原理,將網線口的信號轉換爲無線,另一種則是路由方式實現無線上網,和大部分路由器工做方式同樣。
3. 橋接的方式設置WiFi熱點(方案一)
3.1 安裝必備程序
sudo apt-get install bridge-utils
3.2 配置網卡
編輯網卡配置文件:
sudo nano /etc/network/interfaces
註釋掉全部的關於無線網卡的部分,最後應該變成下面所示:
#allow-hotplug wlan0
#wpa-roam /etc/wpa_supplicant/wpa_supplicant.conf
#iface default inet dhcp
加上下面這段橋接配置:
auto br0
iface br0 inet dhcp
bridge_ports eth0 wlan0
最終的配置主要由如下幾個部分組成:
#loopback adapter
auto lo
iface lo inet loopback
#wired adapter
iface eth0 inet dhcp
#bridge
auto br0
iface br0 inet dhcp
bridge_ports eth0 wlan0
3.3 配置hostapd
sudo nano /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
配置文件具體我就不說了,想必你們看內容也知道各項的含義,保存這個配置文件。
3.4 重啓並測試hostapd
sudo reboot
重啓完成後,使用下面的命令測試是否正確:
sudo hostapd -dd /etc/hostapd/hostapd.conf
若是沒有錯誤的話,你這時應該能搜索到你所配置的無線信號。而後Ctrl+C退出這個測試。
若是一切正常的話,咱們能夠設置hostapd的配置文件路徑了。
sudo nano /etc/default/hostapd
去掉註釋符號並改動下面這行爲咱們的配置文件路徑:
DAEMON_CONF="/etc/hostapd/hostapd.conf"
橋接方式配置完成!
4. 路由的方式設置WiFi熱點(方案二)
4.1 安裝必備程序
sudo apt-get install udhcpd
udhcpd主要爲鏈接到WiFi的設備自動分配IP地址的,固然你也能夠換用你所熟悉的軟件。
4.2 配置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"
4.3 配置無線網卡
經過下面的命令給無線網卡設置一個IP地址:
sudo ifconfig wlan0 192.168.42.1
固然爲了下次啓動仍然有效,咱們須要配置/etc/network/interfaces文件:
sudo nano /etc/network/interfaces
註釋掉全部的關於無線網卡的部分,最後應該變成下面所示:
#wpa-roam /etc/wpa_supplicant/wpa_supplicant.conf
#iface default inet dhcp
注意保留allow-hotplug wlan0,英文原文是不保留的,可是我操做下來發現若是不保留這段的話,無線網卡有時沒法正常配置IP,最後無線網卡IP的配置信息以下:
allow-hotplug wlan0
iface wlan0 inet static
address 192.168.42.1
netmask 255.255.255.0
4.4 編輯hostapd配置
sudo nano /etc/hostapd/hostapd.conf
內容以下:
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
4.7 啓動IP轉向功能以便於開通NAT
sudo sh -c "echo 1 > /proc/sys/net/ipv4/ip_forward"
編輯/etc/sysctl.conf改動下面這行:
net.ipv4.ip_forward=1
4.8 配置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
到這裏路由的NAT功能已經被啓用,咱們將剛纔配置的iptables保存下來以便於下次使用:
sudo sh -c "iptables-save > /etc/iptables.ipv4.nat"
編輯/etc/network/interfaces而後在最後加上下面這行以使每次啓動都自動加載iptables配置:
up iptables-restore < /etc/iptables.ipv4.nat
4.9 重啓並測試hostapd
sudo reboot
重啓完成後,使用下面的命令測試是否正確:
sudo hostapd -dd /etc/hostapd/hostapd.conf
若是沒有錯誤的話,你這時應該能搜索到你所配置的無線信號。而後Ctrl+C退出這個測試。
若是一切正常的話,咱們能夠設置hostapd的配置文件路徑了。
sudo nano /etc/default/hostapd
去掉註釋符號並改動下面這行爲咱們的配置文件路徑:
DAEMON_CONF="/etc/hostapd/hostapd.conf"
4.10 啓動相應軟件,並加入啓動項
sudo service hostapd start
sudo service udhcpd start
sudo update-rc.d hostapd enable
sudo update-rc.d udhcpd enable