1. 程式人生 > >樹莓派3B製作無線wifi(AP with hostapd)

樹莓派3B製作無線wifi(AP with hostapd)

參考:https://frillip.com/using-your-raspberry-pi-3-as-a-wifi-access-point-with-hostapd/

這是一款新型的樹莓派,並且自帶wifi模組,不用大家自己另購,很是方便。

網上寫樹莓派做wifi的文件不少但參差不齊,我試的也不少,都沒有成功,不過最終還是在大家的幫助下製作出來了。這裡給大家推薦總結一下我的做法,有問題請留言。

1、最先我們要確認樹莓派與網線連好,樹莓派通過eth0的靜態IP連線網路。

接著我們要下載兩個重要的包,敲入命令 sudo apt-get  install dnsmasq hostapd 

hostapd:能使無線網絡卡工作在軟AP(Access Point)模式,即無線路由器;

dnsmasq:能夠同時提供DHCP和DNS服務;

你也可以使用isc-dhcp-server和bind9包分別服務DHCP和DNS,但我們使用dnsmasq已經足夠了。

2、在最新的樹莓派版本中,所有的網路介面預設使用dhcpd程式來進行配置,因為wlan0工作在AP模式,所以我們要手動給他靜態配置IP地址,先在配置檔案 /etc/dhcpcd.conf 中最下面新增一行去禁用 wlan0  ,否則wlan0和eth0會發生衝突。

因為eth0是uplink,連線Internet,而wlan0是downlink,供給其他裝置網路。

在命令列敲下 sudo vim /etc/dhcpcd.conf ,在文件最下面新增:

denyinterfaces wlan0

3、接下來我們在 /etc/network/interfaces 中靜態配置無線網絡卡的IP地址,sudo vim /etc/network/interfaces 進去在裡面新增如下程式碼,特別注意wlan0和eth0的靜態IP地址不在一個區域網內,否則它們兩個又會打架導致你的ssh登入失敗。

auto lo
iface lo inet loopback

auto eth0
iface eth0 inet static
address 192.168.2.20
netmask 255.255.255.0
gateway 192.168.2.1

allow-hotplug wlan0
iface wlan0 inet static
address 192.168.1.20
netmask 255.255.255.0
然後重啟dpchcd服務,sudo service dhcpcd restart 重新載入wlan0的配置,sudo ifdown wlan0 和 sudo ifup wlan0

4、好了之後,我們來配置hostapd,也就是我們wifi的資訊,sudo vim /etc/hostapd/hostapd.conf  ,完成下面配置,ssid名字和wpa_passphrase密碼可以自己更改。

# This is the name of the WiFi interface we configured above
interface=wlan0

# Use the nl80211 driver with the brcmfmac driver
driver=nl80211

# This is the name of the network
ssid=Pi3-AP

# Use the 2.4GHz band
hw_mode=g

# Use channel 6
channel=6

# Enable 802.11n
ieee80211n=1

# Enable WMM
wmm_enabled=1

# Enable 40MHz channels with 20ns guard interval
ht_capab=[HT40][SHORT-GI-20][DSSS_CCK-40]

# Accept all MAC addresses
macaddr_acl=0

# Use WPA authentication
auth_algs=1

# Require clients to know the network name
ignore_broadcast_ssid=0

# Use WPA2
wpa=2

# Use a pre-shared key
wpa_key_mgmt=WPA-PSK

# The network passphrase
wpa_passphrase=raspberry

# Use AES, instead of TKIP
rsn_pairwise=CCMP

接著我們執行,sudo /usr/sbin/hostapd /etc/hostapd/hostapd.conf 。

現在我們應該可以發現Pi3-AP了,但是我們還不能連線,因為我們還沒有開始配置dnsmaq

別急,我們需要告訴hostapd 開機的時候在哪裡尋找配置檔案, sudo vim /etc/default/hostapd ,然後找到#DAEMON_CONF="",去掉它的引號,改成DAEMON_CONF="/etc/hostapd/hostapd.conf"

5、因為dnsmasq包含大量資訊檔案,但對於我們這次的目的來說大部分是多餘的。我建議先將原來的重新命名,再建立一個新的 dnsmasq配置檔案。

sudo mv /etc/dnsmasq.conf /etc/dnsmasq.conf.orig  

sudo vim /etc/dnsmasq.conf  

再在其中新增:

interface=wlan0 # Use interface wlan0
listen-address=192.168.1.20 # Explicitly specify the address to listen on
bind-interfaces # Bind to the interface to make sure we aren't sending things elsewhere
server=8.8.8.8 # Forward DNS requests to Google DNS
domain-needed # Don't forward short names
bogus-priv # Never forward addresses in the non-routed address spaces.
dhcp-range=192.168.1.100,192.168.1.200,12h # Assign IP addresses between 192.168.2.100 and 192.168.2.200 with a 12 hour lease time  


完後我們重啟dnsmasq, sudo service dnsmasq restart 

現在我們可以連線樹莓派的wifi了,但是還是不能上網。

6、最後,我們設定ipv4的轉發。  sudo nano /etc/sysctl.conf net.ipv4.ip_forward=1 這行之前的#號去掉,然後執行

sudo sh -c "echo 1 > /proc/sys/net/ipv4/ip_forward" 開啟IP轉發功能。

接著開啟樹莓派有線網絡卡和無線網絡卡的轉發功能:

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

這時候電腦或手機就可以連上wifi了,但上述命令都是手動操作,下次開機之後樹莓派並不會執行,所以我們要儲存一下規則便於我們每次開機就自動開啟。

執行sudo sh -c "iptables-save > /etc/iptables.ipv4.nat" ,然後再 sudo vim /etc/rc.local  ,在裡面的exit0之前新增:

sh -c "echo 1 > /proc/sys/net/ipv4/ip_forward"
iptables-restore < /etc/iptables.ipv4.nat
exit 0

我們重啟hostapd和dnsmasq服務

sudo service hostapd start

sudo service dnsmasq start

這下我們就終於可以連線樹莓派的wifi上網了,最後我們sudo reboot繼續連線我們的wifi吧。

如果製作有什麼問題或者我的部落格有其他錯誤的話,請在下方評論吧!