Ubuntu Server 24.04でのWiFi接続設定&IP固定

今までUbuntuをインストールするときはいつもDesktop版を使用していたのですが、そろそろServer版を使用しようかなと思い立ったのですが、ネットワーク関係の設定がイマイチ分かっていなかったので設定方法を残しておきたいと思います。

動作環境

  • Ubuntu Server 24.04
  • netplan + systemd-networkd(Ubuntu Serverの標準構成)

インストール時に設定する方法と、インストール後に設定ファイルを編集する方法の両方を書きます。同じことをUbuntu Server 22.04(Raspberry Pi 3)でやった手順はRaspberry PI 3のUbuntu Server 22.04でWiFi接続&IPを固定するにあります。

インストール時に設定する方法

インストール手順中にネットワーク環境を設定するところがあると思うので、以下のように設定します。

  1. WiFiを使用する場合は Edit Wifi から使用するWiFiを選択しSSIDとパスワードを設定する
  2. Edit IPv4 からIP固定の設定をする
    • IPv4 Method :Manual
    • Subnet :自宅LANのサブネット(例:192.168.1.0/24)
    • Address :固定したいIP(例:192.168.1.10)
    • Gateway :ゲートウェイ(例:192.168.1.1)
    • Name servers :DNSサーバ(例:192.168.1.1)
    • Search domains :(通常は入力不要)

インストール後に設定する方法

/etc/netplan/50-cloud-init.yaml を編集します。

sudo cp /etc/netplan/50-cloud-init.yaml /etc/netplan/50-cloud-init.bak
sudo vi /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:
    ethernets: # <- 有線LAN(IP固定したければWiFi版を参考に設定)
        enp5s0:
            dhcp4: true
    version: 2
    wifis: # <- WiFiの設定
        wlp2s0:
            access-points:
                {SSID}:  # <- WiFiのSSIDを設定
                    password: {PASSWORD}  # <- WiFiのパスワードを設定
            dhcp4: false  # <- DHCPは無効にする
            addresses:
                - {IP_ADDRESS}  # <- 例:192.168.1.10/24
            routes:
                - to: default
                  via: {Default Gateway}  # <- 例:192.168.1.1
            nameservers:
                addresses:
                    - {DNS}  # <- 例:192.168.1.1

設定が完了したらチェックする。

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のパスワードが平文で書かれています。標準ではパーミッションが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

うまく繋がらない場合の確認

netplan try で戻されてしまう場合や、適用しても通信できない場合は、次のコマンドで状態を確認できます。

sudo netplan get          # 適用されている設定を確認
networkctl status wlp2s0  # インタフェースの状態を確認

インタフェース名(wlp2s0enp5s0)は環境ごとに違うので、ip link で実際の名前を確認してから設定してください。ここが合っていないと、YAMLの文法が正しくても何も起こりません。

なお、冒頭のコメントにある通り、このファイルはcloud-initによって生成されるものです。再起動時に上書きされる場合は、コメント内の手順に従って /etc/cloud/cloud.cfg.d/99-disable-network-config.cfg を作成し、cloud-initによるネットワーク設定を無効にしてください。

22.04での手順はRaspberry PI 3のUbuntu Server 22.04でWiFi接続&IPを固定するにあります。SSHのパスワード認証が有効にならない場合はUbuntu Server 22.04でSSH接続のパスワード認証を有効に出来ないを確認してください。複数人で使うサーバの権限設計はチーム向けLinuxファイルサーバ構築:権限設定とユーザ管理にまとめました。