因為不知道為甚麼網上沒有 Raspberry Pi Zero 2W 以外接 WiFi USB 作為 WiFi 中繼器的教學,所以我就來自己研究出一個方法囉
材料
- Raspberry Pi Zero 2W
- Raspberry Pi OS
- 用作 wlan1 的 USB WiFi 模組
安裝所需 Package
sudo apt-get update
sudo apt-get upgrade
sudo apt-get install hostapd
sudo apt-get install dnsmasq
sudo systemctl stop hostapd
sudo systemctl stop dnsmasq
設定網絡界面卡
sudo mv /etc/dnsmasq.conf /etc/dnsmasq.conf.orig
sudo nano /etc/dnsmasq.conf
寫入以下內容
interface=wlan1
dhcp-range=192.168.0.11,192.168.0.30,255.255.255.0,24h
固定 wlan1 的 IP 地址
sudo nano /etc/network/interfaces
把 source /etc/network/interfaces.d/* 加上 comment:
#source /etc/network/interfaces.d/*
寫入以下內容
auto lo
iface lo inet loopback
auto wlan0
iface wlan0 inet dhcp
allow-hotplug wlan1
iface wlan1 inet static
address 192.168.0.10
netmask 255.255.255.0
broadcast 192.168.0.255
gateway 192.168.0.254
設定 Hostapd
sudo nano /etc/hostapd/hostapd.conf
寫入以下內容(記得更新 WiFi 名稱與密碼)
interface=wlan1
hw_mode=g
channel=7
wmm_enabled=0
macaddr_acl=0
auth_algs=1
ignore_broadcast_ssid=0
wpa=2
wpa_key_mgmt=WPA-PSK
wpa_pairwise=TKIP
rsn_pairwise=CCMP
ssid=[WiFi SSID 名稱]
wpa_passphrase=[WIFI 密碼]
之後編輯預設設定
sudo nano /etc/default/hostapd
把原本的 #DAEMON_CONF=”” 改成
DAEMON_CONF="/etc/hostapd/hostapd.conf"
設定 wlan1 -> wlan0 的 forwarding
sudo nano /etc/sysctl.conf
把
#net.ipv4.ip_forward=1
改成
net.ipv4.ip_forward=1
新增 iptables 規則
如果你是用 Lite 版沒有 iptables 可以先透過以下指令安裝
sudo apt-get install iptables
然後輸入
sudo iptables -t nat -A POSTROUTING -o wlan1 -j MASQUERADE
sudo sh -c "iptables-save > /etc/iptables.ipv4.nat"
編輯 rc.local 在啟動時自動應用規則
sudo nano /etc/rc.local
加入
iptables-restore < /etc/iptables.ipv4.nat
Unmask 與 重新啟動 hostapd 及 dnsmasq
sudo systemctl unmask hostapd
sudo systemctl enable hostapd
sudo systemctl start hostapd
sudo systemctl unmask dnsmasq
sudo systemctl enable dnsmasq
sudo systemctl start dnsmasq
重新啟動
sudo reboot