
systemdを使用して自宅のサーバーのリバーストンネルを自動的に設定するようにautosshを取得しようとしています。 /etc/systemd/systemにautossh.serviceという単位を設定しました。
インターネットに接続した後にサービスを開始すると、すべてがうまく機能します。しかし、リリース時にはそうではありません。 「ホスト名を解決できません」はインターネットに接続されていないため表示できません。
/etc/systemd/system/autossh.service に次の行があります。
After=network-online.target
理論的には、この問題は解決されるべきですが、そうではありません。起動時にコマンドが失敗し(まだオンラインになっていないため、ホスト名を解決できないと表示されます)、再試行しません。
この問題をどのように解決できますか?
答え1
それは次のとおりです。
Restart=always
RestartSec=120
おそらく...
または以下を参照してください。StartLimitInterval 以降、Systemd サービスが自動的に再起動されます。
答え2
a)StartLimitIntervalSec=12
の先頭に[Unit]を追加してみてくださいautossh.service
。
b) Type=simple
[サービス]セクション。
c) デーモンを再ロードしますsudo systemctl daemon-reload
。
d) 再度有効にしますsudo systemctl enable autossh
。
e) 始めますsudo systemctl start autossh
。
f) 再起動
成功しましたか?
答え3
また、以下を追加する必要があります。
Wants=network-online.target
これにより、サービスが開始される前に設定されたすべてのネットワークデバイスが起動され、IPアドレスが割り当てられます。
答え4
ユニットファイルを待つのが良い目標のように聞こえませんか?
nss-find.target
すべてのホスト/ネットワークネームサービス検索の同期ポイントのターゲットとして使用する必要があります。これは、nss-user-lookup.targetを使用する必要があるUNIXユーザー/グループ名の検索とは関係ありません。完全なホスト/ネットワーク名解決を必要とするすべてのサービスは、このターゲットの後に注文する必要がありますが、ドラッグしてはいけません。 systemdは、「$ named」機能を参照するLSBを持つすべてのSysV initスクリプトサービスユニットヘッダに、このターゲットユニットのAfter =型の依存関係を自動的に追加します。