Raspberry Pi Zero 2 W を Ubuntu 22.04 Server で Wi-Fiルーター化する手順
(内蔵Wi-Fi+USBドングル構成)
インターネット
│
┌──────────┴──────────┐
│既存ルーター (例:192.168.3.1)
│ SSID: HomeWiFi
│ DHCP範囲: 192.168.3.2〜192.168.3.254
└──────────┬──────────┘
│ Wi-Fi接続(クライアント)
wlan0(内蔵Wi-Fi)
│ IP: 192.168.3.39
┌──────────────┴──────────────┐
│ Raspberry Pi Zero 2 W(ルーター)
│ OS: Ubuntu Server 22.04 (32bit)
│ NAT / DHCP / DNS / AP機能搭載
└──────────────┬──────────────┘
wlan1(USB Wi-Fi)
│ APモード
│ SSID: MyPiRouter
│ IP: 192.168.0.1
┌────────────┴────────────┐
│ │ │
iPhone(192.168.0.10)│PC(192.168.0.11)│IoT機器(192.168.0.12)
構成概要
| 用途 | インターフェース | IPアドレス | 備考 |
|---|---|---|---|
| 上流(WAN) | wlan0(内蔵Wi-Fi) | 192.168.3.39 | 既存ルーターに接続(インターネット側) |
| 下流(LAN / AP) | wlan1(USBドングル) | 192.168.0.1 | アクセスポイントとして端末接続用 |
再設定に至ったわけ
以前に作っていたラズパイ無線ルーターの調子が悪くなってしまった事による再設定です。OS以外は同じような構成です。
どこが調子悪くなったかというと、起動途中で画面への出力が途切れてしまうという現象です。bootのテキストファイルとかイジってみても駄目でした。Ubuntu Server版のいわゆる黒い画面は映ったので、このディストリビューションを選択することにしました。
使用OS・環境
追加する無線LAN(USBドングル)は以前と同じTP-Linkの品を使っていて、ドライバのコンパイルまでは同じなので、過去記事(上記リンク先)を確認してみてください。make && sudo make install までは同じです。
- Raspberry Pi Zero 2 W
- OS:Ubuntu Server 22.04 32bit << ここを変更しました
- 軽量構成(GUIなし)
- 追加無線LAN(TL-WN725N)
- 必要パッケージ:
sudo apt update
sudo apt install -y netplan.io hostapd dnsmasq iptables-persistent
1. ネットワーク設定(netplan)
TP-Linkのドライバは認識済み、というところから始めます。
設定ファイル例: /etc/netplan/01-netcfg.yaml
network:
version: 2
renderer: networkd
wifis:
wlan0:
dhcp4: true
optional: true
access-points:
"YourHomeWiFi":
password: "yourpassword"
ethernets:
wlan1:
dhcp4: no
addresses: [192.168.0.1/24]
optional: true
ポイント
- wlan0 は上流のWi-Fi(既存ルーター)に接続する「クライアント」
- wlan1 はAP(下流LAN)として固定IPを割り当てるため、
ethernets:に記述 - renderer は
networkdでOK
反映:
sudo netplan generate
sudo netplan apply
2. アクセスポイント(hostapd)設定
インストール
sudo apt install -y hostapd
sudo systemctl unmask hostapd
sudo systemctl disable hostapd
sudo systemctl stop hostapd
設定ファイル: /etc/hostapd/hostapd.conf
interface=wlan1
driver=nl80211
ssid=MyPiRouter
hw_mode=g
channel=6
ieee80211n=1
wmm_enabled=1
auth_algs=1
ignore_broadcast_ssid=0
# WPA2設定
wpa=2
wpa_passphrase=raspiwifi
wpa_key_mgmt=WPA-PSK
rsn_pairwise=CCMP
参照先を設定
/etc/default/hostapd に以下を追記または修正:
DAEMON_CONF="/etc/hostapd/hostapd.conf"
3. DHCP / DNS サービス(dnsmasq)
インストール
sudo apt install -y dnsmasq
設定ファイル: /etc/dnsmasq.conf
interface=wlan1
dhcp-range=192.168.0.10,192.168.0.100,12h
domain-needed
bogus-priv
wlan1(AP側)に接続した端末へIPを配布します。
4. NAT設定(iptables)
IPマスカレード(NAPT)設定
sudo iptables -t nat -A POSTROUTING -o wlan0 -j MASQUERADE
転送許可ルール
# 内側 → 外側
sudo iptables -A FORWARD -i wlan1 -o wlan0 -j ACCEPT
# 外側 → 内側(戻り通信)
sudo iptables -A FORWARD -i wlan0 -o wlan1 -m state --state RELATED,ESTABLISHED -j ACCEPT
IP転送有効化 & 永続化
echo 1 | sudo tee /proc/sys/net/ipv4/ip_forward
sudo sed -i 's/^#*net.ipv4.ip_forward=.*/net.ipv4.ip_forward=1/' /etc/sysctl.conf
永続化設定
sudo apt install -y iptables-persistent
sudo netfilter-persistent save
sudo netfilter-persistent enable
5. 各サービスの自動起動設定
sudo systemctl enable hostapd
sudo systemctl enable dnsmasq
sudo systemctl enable netfilter-persistent
6. 再起動して確認
sudo reboot
再起動後に以下を確認:
| コマンド | 目的 | 期待結果 |
|---|---|---|
ip addr s | wlan0, wlan1 のIP確認 | wlan0: 192.168.3.x / wlan1: 192.168.0.1 |
systemctl status hostapd | AP起動確認 | active (running) |
systemctl status dnsmasq | DHCP稼働確認 | active (running) |
ip route show default | ルーティング確認 | default via 192.168.3.1 dev wlan0 |
接続確認
- スマホなどで SSID 「MyPiRouter」 を探して接続
- IP が
192.168.0.xで割り当てられる - インターネット通信ができれば成功!
トラブルシューティングメモ
| 症状 | 対処 |
|---|---|
dnsmasq が起動失敗 | systemd-resolved がポート53を使用 → 無効化 |
hostapd が落ちる | wlan1 の設定競合 → netplanで wifis: → ethernets: に変更 |
| 再起動後にIPが消える | sudo netplan generate を忘れない |
| NATが効かない | sudo iptables -t nat -L -v でルール確認 |
インターフェイス名を固定
wlan0 — 内蔵無線LAN
wlan0 — 後付無線LAN
ip link show コマンドなどで link/ether のMACアドレスを確認
wlan1: link/ether b8:27:eb:xx:xx:xx
wlxa899999999: link/ether a8:99:99:99:99:99
sudo nano /etc/udev/rules.d/* この中のrulesにudevルールを書き込む
まとめ
Zero 2 W を Ubuntu Server 22.04 で
「内蔵Wi-Fi (wlan0) + USB Wi-Fi (wlan1)」構成の自動起動ルーター に仕上げる手順。
構成のポイント:
- wlan0:WAN側(既存Wi-Fiルーターへ接続)
- wlan1:LAN側(APモード)
hostapd+dnsmasq+iptables+netplanの連携で構築- 全自動起動化で Zero 2 W が単体ルーターとして稼働
以上になります。またお会いしましょう





1件のコメント