2024/01/17(水)固定化IP(bookworm)

bookworm版の有線LANを固定化IPとする

RaspiOSのbookworm版はIP設定をNetworkManagerで行うように変更されている。
  NetworkManager:Red Hat, Inc.が開発したアプリケーション
 ・なぜ固定化IPが必要かはRaspiのboot初期値はDHCP(auto)によりIP番号は動的に変更されることがある。
  それを禁止するため。(IP番号がOSの都合により変えられると温度計アプリが通信不能となる)
 ● NetworkManageの現状を確認する。(Windowsのコマンドプロンプトより行う)
  WindowsのコマンドプロンプトからsshでRaspiへログイン(TeraTermだとnetworkを設定するので途中、通信不能になる場合がある)
pi@raspberrypi01:~ $ nmcli networking connectivity check
full
pi@raspberrypi01:~ $ systemctl status NetworkManager.service
   Loaded: loaded (/lib/systemd/system/NetworkManager.service; enabled; preset: enabled)
   Active: active (running) since Fri 2023-12-22 08:32:23 GMT; 20h ago
 ・active (running)が緑色で表示されれば起動中である。
 ネットワークの設定ファイルにおいて、「キーファイル」と「ifcfgスタイル」の2種類があるが
 bookwormは「キーファイル」の設定が優先される。「ifcfgスタイル」:CentOSなどが採用
 「キーファイル」でIPアドレス設定する場合で「キーファイル」の保存先例
 /etc/NetworkManager/system-connections/eth0.nmconnection
 配下にeth0.nmconnectionファイルが存在しないことを確認した上で、
 ● IPアドレス未設定時
pi@raspberrypi01:~ $ nmcli connection show
NAME                UUID                                  TYPE      DEVICE
Wired connection 1  d670c16f-e489-3964-bd86-b7786675a79b  ethernet  eth0
lo                  7cb5e7cb-183d-49ed-92c0-403dcb2b3710  loopback  lo
 「DEVICE」と「NAME」が一致していないので一致させる。
  NAME:enp0s10をDEVICE:eth0へ関連付ける。
pi@raspberrypi01:~ $ nmcli connection modify d670c16f-e489-3964-bd86-b7786675a79b connection.id enp0s10
NAME     UUID                                  TYPE      DEVICE
enp0s10  d670c16f-e489-3964-bd86-b7786675a79b  ethernet  eth0
lo       7cb5e7cb-183d-49ed-92c0-403dcb2b3710  loopback  lo
 ● このコマンドで以下のenp0s10.nmconnectionというファイルが作られる。
  /etc/NetworkManager/system-connections/enp0s10.nmconnection
  このファイルへnmcliコマンドで固定IP化する情報の追加や変更を行う。
  Windows編でuser名:pi、host名:raspberrypi01を設定しRaspiへログインした時、DHCPで割り振られたIPをそのまま
  固定化する。(なぜなら参加ネットワーク内でユニークなIP番号が割り振られているから)
・現在のIP割り振り状況の確認
pi@raspberrypi01:~ $ hostname -I
192.168.51.131 192.168.1.242
有線LAN:192.168.51.131  WiFi:192.168.1.242
pi@raspberrypi01:~ $ sudo nmcli connection modify enp0s10 ipv4.addresses 192.168.51.131/24
pi@raspberrypi01:~ $ sudo nmcli connection modify enp0s10 ipv4.gateway 192.168.51.1
pi@raspberrypi01:~ $ sudo nmcli nmcli connection modify enp0s10 ipv4.dns 8.8.8.8
pi@raspberrypi01:~ $ sudo nmcli connection modify enp0s10 ipv4.method manual
pi@raspberrypi01:~ $ sudo vi /etc/NetworkManager/system-connections/enp0s10.nmconnection
[ipv4]
address1=192.168.51.131/24,192.168.51.1<--追加された
dns=8.8.8.8;<--追加された
method=manual<--固定IP化に変更(DHCPではmethod=autoであった)
・viの閉じ方、ESC : q ! これを順番に入力し最後にEnter これで書き込み無しで閉じる
● 設定を有効化する。
pi@raspberrypi01:~ $ sudo nmcli connection reload
pi@raspberrypi01:~ $ sudo nmcli connection up enp0s10
Connection successfully activated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/3)
最後に有線LAN(enp0s10)を再起動する。
pi@raspberrypi01:~ $ sudo nmcli c down enp0s10 && nmcli c up enp0s10

bookworm版のWiFiを固定化IPとする

● 現在のWiFi状態を確認する。
pi@raspberrypi01:~ $ nmcli radio wifi
enabled
pi@raspberrypi01:~ $ nmcli device wifi
IN-USE  BSSID              SSID                   MODE   CHAN  RATE        SIGNAL  BARS  SECURITY
*       00:24:A5:C9:98:61  0024A5C99861           Infra  5     130 Mbit/s  100     ▂▄▆█  WPA1 WPA2
        06:24:A5:C9:98:61  0024A5C99861-1         Infra  5     130 Mbit/s  100     ▂▄▆█  WPA1
        B0:C7:45:34:20:60  Buffalo-G-206A         Infra  8     195 Mbit/s  67      ▂▄▆_  WPA2
        CA:32:E5:A8:96:CC  EU_WIRELESS            Infra  2     270 Mbit/s  50      ▂▄__  WPA1 WPA2
        CC:32:E5:A8:96:CB  EU_WIRELESS_4th_floor  Infra  2     270 Mbit/s  49      ▂▄__  WPA2
        00:D0:1D:26:96:6D  CWN                    Infra  11    130 Mbit/s  44      ▂▄__  WPA2 802.1X
        00:D0:1D:26:96:95  CWN                    Infra  11    130 Mbit/s  42      ▂▄__  WPA2 802.1X
        18:C2:BF:15:2C:13  Buffalo-G-2C12         Infra  1     130 Mbit/s  37      ▂▄__  WPA2
pi@raspberrypi01:~ $ 
● SDカードへRaspiOSを書き込む編で自動割り振りされた0024A5C99861へwifi接続し、固定IP化する。
 ・ここで0024A5C99861やpasswordは適時、自環境に合わせる。
 ・passwordはSDカードへRaspiOSを書き込む編の「パスワードを見るで表示される」でメモした文字列パスワードに置き換える。
pi@raspberrypi01:~ $ sudo nmcli dev wifi connect 0024A5C99861 password "2js6vmbtbdnwk"
・このコマンドで0024A5C99861.nmconnectionファイルが以下の場所へ作成される。
 /etc/NetworkManager/system-connections/0024A5C99861.nmconnection
pi@raspberrypi01:~ $ nmcli con show
NAME           UUID                                  TYPE      DEVICE
enp0s10        058c1b36-ce22-3354-b5f7-f65c75b88c15  ethernet  eth0
0024A5C99861   c2a191e6-1342-41d2-a898-736458bcdb35  wifi      wlan0
lo             4852a825-c549-4bfa-8a0c-85f7ca562d01  loopback  lo
preconfigured  c7f36508-2540-4236-8f6e-59ebf3b607c4  wifi      --
● コマンドによりファイルが作成されたので、このファイルに対してnmcliコマンドで固定IP化する情報の追加や変更を行う。
・現在のIP割り振り状況の確認
pi@raspberrypi01:~ $ hostname -I
192.168.51.131 192.168.1.242
192.168.51.131は有線LAN、すでに固定化済み、192.168.1.242はWiFiでまだ固定化されていない。
pi@raspberrypi01:~ $ sudo nmcli connection modify 0024A5C99861 ipv4.addresses 192.168.1.242/24
pi@raspberrypi01:~ $ sudo nmcli connection modify 0024A5C99861 ipv4.gateway 192.168.1.1
pi@raspberrypi01:~ $ sudo nmcli connection modify 0024A5C99861 ipv4.dns 8.8.8.8
pi@raspberrypi01:~ $ sudo nmcli connection modify 0024A5C99861 ipv4.method manual
pi@raspberrypi01:~ $ sudo vi /etc/NetworkManager/system-connections/0024A5C99861.nmconnection
[ipv4]
  address1=192.168.1.242/24,192.168.1.1<--nmcliコマンドで追加された
  dns=8.8.8.8;<--nmcliコマンドで追加された
  method=manual<--nmcliコマンドで変更された(auto-->manualへ)
 ・viの閉じ方、ESC : q ! これを順番に入力し最後にEnter これで書き込み無しで閉じる
● 設定を有効化する。(0024A5C99861.nmconnectionファイル変更したのでWiFiを接続しなおす)
pi@raspberrypi01:~ $ sudo nmcli connection down 0024A5C99861
pi@raspberrypi01:~ $ sudo nmcli connection reload
pi@raspberrypi01:~ $ sudo nmcli dev wifi connect 0024A5C99861 password "2js6vmbtbdnwk"
pi@raspberrypi01:~ $ sudo nmcli c down 0024A5C99861 && nmcli c up 0024A5C99861
pi@raspberrypi01:~ $ nmcli general status
STATE      CONNECTIVITY  WIFI-HW  WIFI     WWAN-HW  WWAN
connected  full          enabled  enabled  missing  enabled
 ・RaspiOSを書き込む編では0024A5C99861-1を選択していたがここでは0024A5C99861に変更したので
  /etc/NetworkManager/system-connections/preconfigured.nmconnectionファイルが放置されてしまった。<--無害
● IPが固定できたのでこれ以降の作業はTeraTermで行う。