天天看點

用樹莓派做無線路由器

原理:Pi使用有線連入網絡,然後接USB無線網卡作為熱點,提供Wifi接入。

1、有線網絡,如果是自動擷取IP的,直接接上網線即可。

2、關于USB無線網卡驅動問題。

如果接上USB無線網卡,使用ifconfig指令,能直接看到wlan0,那麼恭喜你,可以直接跳過這一步。

官方推薦的無線網卡是TL-WN725N,我上淘寶買了,很不幸,買到的是2.0版的。而官方的驅動隻支援1.0,好在有愛好者做了第三方驅動。

如果你淘寶上買到的也是2.0版的,看我的這篇文章安裝驅動TL-WN725N v2.0 Driver for Raspberry Pi

3、修改wlan0為靜态IP

sudo vim /etc/network/interfaces      

把原來關于wlan0的注釋掉:

#allow-hotplug wlan0 
#iface wlan0 inet manual 
#wpa-roam /etc/wpa_supplicant/wpa_supplicant.conf 
#iface default inet dhcp      

添加下面的:

iface wlan0 inet static 
address 192.168.10.1 
netmask 255.255.255.0      

4、安裝hostapd

sudo apt-get install hostapd      

編輯hostapd 預設配置檔案

sudo vim /etc/default/hostapd      

找到#DAEMON_CONF= "",修改為:

DAEMON_CONF="/etc/hostapd/hostapd.conf"      

然後編輯:

sudo vim /etc/hostapd/hostapd.conf      

添加

# 把無線網卡wlan0 作為接入點 
interface=wlan0 
# 使用nl80211驅動 
driver=nl80211 
#共享網絡的SSID是RaspberryPi 
ssid=RaspberryPi 
# 網卡工作在802.11G模式 
hw_mode=g 
#無線網卡選用11信道 
channel=11 
# WPA2 配置 
wpa=2 
#wpa密碼是raspberry 
wpa_passphrase=raspberry 
#認證方式為WPA-PSK 加密方式為CCMP 
wpa_key_mgmt=WPA-PSK 
wpa_pairwise=CCMP 
rsn_pairwise=CCMP 
beacon_int=100 
auth_algs=3 
wmm_enabled=1      

儲存退出,然後重新開機服務:

sudo service hostapd restart      

如果你使用的也是TL-WN725N v2.0,那麼,很顯然,你這一步不會成功的。

出現的應該是這樣的錯誤:

$ sudo hostapd /etc/hostapd/hostapd.conf 
Configuration file: /etc/hostapd/hostapd.conf 
nl80211: 'nl80211' generic netlink not found 
Failed to initialize driver 'nl80211' 
rmdir[ctrl_interface]: No such file or directory      

不是說了麼,官方的是支援1.0版的,不支援2.0的。那麼,還是要使用第三方的hostapd。

首先,要删除原來的hostapd

sudo apt-get autoremove hostapd      

再下載下傳第三方驅動并安裝

wget https://github.com/jenssegers/RTL8188-hostapd/archive/v1.1.tar.gz 
tar -zxvf v1.1.tar.gz 
cd RTL8188-hostapd-1.1/hostapd 
sudo make 
sudo make install      

然後再重新開機服務,應該提示成功:

$ sudo service hostapd restart 
[ ok ] Stopping advanced IEEE 802.11 management: hostapd. 
[ ok ] Starting advanced IEEE 802.11 management: hostapd.      

5、安裝DHCP服務

sudo apt-get install isc-dhcp-server      

備份配置檔案

sudo mv /etc/dhcp/dhcpd.conf /etc/dhcp/dhcpd.conf.bak      

編輯配置檔案:

sudo vim /etc/dhcp/dhcpd.conf      

複制粘貼如下内容:

default-lease-time 600; 
max-lease-time 7200; 
log-facility local7; 

subnet 192.168.10.0 netmask 255.255.255.0 { 
range 192.168.10.10 192.168.10.100; 
option routers 192.168.10.1; 
option broadcast-address 192.168.10.127; 
option domain-name-servers 8.8.8.8,8.8.4.4; 
default-lease-time 600; 
max-lease-time 7200; 
}      
sudo service isc-dhcp-server restart      

6、配置路由轉發

sudo iptables -F 
sudo iptables -X 
sudo iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE 
sudo bash 
iptables-save > /etc/iptables.up.rules 
exit      

編輯:

sudo vim /etc/network/if-pre-up.d/iptables      

添加下面兩行代碼:

#!/bin/bash 
/sbin/iptables-restore < /etc/iptables.up.rules      

儲存退出,然後修改iptables權限:

sudo chmod 755 /etc/network/if-pre-up.d/iptables      

開戶核心轉發:

sudo vim /etc/sysctl.conf      

找到下面兩行:

# Uncomment the next line to enable packet forwarding for IPv4 
#net.ipv4.ip_forward=1      

把net.ipv4.ip_forward 前面的#去掉,儲存退出。

然後

sudo sysctl -p      

7、服務自啟動

到第6步,如果沒什麼問題,用手機接Wifi,應該可以上網了。但是如果Pi斷電了,hostapd和dhcp服務還是要手動來啟動。這樣比較麻煩,是以我們要添加這兩個服務的自啟動,以便Pi斷電再上電後,wifi能自動連上。

$ sudo chkconfig --add hostapd 
$ sudo chkconfig --add isc-dhcp-server      

繼續閱讀