https://frillip.com/using-your-raspberry-pi-3-as-a-wifi-access-point-with-hostapd/
聲明:本文僅供交流使用,版權(quán)歸原文作者所有!
本文系嵌入式Linux中文站志愿者千年人魚翻譯投遞,感謝志愿者們的辛勤付出,希望更多的朋友加入嵌入式Linux中文站志愿者團(tuán)隊。
?
這是一個新的樹莓派,太令人驚喜了。它還板載WIFI,這是雙重驚喜?。∥业牡谝粋€想法是,我能用它來當(dāng)做softAP嗎?這個想法出現(xiàn)時,他也沒那么難,因為BCM43438芯片是有開源的brcmfmac驅(qū)動的。
資源包
首先第一步我們要去安裝兩個資源包:dnsmasq、hostapd;運(yùn)行命令:sudo apt-get install dnsmasq、hostapd;這兩個包的作用是:
·?????????Hostapd?-?這個包允許樹莓派3板載的WIFI作為一個接入點(diǎn)(AP)
·?????????Dnsmasq?-?這個能夠使DHCP和DNS服務(wù)配置變得更加容易
如果你需要更多一點(diǎn)的功能的話,你可以使用isc-dhcp-server和bind9資源包分別對DHCP和DNS進(jìn)行配置,但是對于我們現(xiàn)在的需求,dnsmasq已經(jīng)足夠了。
配置網(wǎng)卡
首先你要給你的wlan0網(wǎng)卡設(shè)置一個靜態(tài)的IP。在最新的樹莓派版本,網(wǎng)卡已經(jīng)默認(rèn)的被dhcpcd處理。我們可以先不管他,因為我們將要為它分配一個靜態(tài)的IP?,F(xiàn)在請你打開dhcpcd配置文件:sudo vim /etc/dhcpcd.conf并在文件的最后一行添加以下內(nèi)容
denyinterfaces wlan0?
Note: This must be ABOVE any?interface?lines you may have added!
現(xiàn)在我們需要配置我們的靜態(tài)IP。請打開接口的配置文件:sudo vim /etc/network/interfaces并編輯wlan0部分內(nèi)容,他看起來像這樣:
allow-hotplug wlan0?
iface wlan0 inet static?
????address 172.24.1.1
????netmask 255.255.255.0
????network 172.24.1.0
????broadcast 172.24.1.255
#????wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf
然后sudo service dhcpcd restart重啟dhcpcd服務(wù),sudo ifdown wlan0; sudo ifup wlan0重啟網(wǎng)卡
配置HOSTAPD
接下來,我們需要去配置hostapd了。創(chuàng)建一個新的配置文件vim /etc/hostapd/hostapd.conf,然后加入以下內(nèi)容:
# 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
到這里我們需要確認(rèn)一下hostapd是否能夠工作了,執(zhí)行sudo /usr/sbin/hostapd和/etc/hostapd/hostapd.conf.如果一切還順利的話,你應(yīng)該能夠看到名為Pi3-AP的WiFi網(wǎng)絡(luò)了。如果你這時候試圖連接他,你會看到有一些東西會噴在你的PI上,但是你是獲取不到IP地址的,你還需要在下一步設(shè)置一下dnsmasq文件。Ctrl+C把它關(guān)掉吧。
我們還沒有完成,因為我們需要告訴hostapd當(dāng)他啟動的時候應(yīng)該去哪里找配置文件。打開默認(rèn)的配置文件vim?/etc/default/hostapd并找到#DAEMON_CONF=""將他替換成這DAEMON_CONF="/etc/hostapd/hostapd.conf"
配置DNSMASQ
原始的dnsmasq配置文件包含了一些很豐富的信息,但是對于我們來說太多了,我們用不著。建議將他移除(注意:不是刪除),我們創(chuàng)建一個新的替代它。
?
sudo mv /etc/dnsmasq.conf /etc/dnsmasq.conf.orig?
sudo nano /etc/dnsmasq.conf?
復(fù)制粘貼下面的內(nèi)容進(jìn)新的文件:
interface=wlan0??????# Use interface wlan0?
listen-address=172.24.1.1 # 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=172.24.1.50,172.24.1.150,12h # Assign IP addresses between 172.24.1.50 and 172.24.1.150 with a 12 hour lease time?
設(shè)置IPV4的轉(zhuǎn)發(fā)
在我們成功的轉(zhuǎn)發(fā)我們的包之前,還需要做最后一件事。打開sysctl.conf文件vim /etc/sysctl.conf并移除這個#?from the beginning of the line containing?net.ipv4.ip_forward=1.這將會在下次重啟時生效,如果你沒有耐心,可以這樣讓他立即活動:sudo sh -c "echo 1 > /proc/sys/net/ipv4/ip_forward"
我們需要將PI的WIFI連接分享出去,通過配置NAT在wlan0和eth0之間。使用下面命令實現(xiàn)。
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?
然而,我們需要這些規(guī)則去應(yīng)用于我的Pi在每次重啟機(jī)器的時候,所以runsudo sh -c "iptables-save > /etc/iptables.ipv4.nat"去保存這些規(guī)則在/etc/iptables.ipv4.nat文件中?,F(xiàn)在我們需要每次重啟機(jī)器時都要去啟用這些規(guī)則,所以還需要配置這個文件vim??/etc/rc.local在這個文件的exit 0這行的上面加入下面的內(nèi)容:
iptables-restore < /etc/iptables.ipv4.nat?
差不多成功了!
現(xiàn)在我們只需要去重啟一下我們的服務(wù)就好了:
sudo service hostapd start?
sudo service dnsmasq start?
就是他了!你應(yīng)該可以通過你的PI的WIFi連接到Internet了吧!
再次重啟確認(rèn)我們的配置是不是正確的!
EDIT:?Thanks to Justin for helping iron out some of the errors in this post!
EDIT2:?Thanks to Ashok for several performance related enhancements!
EDIT3:?Thanks to Lasse for some amendments to the dnsmasq configuration!
EDIT4:?Fixed race condition between dhcpcd and dnsmasq, wlan0 is no longer configured by dhcpcd.
PHIL MARTIN
評論
查看更多