使用 Raspberry Pi 架設自己的 AP

  • 18660
  • 0

工作上會使用樹梅派在一個獨立區網內作為主機,在行動裝置透過 WiFi 連線到同個區網內後,進一步提供行動裝置所需的服務。不過為了達成這個目的都還要而外配一台 AP,最近同事突然突發奇想把樹梅派同時當作主機及 AP,這樣以後就可以不用再多配一台 AP,以下將同事提供的方法與我自行搜尋到的方式做一個整理記錄下來。

手動設定

如果喜歡快速簡便又有 UI 設定畫面的,請直接往下看套件設定。
請先將樹梅派連接實體乙太網路,不要透過 WiFi 連接網路。

套件更新

將目前已經安裝的套件都先更新到最新。

sudo apt update

sudo apt upgrade

安裝相關套件

sudo apt install hostapd dnsmasq -y

停用無線網卡 DHCP

由於樹莓派預設會把所有網路介面都設為 DHCP,為了我們後續設定要把無線網卡停用 DHCP 並設定為固定 IP,使用下方指令來編輯 DHCP 的設定。

sudo nano /etc/dhcpcd.conf

使用後會開啟 /etc/dhcpcd.conf 檔案,移到最下面並加入以下內容。
樹莓派預設無線網卡是掛在 wlan0,如果有外加請記得修改。
後續範例會使用 192.168.7.0/24 的網段,這是樹莓派架設成 AP 後所提供的區網的網段,可以自行定義想要的網段。
輸入完成後,按下 Ctrl + X,再按下 Y,最後按下 Enter 即可存檔離開。

interface wlan0
static ip_address=192.168.7.1/24
static routers=192.168.7.1
static domain_name_servers=8.8.8.8

設定 WiFi 訊息

接下來要編輯我們以後 AP 所提供的 WiFi 的訊息,使用下方指令來進行編輯。

sudo nano /etc/hostapd/hostapd.conf

使用上方指令後,會開啟一個空白檔案,直接輸入下方的內容。
interface 如果有外加網卡請記得修改。
ssid 是 WiFi 的名稱,可自行修改。
wpa_passphrase 是 WiFi 的密碼,可自行修改。
輸入完成後,按下 Ctrl + X,再按下 Y,最後按下 Enter 即可存檔離開。

interface=wlan0
driver=nl80211
ssid=rp-ap
hw_mode=g
channel=7
ieee80211n=1
wmm_enabled=0
macaddr_acl=0
auth_algs=1
ignore_broadcast_ssid=0
wpa=2
wpa_passphrase=password
rsn_pairwise=CCMP

設定完成後,還需要告訴樹莓派開機要去哪裡讀取我們的設定,所以要使用以下指令進行設定。

sudo nano /etc/default/hostapd

使用上方指令後會開啟 /etc/default/hostapd 檔案,此時找到 #DAEMON_CONF="" 將改行修改成以下內容。
修改完成後,按下 Ctrl + X,再按下 Y,最後按下 Enter 即可存檔離開。

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

設定 WiFi DHCP 訊息

接著使用下方指令來設定我們 AP 的 DHCP 訊息。

sudo nano /etc/dnsmasq.conf

使用上方指令後會開啟 /etc/dnsmasq.conf 檔案,其內容相當多,直接移動到最下面,空一行後輸入以下內容。
interface 一樣如果有外加網卡記得修改。
dhcp-range 是設定往後透過 AP 連線進來的設備可使用的 IP 範圍,記得跟之前設定為相同網段,另外不要包含有前面設定的固定 IP,因為那是我們 AP 本身的 IP,最後面有個 24h 是代表這個 IP 可以使用多久,多久後需要重新取得。
輸入完成後,按下 Ctrl + X,再按下 Y,最後按下 Enter 即可存檔離開。

interface=wlan0
domain-needed
bogus-priv
dhcp-range=192.168.7.2,192.168.7.253,24h

設定 IP 轉發

只完成上面步驟的話,我們的 AP 只能夠進行區網連線,無法透過樹莓派連線到網際網路,所以要使用下列指令進行設定。

sudo nano /etc/sysctl.conf

使用上述指令後,會開啟 /etc/sysctl.conf 檔案,請將 #net.ipv4.ip_forward=1 替換為下方內容。
替換完成後,按下 Ctrl + X,再按下 Y,最後按下 Enter 即可存檔離開。

net.ipv4.ip_forward=1

接著依序輸入下列指令,完成 IP 轉發。
一樣如果有外加無線網卡記得修改 wlan0。
若是還有外加有線網卡記得修改 eth0。

sudo sh -c "echo 1 > /proc/sys/net/ipv4/ip_forward"

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

輸入完上方指令後,我們要儲存起來並讓樹莓派在每次開機自動執行,所以請依序輸入下列指令。

sudo sh -c "iptables-save > /etc/iptables.ipv4.nat"

sudo nano /etc/rc.local

依序輸入完上方指令後,會開啟 /etc/rc.local 檔案,往下找到 exit 0,並在該行的上方輸入下列內容。
輸入完成後,按下 Ctrl + X,再按下 Y,最後按下 Enter 即可存檔離開。

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

大功告成

完成上面所有設定後,請輸入下列指令重新開機,即可使用樹莓派當 AP。

sudo reboot

參考資料


套件設定

上面手動設定比較繁瑣,這邊使用 RaspAP 這個套件快速幫我們架設一個 AP,它不但架設方法簡單快速,同時還有 UI 介面可以進行設定調整,在使用操作上簡便不少。

套件安裝

使用下列指令下載套件並進行安裝。

wget -q https://git.io/voEUQ -O /tmp/raspap && bash /tmp/raspap

過程中會詢問一些設定事項,依照個人需求選擇,之後重開機即可完成。
完成後的預設 AP 資訊如下:

  • 樹莓派無線網卡 IP (管理介面網址):10.3.141.1
    • 使用者名稱:admin
    • 使用者密碼:secret
  • DHCP 範圍:10.3.141.50 到 10.3.141.255
  • WiFi 名稱 (SSID):raspi-webgui
  • WiFi 密碼:ChangeMe

如果有要更改無線網卡 IP 及 DHCP 範圍,記得更改後要儲存再重新啟動樹莓派,詳細設定畫面等有空的話再補上了。

參考資料