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

Raspberry PiのWi-Fi設定は、新しいbookwormからNetworkManagerになりました。これまではdhcpcdのwpa_supplicant.confで設定していました。

現在もどちらか選べるのですけど、新しいNetworkManagerが主流で、Raspberry Piもデフォルトで採用されているため、今後はNetworkManagerで覚えたいですね。

NetworkManagerも非エンジニアの私達にとって、少し分かりにくい部分があります。

最終的にコマンド1行で解決できます。 あまり細かい事は省いて、キモだけ理解できるようにまとめておきます。

Rグリーン Rグリーン
ラズパイダではいつも細かい事を省いているけどね!

ネットワークの設定ファイルをみてみよう

先ず、中身をみる前に、NAME、UUID、TYPE、DEVICEといった情報から見ていきます。 一度分かれば済む話です。

表示するコマンドは、次のどれか。

nmcli c
または

nmcli con
または

nmcli connection
または

nmcli connection show

ウチの環境だとこんな感じですね。

NAME          UUID                                  TYPE      DEVICE
XXXXXXXXXXXX  XXXXXXXXXXXXXXXXXXXXXXXXXXX4d7bb4d2e  wifi      wlan0
docker0       2715a57e-7dc5-48ba-95bb-b630844c34c7  bridge    docker0
lo            1cb012bf-2fea-4a9a-b911-3270c51edc19  loopback  lo
有線接続 1    5911eb2f-3d03-35ee-94a0-e8bd7d98c846  ethernet  --

ここで知りたいのは、主にNAMEとDEVICEです。

画像はWi-Fiで繋がっている状態で、NAMEとUUIDは隠していますが、NAMEにはSSID名が採用されているハズです。

では次に、設定ファイルを見てみます Raspberry Pi Imagerで設定したなら以下にあります。

sudo nano /etc/NetworkManager/system-connections/SSIDから付けられているID名.nmconnection

中身をみてみます。

[connection]
id=XXXXXXXXXX
uuid=XXXXXXXX-XXXX-XXXX-XXXX-XXX4d7bb4d2e
type=wifi
interface-name=wlan0
timestamp=1699793657

[wifi]
mode=infrastructure
ssid=XXXXXXXXXX

[wifi-security]
auth-alg=open
key-mgmt=wpa-psk
psk=XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

[ipv4]
method=auto

[ipv6]
addr-gen-mode=default
method=auto

[proxy]

色々とありますね。 確認したいのは、idとssidが同じですよね。

IPアドレスを固定化するのに、ここにある接続IDに紐付いた[ipv4]セクションを書き換えます。 このまま手動で書き換えてもOKです。

例えば、ゲートウェイ(ルーターの)が192.168.1.1、固定IPアドレスを192.168.1.39と設定したい場合

[ipv4]
method=manual
address1=192.168.1.39/24,192.168.1.1

methodをautoからmanualに変更し、IPアドレス、サブネットマスク、デフォルトゲートウェイの順番で、デフォルトゲートウエイとの区切りはカンマで繋げます。

address1はmethod=manualとセットで記述し、autoなら要りません。

コマンドで実行する

手動でも何ら問題はありませんが、設定ファイルの場所を覚えるより、1行コマンドで実行すると楽ちんです。

次のようになります。

sudo nmcli con mod "SSIDから付けられているID" ipv4.method "manual" ipv4.addresses "192.168.1.39/24" ipv4.gateway "192.168.1.1"

改行したコマンドだと次のようになります。

sudo nmcli con mod "SSIDから付けられているID" \
ipv4.method "manual" \
ipv4.addresses "192.168.1.39/24" \
ipv4.gateway "192.168.1.1"

SSIDから付けられている名前も含め、tabキーで補完入力できます。

もしipv6を無効化するならdisabledにします。

sudo nmcli con mod "SSIDから付けられているID" ipv6.method disabled

コマンドでの修正設定はこれだけです。

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

修正したものを適用させる(再起動なし)

このままでは反映していませんから適用させます。

再起動をしなくても修正した設定を適用させることはできます。

SSHで作業している場合はコネクションが切れますので、新たにSSH接続し直してください。

sudo nmcli connection reload
sudo nmcli connection up SSIDから付けられているID

IPアドレスを確認する。

ip a
または

ip -4 a
または

ip -4 a show dev wlan0

こんなエラーの解決法

ネットワーク関連をイジっていて、sudoしたらホスト名のエラーに出くわすことがあります。

sudo: ホスト hostname の名前解決ができません: 名前またはサービスが不明です

/etc/hostsファイルを見直すと良いでしょう。

sudo nano /etc/hosts

ここの最下段にホスト名を追記します。

127.0.1.1    hostname

hostnameがrpios12としたら、127.0.1.1 rpios12とします。空白はTABキーで入れておきましょう。

ちなみに、hostnameは、/etc/hostnameと同じにしないとなりません。

まとめ

コマンドで行えば、.nmconnectionを編集しなくても良くて楽です。設定ファイルの場所を覚えられないですからね。

まとめとしてもう一度書いておきます。

sudo nmcli con mod "SSIDから付けられている名前NAME" ipv4.method "manual" ipv4.addresses "固定化したいアドレス/24" ipv4.gateway "ルーターのIPアドレス"

改行するとこんな感じ。

sudo nmcli con mod "SSIDから付けられているID" \
ipv4.method "manual" \
ipv4.addresses "192.168.1.39/24" \
ipv4.gateway "192.168.1.1"

変更を適用する。

sudo nmcli connection reload
sudo nmcli connection up 設定変更したSSIDから付けられている名前

初めての場合、nmcliのヘルプを見ておくと良いでしょう。

nmcli --help
nmcli connection --help

コマンドであるconnectionは省略してconとも書け更にcでも良く、続けて修正するmodifyもmodと書けます。 分かりやすく、一文字だとオプションと間違えやすいので、con modでしょうか。

NAMEとDEVICE名を一緒にするといった情報を見ました。 細かい設定はまだたくさんあります。また調べて検証してみます。

一先ず、Raspberry Pi で固定IP化する最低限の手法はこれで良いので試してみてください。