Amazonのアソシエイトとして、ラズパイダ(raspida.com)は適格販売により収入を得ています。詳しくは当サイトの プライバシーポリシーをご覧ください。

NetworkManagerは2023年10月以降はRaspberry Pi OSで標準になりました。

Raspberry Pi で初めてNetworkManagerを使った時、どうにも不安定でしたので以来使っていません。今回はだいぶ時間が経ったのと、NetworkManagerなら他のパッケージを入れなくても、Wi-Fiのアクセスポイント化が出来るとあって試してみました。

Raspberry Pi 4 メモリー4GBモデル bullseye デスクトップ版64bit環境です。

IPアドレスで少しハマりました。しかし、終わってみればとても簡単な部類だと思います。スマホやPCとRaspberry Pi を直接繋げるのに役立ちます。

インターネットに接続するためのWi-Fi設定とAPの切替は載せていません。

記事執筆時点では初期設定がDHCPでした。

sudo が抜けていた箇所に追記しました。

いつものおまじない

リポジトリのアップデートとパッケージのアップグレードを済ませておきます。

sudo apt update && sudo apt full-upgrade -y
Rレッド Rレッド
今回は他に何もインストールしていない真っ新な環境なことを前置きしておきます。

NetworkManagerを有効にする

2023年10月以降のbookwormバージョン前のOSでは、NetworkManagerを有効にする必要がありました。

デフォルトではdhcpなので、NetworkManagerに変更する。raspi-configなら選ぶだけです。これでnmtuiとnmcliコマンドも使えるようになります。

有効にした時点でSSH接続は切れます。ラズパイ実機での操作で進めてください。

sudo raspi-config

6 → AA → 2

再起動を促されるので再起動します。

この時点で既存のwpa_supplicant.confのネットワーク接続が切れます。実機にキーボードとモニターを用意して進めましょう。

恐らくこの方法でのインストールなら、既存のdhcpcdは無効になっていると思われます。特に気にせず作業できましたからね。

wpa_supplicant.confの無効化

再起動後、wpa_supplicant.confが残っているなら、内容をコメントアウトするかファイルを削除、またはリネームなどで設定を読み込まないようにさせます。

sudo nano /etc/wpa_supplicant/wpa_supplicant.conf
(内容をコメントアウト(#)処理)

sudo mv /etc/wpa_supplicant/wpa_supplicant.conf /etc/wpa_supplicant/wpa_supplicant.conf.orig

sudo rm /etc/wpa_supplicant/wpa_supplicant.conf

コメントアウト処理で済ませるのが簡単です。

Wi-Fiをアクセスポイント化する

前回「ラズパイをアクセスポイント化、PCやスマホと直接繋ぐ方法」では、hostapdとdnsmasqを主に使用しました。今回はNetworkManagerのみでWi-Fiアクセスポイント化を構築しています。

NetworkManagerのコマンド

NetworkManagerでWi-Fiの設定をするのにnmtuiコマンドを使うと簡単です。

raspi-configみたいに、ターミナル上でグラフィカルに設定することが可能です。Network Manager Text User Interfaceの略ですね。

コマンドで設定するのは主に2つ。

nmtui ターミナル内のグラフィカルな設定ツール
nmcli コマンドによる設定ツール
Rグリーン Rグリーン
理由は色々とあるのですが、nmtuiは使っていません。

この記事では、アクセスポイント化するため通常のWi-Fi設定はしていません。

NetworkManagerにはインスタンスでdnsmasqが起動するらしいので、もしもdnsmasqがインストールしてあるなら、バッティングするので停止&無効または削除しないとなりません。isc-dhcpサーバやdhcpcdサーバも同様です。

途中、よく使うnmcliコマンド

現状がどうなっているのかステータスを調べられるコマンドをよく使いました。

次のコマンドを設定途中でも確認用として実行してみましょう。

nmcli dev status (nmcli device)
nmcli connection show (nmcli connection)
nmcli connection show wlan0
nmcli connection show AP名

NetworkManagerの設定ファイルの場所

Raspberry Pi OSでNetworkManagerの設定(conf)ファイルは次の場所にあります。

sudo nano /etc/NetworkManager/NetworkManager.conf

デフォルトだと次の2つしか記述がありません。

[main]
plugins=ifupdown,keyfile

[ifupdown]
managed=false

今回は特に触りません。

■Pi 5は8GBモデルがオススメ

nmcliコマンドの書式

ここからが本題です。

アクセスポイント化するため、通常のeth0やwlan0ではなく、rpi_apという接続ポイントを作成して、wlan0に接続し、スマホ(PC)から接続できるように設定していきます。

nmcliコマンドを使います。

コマンドの書式はオプションが多く、しかも省略できるので、余計にややこしく感じます。

nmcli [OPTIONS...] { help | general | networking | radio | connection | device | agent | monitor } [COMMAND] [ARGUMENTS...]
Rブラック Rブラック
この記事では、コマンドはなるべく省略しないで記載しています。

最少で1文字まで省略できますが、con や devといった微妙な省略もあるので、コマンド入力補完(TABキー)で入力していくと楽です。

省略した場合の例
  nmcli connection show rpi_ap
     ↓
  nmcli c s rpi_ap

プロファイルの作成と設定

先ず、アクセスポイントのプロファイルを作成します。一緒に設定も1行で書くことができます。

最終的には、この1行で設定しました。

これだけでOK

sudo nmcli connection add type wifi ifname wlan0 con-name rpi_ap autoconnect yes ssid ikkadan-lan 802-11-wireless.mode ap 802-11-wireless.band bg ipv4.method shared ipv4.address 192.168.2.1/24 wifi-sec.key-mgmt wpa-psk wifi-sec.pairwise ccmp wifi-sec.proto rsn wifi-sec.psk "password"

アクセスポイント名やIPアドレス、SSID名とパスワードは皆さんがそれぞれ考えてください。

sudo nmcli connection up rpi_ap

アクセスポイントが出来たのかshowで確認する。

nmcli connection show

NAME        UUID                                  TYPE      DEVICE
rpi_ap      ee90e67d-133a-4726-8896-893a204f6bbb  wifi      wlan0
有線接続 1  b27d80c1-69fa-3352-9c78-42bca4466b86  ethernet  eth0

有効になりました

iPhoneから接続

スマホからも接続できました。

指定したIPアドレス範囲でIPアドレスが振られています。(SSIDはraspida-lanとして設定した例)

少しだけ解説

プロファイルの基本的な部分は次になります。

nmcli connection add type wifi ifname wlan0 con-name rpi_ap autoconnect yes ssid ikkadan-lan

接続タイプをWi-Fi、インターフェイスにwlan0、接続AP名をrpi_ap、SSIDにikkadan-lanとしました。autoconnect yesとしているのは、デフォルトでは自動接続はNOで、毎回connection upコマンドをする必要があるからです。YESの方が良いでしょう。

これだと認証方式などがありませんから、いくつかは追加しています。

nmcliコマンドにsudoは必要ありません。(一部以外)

Wi-Fiの認証方式

802-11-wireless〜から続く部分は、Wi-Fiの認証方式やIPアドレスなどの設定です。このくらいは必要でしょうか。

802-11-wireless.mode ap
802-11-wireless.band bg
ipv4.method shared ipv4.address 192.168.2.1/24
wifi-sec.key-mgmt wpa-psk
wifi-sec.pairwise ccmp
wifi-sec.proto rsn
wifi-sec.psk "password"

モードをAP(アクセスポイント)、バンドはb/g、ipv4.methodはマニュアル(手動)ではなく、shared(共有)にしてからIPアドレスを設定しています。

sharedにしたのは、アクセスポイントに繋いだクライアント(スマホやPC)にIPアドレスを配布するためです。NetworkManager単体でmanualでやると、ローカルアドレス(169.254〜)が配布されます。

IPv4 configuration method. If ‘auto’ is specified then the appropriate automatic method (DHCP, PPP, etc) is used for the interface and most other properties can be left unset. If ’link-local’ is specified, then a link-local address in the 169.254/16 range will be assigned to the interface. If ‘manual’ is specified, static IP addressing is used and at least one IP address must be given in the ‘addresses’ property. If ‘shared’ is specified (indicating that this connection will provide network access to other computers) then the interface is assigned an address in the 10.42.x.1/24 range and a DHCP and forwarding DNS server are started, and the interface is NAT-ed to the current default network connection. ‘disabled’ means IPv4 will not be used on this connection. This property must be set.

他に設定しないとならない分は、一度confファイルが作られた後なのでmodify(修正)にして追加することでもOKです。

nmcli connection modify rpi_ap ipv4.method manual ipv4.addresses 192.168.2.1/24 \
nmcli connection modify rpi_ap 802-11-wireless-security.key-mgmt wpa-psk \
nmcli connection modify rpi_ap 802-11-wireless-security.psk "任意パスワード" \
nmcli connection modify rpi_ap 802-11-wireless-security.pairwise ccmp \
nmcli connection modify rpi_ap 802-11-wireless-security.proto rsn
nmcli connection modify rpi_ap 802-11-wireless.band a \
nmcli connection modify rpi_ap 802-11-wireless.channel 12
Rレッド Rレッド
IP範囲などが指定できると良いんだけどね。ちょっと見つかりませんでした。カスタムでconfファイルを配置すればできるらしいけど、よく分かりません。

設定の反映

必要な分をすべて設定したら接続を確立させます。(修正&追加を反映)

nmcli connection up AP名

AP名(ここではrpi_ap)を指定したshowコマンド(nmcli connection show rpi_ap)でアクセスポイントの設定内容が全て表示されます。足りない部分があったら、nmcli con modify〜に続けて実行できることが分かると思います。

自動起動はYESが便利

自動接続はYEN/NOで設定する。

nmcli connection modify rpi_ap autoconnect yes

ファイルの在処

これら設定は、/etc/NetworkManager/system-connections/以下にファイルとして作成されています。作成した名前になっていますね。

/etc/NetworkManager/system-connections/rpi_ap.nmconnection

ファイルを直接編集することもできますが、あまりオススメしません。UUIDが変更したりする(らしい)ので、nmcliコマンドで実行していきましょう。

設定項目の一覧表示

表示するにはアクセスポイント名(rpi_ap)を指定して一覧表示させます。

nmcli connection show rpi_ap

サービスの再起動

サービスをリスタートでも修正を反映できます。普段はconnection upで事足ります。

sudo systemctl restart NetworkManager.service

参考にしたい

manコマンドも目を通すと良いでしょう。

man nm-settings

参考にした公式URLも記事下部にまとめておきました。

NetworkManagerだけでアクセスポイント化できる

前回の記事から比べると、手数の意味ではとても簡単でした。

今回に限りませんが、ネットワーク周りの知識ばかりですね。プログラミングができない私でも使えるのがRaspberry Piの良いところです。

nmcliは、スクリプトファイルやプログラミングでも使えるので、独自の設定方法をまとめておくと便利だと思います。nmtuiは分かりやすい反面、最終的にはconnection upコマンドをしないと即時反映しないので、よく忘れてしまいます。

慣れる意味でもコマンドで設定してはいかがでしょうか。たったの1行で済みます。

NetworkManagerでのWi-Fiアクセスポイント化でした。

参考

https://developer-old.gnome.org/NetworkManager/stable/

https://developer-old.gnome.org/NetworkManager/stable/settings-802-11-wireless.html

https://developer-old.gnome.org/NetworkManager/stable/settings-802-11-wireless-security.html

NetworkManager / NetworkManager · GitLab