原理: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
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