web-dev-qa-db-ja.com

DNSサービスの後に確実に開始するためにsystemdサービスを作成する方法は?

Kubuntu 19.04にアップグレードした後、DNSサービスの初期化後に開始できるようにサービスを作成する方法がわかりません。

これまでは、After=network.target、しかし今はそれは機能しません。私も試しましたAfter=network-online.target、しかし運がありません。

だから問題はsystemd-resolved、どうすればこの問題を解決できますか?


更新:

ERROR: getaddrinfo: Temporary failure in name resolution
ERROR: failed to resolve the provided hostname

これらは2つの関連ログです。したがって、問題がDNSサービスに関連していることを確認できます。

2
Sraw

サービスファイルに依存関係を追加してください:

After=nss-lookup.target

これにより、ホスト/名前のルックアップが機能するようになります。

詳細はドキュメントにあります: https://www.freedesktop.org/software/systemd/man/systemd.special.html

nss-lookup.target

すべてのホスト/ネットワークネームサービスルックアップの同期ポイントとして使用する必要があるターゲット。これは、nss-user-lookup.targetを使用する必要があるUNIXユーザー/グループ名のルックアップとは無関係であることに注意してください。完全なホスト/ネットワーク名前解決の可用性が不可欠であるすべてのサービスは、このターゲットの後に注文する必要がありますが、それを引き込まないでください。systemdは、このターゲットユニットのタイプAfter =の依存関係を、LSBを持つすべてのSysV initスクリプトサービスユニットに自動的に追加します。 「$ named」機能を参照するヘッダー。

ネットワークを完全に待機するために、systemd https://www.freedesktop.org/wiki/Software/systemd/NetworkTarget/ のドキュメントで、サービスに追加するように指示されています。

After=network-online.target
Wants=network-online.target

関連する「待機」サービスが有効になっていることを確認するには:

$ systemctl is-enabled NetworkManager-wait-online.service systemd-networkd-wait-online.service
disabled
enabled
2
user228505