5
7

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Ubuntu Server24.04起動時にsystemd-networkd-wait-online.serviceで待たされる問題を解消する。

Posted at

はじめに

先日Ubuntuの新しいLTSとなるUbuntu 24.04が公開されたため、自宅のサーバOSをUbuntu Server 24.04に入れ替えていたのですが、起動時にsystemd-networkd-wait-online.serviceで2分ほど待たされるようになったため、待たされないようにした方法を残しておこうと思います。

systemd-networkd-wait-online.serviceで待たされる問題

私は基本的にはテスト用のサーバ用途で使うことが多いため、Ubuntu Serverを使っており、たまにVirtualBoxVMware Workstation PlayerなどGUIで操作するアプリケーションを使うこともあるため、邪道かもしれませんが、Ubuntu ServerにGUI環境もインストールして使っています。

問題は、Ubuntu Server 24.04にデスクトップサービスやxrdpをインストール後、再起動した際に発生しました。

起動時にsystemd-networkd-wait-online.serviceのチェックに失敗し、以下のようにデフォルトのタイムアウト時間となる2分待機させられてしまうため、起動はしますが時間がかかってしまいます。

Monosnap_20240512_104251.png

ちなみにsystemd-networkd-wait-online.serviceはネットワークが起動する前に他のアプリケーションが起動して、ネットワークが見つからずにエラーとなってしまうことを防ぐためにネットワークが起動し終わるまでに待機するためのサービスのようです。

タイムアウトとなるため、ネットワークが起動できていないかと思いきや、そんなことはなく、起動後はサーバに繋がるため、ネットワークサービス自体には問題がないようです。

以下調査した結果をまとめていこうと思いますが、対処法だけ知りたい方は以下にお進みください。

原因調査

調べてみると、systemd-networkd-wait-online.serviceを止めてしまう方法や、LANが繋がっていないインタフェースを除外する方法等が出てきましたが、止めてしまうとネットワークが起動し終わる前に他のサービスが起動してしまうこともありうるのでできれば止めたくありません。

また、LANが繋がっていないインタフェースを除外しようにも、1つのインタフェースだけでも問題が発生したため、今回の問題とは事象が異なるようです。

ということで、他の方法がないか色々と調べた結果を以下に示します。

原因切り分け

事象再現のため、VirtualBoxで同様の構成を構築してみたところ、2分待たされる問題が発生しました。

項目 内容
OS Ubuntu Server 24.04 LTS
インタフェース数 1つ(物理ネットワークにブリッジ)
主なインストールアプリケーション ubuntu-desktop、xrdp

GUI系のサービスをインストールするまでは2分待たされることはなかったので、GUI系サービスが影響しているだろうというところまで分かりました。

また、最初からGUI環境もインストールされるUbuntu Desktop 24.04 LTSubuntu-desktopxrdpをインストールして再起動を行ってみたところ、Ubuntu Desktopでは2分待たされることはありませんでした。

Ubuntu ServerとUbuntu Desktopの違い

どういうこっちゃ?と思いつつ、Ubuntu ServerUbuntu Desktopについて調べてみると、Ubuntu ServerUbuntu Desktopではデフォルトのネットワークサービスが異なるとのこと。

OS デフォルトネットワークサービス
Ubuntu Server 24.04 LTS systemd-networkd
Ubuntu Desktop 24.04 LTS NetworkManager

それぞれネットワーク系サービスのインストールと起動有無をまとめたものが以下となります。

ネットワーク系サービス Ubuntu Server 24.04 LTS Ubuntu Desktop 24.04 LTS
systemd-networkd 自動起動 未起動
NetworkManager 未インストール 自動起動
systemd-networkd-wait-online 自動起動 未起動
NetworkManager-wait-online 未インストール 自動起動

Ubuntu Desktopはサービスとしては使われていませんが、インストールはされている状態のようです。

Ubuntu ServerNetworkManagerがそもそもインストールされていない状態のようです。

問題の原因仮説

途中で飽きてしまい、根本原因の裏取りまで行きつかなかったので仮説までとしておきます。

NetworkManagerは以下のようにGUIでネットワークインタフェースの設定等行う際のサービスとしても使われています。

Monosnap_20240512_162214.png

Ubuntu 24.04ではネットワークはNetPlanの設定と統合されたようなので、Ubuntu Serverでも、Ubuntu Desktopでも、/etc/netplan配下にNetPlanのファイルが置かれていればネットワークが設定されます。

しかし、systemd-networkd-wait-onlineサービスではNetworkManagerで起動されたネットワークはおそらく管理外のため起動判定されず、タイムアウトまでの2分間待機する動作となっていると思われます。

今回は、Ubuntu ServerにGUI環境をインストールしたタイミングでNetworkManagerがインストールされたことで、NetworkManagerが動き出し、おそらくデフォルトのネットワークレンダリングエンジンがNetworkManagerに変わったことでsystemd-networkdの起動状態を監視するsystemd-networkd-wait-onlineが正常に判定できず、タイムアウトまで待ってしまったということなのかと思われます。

対処法その1:systemd-networkd-wait-online.serviceの停止

おそらくGUI環境を構築するとNetworkManagerがデフォルトのネットワークレンダリングエンジンとなることでチェックできずにタイムアウトまで待つことになるため、そもそもの原因となるsystemd-networkd-wait-online.serviceを止めてしまう方法となります。

NetworkManagerでネットワークの起動は問題無くでき、NetworkManager-wait-online.serviceといったサービスもあるため、systemd-networkd-wait-online.serviceを止めてしまってもおそらく問題ないと思いますが、停止する場合はしっかりと検証してから行うようにしてください。

systemd-networkd-wait-online.serviceの停止
systemctl disable --now systemd-networkd-wait-online.service

対処法その2:レンダリングエンジンをnetworkdに戻す

ネットワークレンダリングエンジンがNetworkManagerに変わることで問題が発生しているため、ネットワークレンダリングエンジンをNetworkManagerからnetworkdに戻す方法となります。

/etc/netplan配下にデフォルトで生成されるyamlファイル(今回の場合、50-cloud-init.yaml)を編集してレンダリングエンジンを明示的に記載することにより、systemd-networkdで動くようになります。

/etc/netplan/50-cloud-init.yamlの編集
network:
    renderer: networkd        ←左記追加
    ethernets:
        enp0s3:
        (以下略)

上記設定を行うことでNetworkManagerからsystemd-networkdに変わってしまうことから、GUI上からのネットワーク設定はできなくなるためご注意ください。
※アイコンもネットワーク設定項目も無くなる。

対処法その3:systemd-networkdの設定も行う

systemd-networkdの状態はnetworkctlコマンドで認識されているネットワークの管理状態などを確認することができます。

networkctlの結果
IDX LINK   TYPE     OPERATIONAL SETUP
  1 lo     loopback carrier     unmanaged
  2 enp0s3 ether    routable    unmanaged

2 links listed.

仮説ですが、GUI環境をインストールすることでデフォルトネットワークエンジンがNetworkManagerに変わった際、systemd-networkd/etc/netplan配下のファイルでネットワークの判定ができなくなることで失敗しているものと思われます。

GUI環境をインストールするまではnetworkctlの結果が、systemd-networkdで管理されていないunmanagedの状態でも起動判定してくれるようですが、GUI環境をインストールしてしまうと、管理状態のネットワークにしないといけないようなので、NetworkManagerの設定はそのままに、本来のsystemd-networkdのやり方でsystemd-networkdの設定も追加する方法となります。

本来、systemd-networkdの設定を行う場合、/etc/systemd/network配下に〜.networkファイルを作成することでsystemd-networkdの管理下になるため、新規で〜.networkファイルを作成します。

今回はIPアドレスを固定させたかったため、50-wired.networkというファイル名で以下のように設定しました。

/etc/systemd/network/50-wired.network
[Match]
Name=enp0s3

[Network]
DHCP=no
DNS=8.8.8.8
DNS=8.8.4.4
NTP=ntp.nict.jp

[Address]
Address=192.168.0.51/24

[Route]
Gateway=192.168.0.1

設定後、ネットワークをリロードします。

ネットワークリロード
networkctl reload

リロード後、再度networkctlコマンドを実行して、enp0s3configuredになっていればOKです。

設定後のnetworkctlの結果
IDX LINK   TYPE     OPERATIONAL SETUP
  1 lo     loopback carrier     unmanaged
  2 enp0s3 ether    routable    configured

2 links listed.

ついでに、networkctl status enp0s3と実行すると、設定したNTPやDNSも確認することができます。

networkctl status enp0s3の結果
● 2: enp0s3
                   Link File: /usr/lib/systemd/network/99-default.link
                Network File: /etc/systemd/network/50-wired.network
                       State: routable (configured)
                Online state: online
                        Type: ether
                        Path: pci-0000:00:03.0
                      Driver: e1000
                      Vendor: Intel Corporation
                       Model: 82540EM Gigabit Ethernet Controller (PRO/1000 MT Desktop Adapter)
            Hardware Address: 08:00:27:6a:09:7d (PCS Systemtechnik GmbH)
                         MTU: 1500 (min: 46, max: 16110)
                       QDisc: pfifo_fast
IPv6 Address Generation Mode: eui64
    Number of Queues (Tx/Rx): 1/1
            Auto negotiation: yes
                       Speed: 1Gbps
                      Duplex: full
                        Port: tp
                     Address: 192.168.0.51
                              2400:xxxx:xxxx:xxxx:xxxx:xxxx:xxxx:xxxx
                              fe80::a00:27ff:fe6a:97d
                     Gateway: 192.168.0.1
                              fe80::2a0:deff:fe7d:792
                         DNS: 8.8.8.8
                              8.8.4.4
                              2400:4051:e01:d500::1
                         NTP: ntp.nict.jp
                              2404:1a8:1102::b
                              2404:1a8:1102::a
           Activation Policy: up
         Required For Online: yes
           DHCP6 Client IAID: 0xe2343f3e
           DHCP6 Client DUID: DUID-EN/Vendor:0000ab11e4a5cff67bd4f086

 5月 12 18:46:08 vmware systemd-networkd[696]: enp0s3: Configuring with /etc/systemd/network/50-wired.network.
 5月 12 18:46:08 vmware systemd-networkd[696]: enp0s3: Link UP
 5月 12 18:46:08 vmware systemd-networkd[696]: enp0s3: Gained carrier
 5月 12 18:46:09 vmware systemd-networkd[696]: enp0s3: Gained IPv6LL

今回の設定の場合、GUI上からは以下のようにnetplan-enp0s3enp0s3の2つのネットワーク設定が存在し、赤枠のenp0s3の設定が有効となっていることが確認できます。

Monosnap_20240512_185441.png

この場合、NetworkManagerも有効であり、systemd-networkdの設定も行われていることから、GUI上からネットワークの設定も行うことができ、OS起動時にsystemd-networkd-wait-online.serviceで待たされることも無くなります。

設定ファイルはNetworkManagersystemd-networkdの二重で管理しているように見えるため、運用する場合は気をつける必要がありますが、特にサービス停止等行わずに対応できるため、他の対処法よりは動作検証や影響調査が少なくて済むのではないかと思います。

おわりに

Ubuntu 24.04は公開されてから1ヶ月も経っておらず、情報もまだ少なかったので苦労しましたが、調査をしたことで、Ubuntu 24.04のネットワークサービスの構成やUbuntu ServerUbuntu Desktopの違いなど、なんとなく知ることができました。

以前のLTSとなるUbuntu 22.04から比較しても色々と変わっているところが多く、ネットワークインストールがどうしてもうまくいかなかったり、まだ使いたいアプリが対応していなかったりと、問題は山積みですが、自宅サーバなのでぼちぼち改善していこうと思います。

5
7
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
7

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?