Ubuntu Server 24.04 のインストールメモと systemd-networkd から NetworkManager への移行

Ubuntu Server 24.04 をインストールした。インストール自体は通常の手順で問題なし。ただし内蔵 / 外付け(USBタイプ)の Wi-Fi がいずれもデフォルト状態では動作しなかったため以下の通り無線 LAN 関係の設定を変更したのでメモ。

前提

機材

  • CHUWI HeroBox J4125
  • Archer T3U Nano
    • 内蔵の無線 LAN だと速度が出ないという記事があったので追加

参考

[ ID] Interval Transfer Bandwidth
[ 4] 0.00-10.01 sec 24.6 MBytes 20.6 Mbits/sec sender
[ 4] 0.00-10.01 sec 24.6 MBytes 20.6 Mbits/sec receiver

手順

  • Ubuntu Server 24.04 をインストール
  • インストール過程で有線 LAN 、無線 LAN の設定も実施しておく。インストール後に設定済みの状態になる効果があるので便利
  • インストール過程で [X] Install OpenSSH server とチェックを入れる。
  • デフォルトでは systemd-networkd になるが NetworkManager に切り替える(後述)

Netplan、systemd-networkd、NetworkManager

Ubuntu Server 24.04 において Netplan、systemd-networkd、NetworkManager は階層的な関係にある。

Netplan はフロントエンドとしてユーザ向けの設定ツールとして機能し、実際にネットワークを制御するバックエンド(レンダラー)として systemd-networkd または NetworkManager が動作する。

  • Netplan
    • ユーザが /etc/netplan/*.yaml に記述した設定を読み込み、バックエンド用の設定ファイルを生成・適用する
      • 現状では systemd-networkd の設定は生成するが NetworkManager の設定は管理しない様子?している?不明。今回は Netplan に NetworkManager の設定は委ねないことにした。
  • systemd-networkd
    • Ubuntu Server のデフォルトで初期状態では Netplan + systemd-networkd の組み合わせで設定が施され動作する
  • NetworkManager
    • Ubuntu Desktop のデフォルトで Ubuntu Server では初期状態ではインストールされない。 Ubuntu Server でも後述の通りインストールして使用することが可能。

役割の比較

機能 役割
Netplan フロントエンド。設定の抽象化インターフェース
systemd-networkd バックエンド
NetworkManager バックエンド

なお同機材で Ubuntu Desktop をインストールしたり Ubuntu Server のインストール過程で Wi-Fi の動作状況を見るに Ubuntu Server のインストーラで動作しているのは NetworkManager のように思われる(推測)

本機材における Netplan + systemd-networkd の問題

Ubuntu Server のインストール過程においては正常に Wi-Fi が接続され通信ができたがインストール後には接続ができなかった。状況を確認すると設定済みであるがずっと「接続試行中」のままで接続完了に移行しなかった。ルータ側が WPA3 (2.4GHz / 5GHz 両方とも)であることに起因する模様。ただし systemd-networkd が WPA3 非対応という情報は見つけられなかったので本環境におけるルータと子機(デバイス、ドライバ?)の組み合わせでの問題と思われる。

いずれにしてもインストール過程では接続できていた(接続完了し、DHCPでIPアドレスが取得できていた)ことを考えると設定やドライバ次第では接続可能であることはわかっていた。

systemd-networkd から NetworkManager への切り替え手順

Netplan でバックエンドを変更

/etc/netplan/*.yaml の書き換え

network:
  version: 2
  renderer: NetworkManager

適用

sudo netplan apply

cloud-init のネットワーク管理を無効化(この手順は不要かもしれない)

cloud-init が Wi‑Fi 設定を上書きしないよう無効化する

sudo bash -c 'echo "network: {config: disabled}" > /etc/cloud/cloud.cfg.d/99-disable-network-config.cfg'

NetworkManager の設定

NetworkManager を有効化

sudo apt install network-manager
sudo systemctl enable NetworkManager
sudo systemctl restart NetworkManager

Wi‑Fi のデバイスを NetworkManager 管理にする

sudo nmcli device set wlp1s0 managed yes
sudo nmcli device set wlx000011112222 managed yes

確認

nmcli device status

当該デバイスが unmanaged ではなく disconnected になっていれば正しく管理対象になっている。

設定や接続メモ

有線LAN(enp1s0)を DHCP に設定

無線が何らかの事情で不調になったときに有線LANからネットワークアクセスができるように、DHCPとして設定しておく。通常は使用しないが設定は施しておく。

NetworkManager で DHCP の接続プロファイルを作成

sudo nmcli connection add type ethernet ifname enp1s0 con-name enp1s0
sudo nmcli connection modify enp1s0 ipv4.method auto
sudo nmcli connection up enp1s0

2.4GHz と 5GHz を別デバイスに固定して接続

2.4GHz(例:wlp1s0)、5GHz(例:wlx000011112222)

sudo nmcli dev wifi connect "SSID_24G" password "PASSWORD" ifname wlp1s0
sudo nmcli dev wifi connect "SSID_5G" password "PASSWORD" ifname wlx000011112222

これでデバイスごとに別SSIDへ接続するプロファイルが作成される。

接続プロファイル名の確認方法。

nmcli connection show

ここで NAME と DEVICE の対応が確認できる。

例:

NAME        TYPE  DEVICE
SSID_24G    wifi  wlp1s0
SSID_5G     wifi  wlx000011112222
enp1s0      ethernet enp1s0

固定IPを設定(Wi‑Fi)

2.4GHz(wlp1s0)、5GHz(wlx000011112222)

sudo nmcli connection modify "SSID_24G" \
  ipv4.addresses 192.168.1.101/24 \
  ipv4.gateway "" \
  ipv4.dns "192.168.1.1" \
  ipv4.method manual
sudo nmcli connection modify "SSID_5G" \
  ipv4.addresses 192.168.1.102/24 \
  ipv4.gateway 192.168.1.1 \
  ipv4.dns "192.168.1.1" \
  ipv4.method manual

※ 予備扱いとして 2.4GHz の方の gateway は空にしておく

5GHz を優先するためのルートメトリクス設定

NetworkManager は route-metric が小さいほど優先となる。

2.4GHz(予備扱い)、5GHz(優先扱い)

sudo nmcli connection modify "SSID_24G" ipv4.route-metric 200
sudo nmcli connection modify "SSID_5G" ipv4.route-metric 50

設定反映

sudo nmcli connection down "SSID_5G"
sudo nmcli connection up "SSID_5G"

sudo nmcli connection down "SSID_24G"
sudo nmcli connection up "SSID_24G"

sudo nmcli connection down enp1s0
sudo nmcli connection up enp1s0

優先状態の確認方法

ip route

例:

default via 192.168.1.1 dev wlx000011112222 metric 50
default via 192.168.1.1 dev wlp1s0 metric 200

→ 数値が小さい方が優先である。

参考