OSイメージの書き込み
RaspberryPi Imagerを使います。
RaspberryPi Imagerで書き込みOption設定
これまでRaspberryPi OSをセットアップする際はインストール時のオプション無しで行っていましたが、今回はネットワーク設定、ユーザー設定オプションを行ってから書き込みました。
設定した項目は、ホスト名、Wifiネットワーク、ユーザー名です。Wifiはインターネット接続出来るように設定しておきます。
「設定を編集する」を選択

ホスト名、Wifiネットワーク、ユーザー名の各項目を設定する

アプリ側でも警告してくれるが、誤ったデバイスに書き込まないように注意する。

有線ネットワークとDHCPサーバーの設定
有線ネットワークで別PCと接続し、SSH通信できるように設定します。接続の際にDHCPサーバー機能を持たすことで接続しやすくしておきます。
有線ネットワークの設定
ラズパイにとりあえず画面とキーボード、マウス、LANケーブルを接続して、GUIから有線ネットワークの設定を行います。
完了した後、念のためrebootします。
画面右上のアイコンから"Edit Connection"を選択

"Wired connection1"をダブルクリック

Methodを"Manual"に変更、"Address","Netmask"を設定して"Save"を選択

Vimのインストール
デフォルトでインストールされているVimが非常に使いにくかったので、変更しておきます。ターミナルを開いて以下コマンドを入力。
sudo apt-get --purge remove vim-common vim-tiny sudo apt-get install vim
isc-dhcp-serverのインストール
sudo apt install isc-dhcp-server
isc-dhcp-serverの設定
dhcpサーバーとして動作させるために2つの設定が必要です。一つ目は"dhcp.conf"です。
sudo vim /etc/dhcp/dhcpd.conf
vimで設定ファイルの一部を下記のように変更します。ポイントはアドレスのリース期間変更とリース範囲の設定です。下記例ではリース期間を86400秒(1日)としています。
...
default-lease-time 86400;
max-lease-time 604800;
# The ddns-updates-style parameter controls whether or not the server will
# attempt to do a DNS update when a lease is confirmed. We default to the
# behavior of the version 2 packages ('none', since DHCP v2 didn't
# have support for DDNS.)
#ddns-update-style none;
# If this DHCP server is the official DHCP server for the local
# network, the authoritative directive should be uncommented.
#authoritative;
# Use this to send dhcp log messages to a different log file (you also
# have to hack syslog.conf to complete the redirection).
#log-facility local7;
# No service will be given on this subnet, but declaring it helps the
# DHCP server to understand the network topology.
subnet 192.168.101.0 netmask 255.255.255.0 {
option broadcast-address 192.168.101.255;
option subnet-mask 255.255.255.0;
option routers 192.168.101.1;
range 192.168.101.2 192.168.101.254;
}
...
対象のネットワークを登録するために、下記コマンドで設定ファイルをvimで開きます。
sudo vim /etc/default/isc-dhcp-server
以下のように変更することで、有線LANを登録します。
... INTERFACESv4="eth0" INTERFACESv6=""
サービスの起動コマンドでエラーが出ないか確認します。
sudo systemctl start isc-dhcp-server
ミスがなければ、これで正常に起動するはずです。
ネットワークとサービスの自動起動設定
まずはdhcpdを自動起動します。
sudo systemctl enable isc-dhcp-server
次にネットワークの自動接続設定を"nmtui"から行います。この設定は別に不要かもしれません。
sudo nmtui
"Edit a connection"を選択

"Wired connection1"を選択して、"Edit"を選ぶ。

"Require IPv4 addressing for this connection"と"Automatically Connect"をチェック(スペースでチェックorアンチェックを切替可能)

以上で設定完了です。
sshdの設定変更と有効化
クライアントPCからSSH接続できるように設定変更します。
sshd_configの書き換え
vimでsshd_configを開きます。
sudo vim /etc/ssh/sshd_config
パスワードログインの有効化とrootログイン禁止設定を行います。デフォルトファイルから下記パラーメータを探して書き換えます。
... PermitRootLogin no ... PasswordAuthentication yes ...
sshdの起動と自動起動登録
他のOSではsshd.serviceとなっていることが多いですが、RaspberryPiOSの場合は"ssh.socket"となるところに注意です。
sudo systemctl start ssh.socket sudo systemctl enable ssh.socket
以上でクライアントPCから接続できれば設定完了です。
つまづいたところ
記事に残していませんが、ファイルサーバーとして使用しているAlmaLinux上にDHCPサーバー機能を追加したことがあり、短時間ですんなり出来ていたので、今回も悩まず出来るだろうと思っていたのですが、見事につまずきました。
下記2点、解決に時間がかかったところがあるので残しておきます。
dhcpd.confの設定だけでは動かない
説明では"/etc/default/isc-dhcp-server"というファイルを編集して、対象のネットワークを設定しています。この作業が必要なことがわからず、時間がかかりました。これを行わずにデーモンを起動しようとしても、パラメーターエラーのような形で落ちてしまいます。
ラズパイのネットワーク設定ミス
GUIから有線ネットワークを設定する際、"Method"の項目を"Auto"から"Manual"に変更し忘れて進めていました。このままでも問題なくクライアントPCからのSSH通信を接続できますが、1分程度で切断されます。初歩的なミスですが、原因を見つけるまでに1時間以上かかりました。


