Raspberry PI 3のUbuntu Server 22.04でWiFi接続&IPを固定する

ふと思い立って押し入れに眠っていたラズパイ3にUbuntu Serverでも入れてみようと思い立ったものの、WiFi接続の方法やIPの固定の仕方が分からなかったので備忘録として残しておきます。

Ubuntu Server 22.04のインストールに関しては、公式からダウンロードできるRaspberry Pi Imagerを用いてインストールするのが一番良いかと思います。

動作環境

  • Raspberry Pi 3
  • Ubuntu Server 22.04(Raspberry Pi Imagerでインストール)
  • netplan + systemd-networkd(Ubuntu Serverの標準構成)

Ubuntu Server 24.04で同じことをやる手順はUbuntu Server 24.04でのWiFi接続設定&IP固定に別途まとめています。設定ファイルの構造自体は同じですが、インストーラ側で設定できる部分が増えています。

WiFi接続&IP固定

WiFiの接続設定とIPの固定は同じ設定ファイル上で行います。

編集するファイル

/etc/netplan/50-cloud-init.yaml

設定内容

# This file is generated from information provided by the datasource.  Changes
# to it will not persist across an instance reboot.  To disable cloud-init's
# network configuration capabilities, write a file
# /etc/cloud/cloud.cfg.d/99-disable-network-config.cfg with the following:
# network: {config: disabled}
network:
    version: 2
    wifis:
        renderer: networkd
        wlan0: # Wifiの設定
            access-points:
                "接続したいSSID":
                    password: "パスワード"
            addresses: 
                - 192.168.1.10/24 # 固定したいIP
            routes:
               - to: default
                 via: 192.168.1.1 # デフォルトゲートウェイ
            nameservers:
                addresses:
                    - 192.168.1.1 # DNS
            dhcp4: false # IP固定したいのでDHCPは無効にする
            optional: true

以上の設定をしたら以下のコマンドでチェックする。

sudo netplan try

以下の表示が出るので問題なければEnterを押して設定を反映する。

Do you want to keep these settings?

Press ENTER before the timeout to accept the new configuration

Changes will revert in 117 seconds

以上でWiFiへの接続とIP固定は完了です。

設定ファイルのパーミッションを変更しておく

一つ注意点があります。この設定ファイルにはWiFiのパスワードが平文で書かれています

Ubuntuの標準では、このファイルのパーミッションが644(他のユーザからも読める状態)になっていることがあり、netplanを実行すると次のような警告が出ます。

Warning: Permissions for /etc/netplan/50-cloud-init.yaml are too open. Netplan configuration should NOT be accessible by others.

動作自体には影響しませんが、サーバに複数のユーザアカウントがある場合、一般ユーザがWiFiのパスワードを読めてしまいます。root以外から読めないようにしておくのが安全です。

sudo chmod 600 /etc/netplan/50-cloud-init.yaml

複数人で使うサーバでの権限設計についてはチーム向けLinuxファイルサーバ構築:権限設定とユーザ管理にまとめました。

netplan try が使えない場合

netplan try は、設定を適用して一定時間内にEnterが押されなければ自動で元に戻す、という安全機構です。設定を間違えてネットワークごと切断されたときに復旧できるので、リモートで作業する場合は基本的にこちらを使います。

ただし、環境によっては netplan try がうまく動作しないことがあります。その場合は直接適用します。

sudo netplan apply

こちらは自動で元に戻らないため、設定を間違えるとSSHで入れなくなります。ラズパイのように後からモニタとキーボードを直結できる環境なら問題ありませんが、そうでない場合は事前に設定内容をよく確認してから実行してください。

適用しても繋がらない場合は、次のコマンドで生成された設定と実際の状態を確認できます。

sudo netplan get          # 現在の設定内容を確認
networkctl status wlan0   # インタフェースの状態を確認

設定後にSSHのパスワード認証がうまくいかない場合はUbuntu Server 22.04でSSH接続のパスワード認証を有効に出来ないを参照してください。Ubuntu Server 24.04での手順はUbuntu Server 24.04でのWiFi接続設定&IP固定にあります。