Autodshにsystemdを使用して自宅にあるサーバーへの逆方向トンネルを自動的に設定させようとしています。/etc/systemd/systemにautossh.serviceというユニットを設定しました
インターネットに接続した後でサービスを開始すると、すべて正常に動作します。ただし、起動時はそうではありません。インターネットに接続されていないため、「ホスト名を解決できませんでした」と表示されません。
/etc/systemd/system/autossh.serviceに次の行があります
After=network-online.target
これは理論的にはこの問題を処理するはずですが、そうではありません。コマンドは起動時に失敗し(まだオンラインではないため、ホスト名を解決できなかったと表示されます)、再試行しません。
どうすればこれを解決できますか?
a)StartLimitIntervalSec=12
の最初に[ユニット]にautossh.service
を追加してみてください。
b)そして、[Service]部分のType=simple
。
c)デーモンSudo systemctl daemon-reload
をリロードします。
d)Sudo systemctl enable autossh
を再度有効にします。
e)Sudo systemctl start autossh
を起動します。
f)再起動
うまくいきましたか?
以下も追加する必要があります。
Wants=network-online.target
これにより、サービスが開始される前に、構成されたすべてのネットワークデバイスが起動し、IPアドレスが割り当てられます。
crontab -e
@reboot autossh ..... OR /path/to/some/script
これはあなたのユニットファイルを待つより良いターゲットのように聞こえませんか?
nss-lookup.target
すべてのホスト/ネットワークネームサービスルックアップの同期ポイントとして使用する必要があるターゲット。これは、nss-user-lookup.targetを使用する必要があるUNIXユーザー/グループ名のルックアップとは無関係であることに注意してください。完全なホスト/ネットワーク名前解決の可用性が不可欠であるすべてのサービスは、このターゲットの後に注文する必要がありますが、それを引き込まないでください。systemdは、このターゲットユニットのタイプAfter =の依存関係を、LSBを持つすべてのSysV initスクリプトサービスユニットに自動的に追加します。 「$ named」機能を参照するヘッダー。