Raspberry Pi OSで静的IPアドレスを設定する手順が、いままでのやり方と違っていたのでご報告です。
いままでアップグレードした環境しか使ってこなかったので、初めての手順で設定を実施しました。
ネットワーク設定の今昔
Linuxをサーバにするとき、固定でIPを割り当てることが多いのですが、昔使っていた
/etc/network/interfaces
のファイルに直接書き込んでいくのですが、世代が進んで
/etc/dhcpcd.conf
に書き込むようにある世代から変更となっていました。(※DHCPクライアントに静的IPを設定しておく、という感じに変わった)
</etc/network/interfaces>ファイル内にも「このファイルは dhcpcd で使用するために作成されています。固定 IP については、/etc/dhcpcd.conf および 'man dhcpcd.conf' を参照してください。」と記載されるようになっていました。
これが、今回設定したTrixieベースのRaspberry Pi OSでは、(恐らく先代のbookwormのタイミングから)Network Managerベースとなったことで、上記のやり方と相違しているようでした。
マニュアルの推奨はルータ割り当て
静的IPアドレス設定は、どうもルータで割り当てるように変わった模様。マニュアル<https://www.raspberrypi.com/documentation/computers/configuration.html>には、
--------------------------------------------------------------
To allocate a static IP address to your Raspberry Pi, reserve an address for it on your router. Your Raspberry Pi will continue to have its address allocated via DHCP, but will receive the same address each time. A "fixed" address can be allocated by associating the MAC address of your Raspberry Pi with a static IP address in your DHCP server.
--------------------------------------------------------------
Raspberry Pi に静的 IP アドレスを割り当てるには、ルーターでそのアドレスを予約します。Raspberry Pi には引き続き DHCP 経由でアドレスが割り当てられますが、毎回同じアドレスが届きます。「固定」アドレスは、Raspberry Pi の MAC アドレスを DHCP サーバーの静的 IP アドレスに関連付けることによって割り当てることができます。
--------------------------------------------------------------
と記載があります。インストール直後のRaspberry Pi OSを確認してみたところ、Network Manager が標準となったためかdhcpcd も ifupdown (/etc/network/interfacesで使用される)もインストールされていません。
これを、以前のようにRaspberry Pi OS上でスタティックIPを設定してDHCP依存じゃないIPv4設定を入れたいというのが今回の目標です。
ネットワーク情報の確認
ネットワーク設定の確認にはip aとnmcli cがあります。
ip aは(ifconfig -aが使えなくなったタイミング以降)いつも使っているのですが、nmcliコマンドは今まで使っていませんでした。
書式
$ nmcli c
実行すると
--------------------------------------------------------------
$ nmcli c
NAME UUID TYPE DEVICE
Wired connection 1 00000000-0000-0000-0000-000000000000 ethernet eth0
lo 00000000-0000-0000-0000-000000000000 loopback lo
--------------------------------------------------------------
このように、NIC別にUUIDやデバイス名(NIC名)の確認ができます。
今回は有線LAN設定にIPv4を設定しますので「Wired connection 1」がeth0というところを確認しておきます。
IP設定画面を開く
GUIだとリッチな画面が表示されるのですが、CUIではどのように設定するのかを試してみました。
Network Managerで静的IPアドレスの指定をするには、
sudo nmtui
でプロファイルを作成し、設定ができました。まずは起動してみます。
コマンドで、
$ sudo nmtui
と入力すると設定画面が起動します。

メニューは、
Edit a connection(接続を編集する)
Activate a connection(接続をアクティブにする)
Set system hostname(システムホスト名を設定する)
Radio (無線)
Quit (終了)
となっています。
設定する
設定するために前述の画面で「Edit a connection(接続を編集する)」を選択します。選択すると次の画面、

NIC別の選択画面が表示されます。
SSIDを入力していない(たぶん)ので、Wi-Fi設定は出てこないようです。設定したいオンボードNIC(RJ-45の方)が先ほど調べた「Wired connection 1」を選択して、「Edit」を選択します。

この画面で、「IPv4 CONFIGURATION <Automatic>」の箇所を選択すると、

選択肢が表示されます。ここで「Manual」を選択します。選択後に、「Show」を選択すると、IPv4設定項目が画面表示されます。

Addressの<Add...>を選択してIPアドレス(このRaspberry Piの)を設定します。
同様にデフォルトゲートウエイやDNSサーバも設定していきます。

※画像のIPなどは実際の設定は実際の環境に合わせて実施します。
IP設定後必要に応じて

オプション設定を実施します。それぞれの項目は、
- ルーティング(カスタムルートなし)<編集...>
- このネットワークをデフォルトルートとして使用しない
- 自動取得ルートを無視する
- 自動取得DNSパラメータを無視する
- この接続にはIPv4アドレスを要求する
必要に応じてオプション設定を設定しておきます。また、IPv6が必要なければDisabledにしてIPv4のみの通信になるようにしておきます。(※参考:<sambaサーバにホスト名でアクセスできなくなったので対処 - treedown’s Report>で発生したのは元々IPv6が優先で応答してくるのが発端でした。)
OKボタンを選択して設定が完了すると、

画面が戻るので、「Back」で以前の画面に戻ります。
トップページで、

「Quit」を選択して「OK」を選ぶ。以上でIP設定が完了します。
ただ設定直後はこの設定値でなく、OS起動時にDHCPで取得したIPアドレスが使われているので、初期設定ということもあり、いったんOSを再起動(sudo systemctl reboot)してIPアドレス設定が反映されるかを確認しておきます。
OS再起動後にコマンドip aなどで確認してみると、Network Managerで設定した静的IPの設定値になっているので設定は狙い通りスタティックIPを手入力した値が使われることを確認できました。
これからはファイル編集でなくNetwork Manager
ここまでで完了です。Network ManagerベースとなったRaspberry Pi OSにて静的IPアドレスの設定方法を実施してみました。
ファイルに記載するだけの以前とそれほど変わらず、手入力箇所がファイルからUIになっただけなのですが、その入り口が分からないと設定をすることができないということもあり、今回のやり方は今後のRaspberry Pi OSを設定するうえで覚えておきたいと思いました。