Raspberry Pi OSの最新版であるBookwormでラズパイをアクセスポイントとして使う方法をご紹介します。NetworkManagerのおかげでかなり簡単にできたと思います。
今回はラズパイは他のアクセスポイントに接続しつつ、ラズパイがアクセスポイントとしてふるまう方法を紹介します。この方法は、ラズパイを介してインターネットへ接続できる方法です。
想定環境
- Raspberry Pi 4 B
- Raspberry Pi OS Lite(64 bit) Bookworm
- ラズパイに対しての無線以外の接続手段(シリアル、有線LAN、モニタ+キーボードなど)
準備
Raspberry Pi OSのコピー
Raspberry Pi Imagerなどを使用して、SDカードにOSイメージをコピーしてください。Imagerを使う場合、この後SDカード内のファイルを操作するため、終わったときにメディアを取り出す
のチェックを外してください。
SDカード内のファイルの編集
この先、設定変更のミスによりラズパイへのアクセスを失うことを防ぐため、有線接続またはシリアル接続の設定をします。キーボードとモニタをお持ちの方はそのままで大丈夫です。
シリアルの有効化
bootfs/config.txtを編集します。末尾にenable_uart=1
を追記してください。
・・・省略・・・
[all]
enable_uart=1
イーサネットポートのアドレス固定
PCとラズパイをLANケーブルで直接続する場合、以下の設定をします。有線LAN環境があり、DHCPでラズパイに割り当てられたIPアドレスを把握する術がある場合は必要ありません。職場、学校などでDHCPの情報が確認できない場合は直接続が安心です。
bootfs/cmdline.txtを編集します。1行目末尾にip=192.168.200.1::0.0.0.0:255.255.255.0::eth0:off
を追記します。IPアドレスは適宜変更してほかのNWと被らないようにしてください。
console=serial0,115200 console=tty1 root=PARTUUID=4e639091-02 rootfstype=ext4 fsck.repair=yes rootwait quiet init=/usr/lib/raspberrypi-sys-mods/firstboot cfg80211.ieee80211_regdom=JP systemd.run=/boot/firstrun.sh systemd.run_success_action=reboot systemd.unit=kernel-command-line.target ip=192.168.200.1::0.0.0.0:255.255.255.0::eth0:off
ネットワークの設定
SDカードをラズパイに挿入し、電源を入れます。各々の方法でログインしてください。
仮想Wi-Fiインタフェースの作成
Raspberry Pi WiFiアクセスポイント+クライアント同時使用
こちらのサイトを参照し、 udevの設定 までを完了させてください。出来たら再起動します
インタフェースの確認
インタフェースが再起動しても作成されていることを確認します。iw dev
を実行し、ap0が存在すること、MACアドレスがwlan0と同一であることを確認してください。
pi@raspberrypi:~$ iw dev
phy#0
Unnamed/non-netdev interface
wdev 0x3
addr アドレス
type P2P-device
txpower 31.00 dBm
Interface ap0
ifindex 4
wdev 0x2
addr アドレス
type AP
channel 36 (5180 MHz), width: 20 MHz, center1: 5180 MHz
txpower 31.00 dBm
Interface wlan0
ifindex 3
wdev 0x1
addr アドレス
type managed
channel 36 (5180 MHz), width: 20 MHz, center1: 5180 MHz
txpower 31.00 dBm
nmcliでの設定
nmcliを用いて設定をします。
コマンド一発で設定ができます。
sudo nmcli connection add type wifi con-name raspi-ap ssid raspi-ap 802-11-wireless-security.psk raspberry ifname ap0 mode ap 802-11-wireless.band bg ipv4.method shared ipv4.addresses 192.168.210.1/24 ipv6.method disabled 802-11-wireless-security.key-mgmt wpa-psk 802-11-wireless-security.proto rsn 802-11-wireless-security.pairwise ccmp 802-11-wireless-security.psk raspberry autoconnect yes
詳しくはわかりませんが、周波数やチャンネルの設定を入れないことで、勝手に適切な設定を選んでくれるようです。
con-name
、ssid
、802-11-wireless-security.psk
はお好みで変更してください。(raspi-apのパスワードがraspberryはさすがに安直すぎる気がします)
ipv4.addresses
も環境により他のNWと被らないよう変更してください。
設定の確認
nmcli device status
を実行します。
DEVICE TYPE STATE CONNECTION
ap0 wifi 接続済み raspi-ap
wlan0 wifi 接続済み preconfigured
eth0 ethernet 接続済み (外部) eth0
lo loopback 接続済み (外部) lo
p2p-dev-ap0 wifi-p2p 切断済み --
p2p-dev-wlan0 wifi-p2p 切断済み --
DEVICE TYPE STATE CONNECTION
ap0 wifi connected raspi-ap
wlan0 wifi connected preconfigured
eth0 ethernet connected (externally) eth0
lo loopback connected (externally) lo
p2p-dev-ap0 wifi-p2p disconnected --
p2p-dev-wlan0 wifi-p2p disconnected --
raspi-apがap0に接続されていることを確認してください。
疎通確認
ここまでの設定を終えると、PCなどからラズパイにアクセスできます。試してみましょう。
私の環境では、802.11ac 5GHzで接続されました。おそらくラズパイ4の規格上の最速です。
参考: https://qiita.com/god19/items/f21d274b45688d9679fa
ipconfig
を実行してみます
Wireless LAN adapter Wi-Fi:
接続固有の DNS サフィックス . . . . .:
リンクローカル IPv6 アドレス. . . . .: fe80::4f26:eb45:2c03:5c36%9
IPv4 アドレス . . . . . . . . . . . .: 192.168.210.161
サブネット マスク . . . . . . . . . .: 255.255.255.0
デフォルト ゲートウェイ . . . . . . .: 192.168.210.1
ping google.com
で、インターネットへ出られることを確認してみます。
google.com [142.250.198.14]に ping を送信しています 32 バイトのデータ:
142.250.198.14 からの応答: バイト数 =32 時間 =8ms TTL=57
142.250.198.14 からの応答: バイト数 =32 時間 =8ms TTL=57
142.250.198.14 からの応答: バイト数 =32 時間 =8ms TTL=57
142.250.198.14 からの応答: バイト数 =32 時間 =9ms TTL=57
142.250.198.14 の ping 統計:
パケット数: 送信 = 4、受信 = 4、損失 = 0 (0% の損失)、
ラウンド トリップの概算時間 (ミリ秒):
最小 = 8ms、最大 = 9ms、平均 = 8ms
無事に接続できました。
まとめ
NetworkManagerを用いることで、追加パッケージのインストールなしでラズパイに無線接続できました。
コメント、編集リクエストお待ちしております。最後まで読んでいただきありがとうございました。
参考記事
https://www.mikan-tech.net/entry/raspi-wifi-ap-sta
https://raspida.com/networkmanager-wifi-ap
https://qiita.com/god19/items/f21d274b45688d9679fa