この記事の主な流れ
ネットワークの設定ファイルをみてみよう
先ず、中身をみる前に、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"
SSIDから付けられている名前も含め、tabキーで補完入力できます。
もしipv6を無効化するならdisabledにします。
sudo nmcli con mod "SSIDから付けられているID" ipv6.method disabled
コマンドでの修正設定はこれだけです。
修正したものを適用させる(再起動なし)
このままでは反映していませんから適用させます。
再起動をしなくても修正した設定を適用させることはできます。
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 connection reload
sudo nmcli connection up 設定変更したSSIDから付けられている名前
初めての場合、nmcliのヘルプを見ておくと良いでしょう。
nmcli --help
nmcli connection --help
コマンドであるconnectionは省略してconとも書け更にcでも良く、続けて修正するmodifyもmodと書けます。
分かりやすく、一文字だとオプションと間違えやすいので、con modでしょうか。
一先ず、Raspberry Pi で固定IP化する最低限の手法はこれで良いので試してみてください。