network.target が network-online.target のように動作するように、system.d サービスの起動依存関係を取得するにはどうすればよいですか?

network.target が network-online.target のように動作するように、system.d サービスの起動依存関係を取得するにはどうすればよいですか?

私は、Web サーバーを実行する目的で CentOS8 (8.1.1911) の最小インストールを実行しています。

/etc/systemd/system/multi-user.target.wants/以下のようなサービス

  • httpd.service

  • mariadb.service

  • named.service

  • squid.service

  • sshd.service

  • postfix.service

のみがありAfter=network.target、ありませんnetwork-online.target

これは問題です。システムの起動時に、ネットワークの準備が整う前にこれらのサービスが開始され、どのリスニング ポートにもバインドできないためです。幸い、いくつかのサービスsshdはバインドを再試行し続け、ネットワークがオンラインになると成功します。最終的に成功するまで、バインドの試行に失敗することがあります/var/log/messages。ただし、すべてのサービスが再試行するわけではなく、最初の失敗の後は停止したままになります。

Wants1つの解決策は、After各サービスにカスタムパラメータを追加することですsystemctl。つまり、

systemctl edit httpd

そして追加する

[Unit]
Wants=network-online.target
After=network-online.target

これは機能し、サービスはネットワークがオンラインになるまで待機し、再起動時に正常にバインドされて起動します。

さて、私の質問です。

追加する各サービスを手動で編集するのは、network-online.targetメンテナンスの手間がかかるうえ、将来インストールされる新しいサービスでこの手順を忘れてしまう可能性もあるため、避けたいです。必要なのは、/ が付いたすべてのサービスがWantsAfter待機network.targetしているかのように動作するように、ポリシーを設定したり、システム全体に変更を加えたりする方法ですnetwork-online.target

  • NetworkManagerも待機するので、これは問題を引き起こしますかnetwork.target?NetworkManager何か他のものを待機するように変更できますか?
  • network.targetすべて待機すると中断される可能性のある他のサービスはありますかnetwork-online.target?
  • 他に創造的な解決策はありますか?

関連情報