Raspberry Pi 無線基地台 AP 與 IP 分享器 for Arch Linux ARM

本文將詳細說明如何使用 Raspberry Pi 基於 Arch Linux ARM 系統來建置無線基地台 AP 與 IP 分享器。完成 AP 功能後,任何裝置即可透過這種方式來無線操控 Raspberry Pi,進而延伸無限的可能。

raspberry-pi

使用 pacman -S 指令安裝套件發生失敗或錯誤時,請先執行 pacman -Sy 更新套件列表資料

無線基地台 AP

查看 USB 設備資訊。

[root@alarmpi ~]# lsusb
# 小傑所使用的無線線卡
Bus 001 Device 004: ID 0586:341e ZyXEL Communications Corp. NWD2105 802.11bgn Wireless Adapter [Ralink RT3070]
Bus 001 Device 003: ID 0424:ec00 Standard Microsystems Corp. SMSC9512/9514 Fast Ethernet Adapter
Bus 001 Device 002: ID 0424:9514 Standard Microsystems Corp. SMC9514 Hub
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

查看無線網卡支援哪些模式,有包含 AP(Access Point)才表示有支援無線基地台模式。

[root@alarmpi ~]# iw list
# ... 以上省略
Supported interface modes:
                 * IBSS
                 * managed
                 * AP
                 * AP/VLAN
                 * WDS
                 * monitor
                 * mesh point
# ... 以下省略

安裝 AP 軟體。

[root@alarmpi ~]# pacman –S hostapd

複製 hostapd 的 AP 範本。

[root@alarmpi ~]# cp /usr/share/doc/hostapd/hostapd.conf /etc/hostapd/

設定。

[root@alarmpi ~]# vim /etc/hostapd/hostapd.conf

# 無線網卡名稱(須同裝置名稱)
interface=wlan0
# 設定 AP SSID(Service set ID,服務設定識別碼)
ssid=RPi-AP
# AP 連線密碼,加密方式使用 WPA-PSK,密碼長度必須介於 8 ~ 63 個字元
wpa_passphrase=P@ssword
# 啟用加密
wpa=1
# 加密方式
wpa_key_mgmt=WPA-PSK WPA-EAP
wpa_pairwise=TKIP CCMP
rsn_pairwise=CCMP

啟用軟體並設定開機自動啟用。

[root@alarmpi ~]# systemctl start hostapd
[root@alarmpi ~]# systemctl enable hostapd

設定 AP 的 IP 位址。

[root@alarmpi ~]# vim /etc/systemd/network/wireless.network

[Match]
Name=wlan0

[Network]
Address=192.168.1.1/24

重啟網路。

[root@alarmpi ~]# systemctl restart systemd-networkd

DHCP Server

讓 AP 能夠自動派發 IP,必須使用 DHCP Server 的功能。

安裝 DHCP Server 軟體。

[root@alarmpi ~]# pacman -S dnsmasq

設定。

[root@alarmpi ~]# vim /etc/dnsmasq.conf

# 無線網卡名稱(須同裝置名稱)
interface=wlan0
# 綁定介面
bind-interfaces
# 無線網卡 IP,須與 /etc/systemd/network/wireless.network 的 Address 設定一樣 IP
isten-address=192.168.1.1
# DHCP 自動派發 IP 的範圍,與租用時間
dhcp-range=192.168.1.50,192.168.1.150,12h

啟用軟體並設定開機自動啟用。

[root@alarmpi ~]# systemctl start dnsmasq
[root@alarmpi ~]# systemctl enable dnsmasq

封包轉發 Router 與 NAT

連結無線網路卡後,在透過有線網路卡來達到上網功能,必須使用封包轉發 Router(路由器)與 NAT(Network Address Translation,網路地址轉換)的功能。

接下來的設定,系統重啟都會清除,因此必須寫一個 Shell Script,來讓系統開機自動執行。

Shell Script

新增並撰寫 Script。

[root@alarmpi ~]# vim /etc/rc.local

#!/usr/bin/bash

# 啟用系統的 router 功能
echo 1 > /proc/sys/net/ipv4/ip_forward
# NAT 設定
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
iptables -A FORWARD -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
iptables -A FORWARD -i wlan0 -o eth0 -j ACCEPT

設定權限,這樣才能讓系統自動執行。

[root@alarmpi ~]# chmod 755 /etc/rc.local

開機自動執行

設定。

[root@alarmpi ~]# vim /usr/lib/systemd/system/rc-local.service

[Unit]
Description=/etc/rc.local compatibility

[Service]
Type=oneshot
# 剛才撰寫的 Script
ExecStart=/etc/rc.local
RemainAfterExit=yes

[Install]
WantedBy=multi-user.target

啟用並設定開機自動啟用。

[root@alarmpi ~]# systemctl start rc-local
[root@alarmpi ~]# systemctl enable rc-local

發表迴響