systemd-socket-proxyd peut survivre à son tunnel SSH SOCKS
Alignez le cycle de vie d'un auxiliaire de transfert de socket sur sa dépendance SSH, afin qu'un tunnel mort ne laisse pas une façade d'apparence saine.
Si le port frontal accepte encore des connexions après la sortie de SSH, examinez les trois unités. Le socket d'activation, l'auxiliaire systemd-socket-proxyd et l'écouteur SOCKS créé par SSH ont des durées de vie distinctes :
| Socket | Auxiliaire | SSH | Interprétation |
|---|---|---|---|
| À l'écoute | Inactif | Inactif | Peut attendre normalement la demande |
| À l'écoute | Actif | Actif | Des processus existent ; la santé de la destination finale reste non prouvée |
| À l'écoute | Actif | Inactif | La façade peut accepter du travail sans son backend |
Démarrer l'auxiliaire et SSH ensemble ne définit pas la transition d'arrêt ultérieure. Pour un auxiliaire qui ne doit pas rester actif sans son tunnel, systemd documente la relation plus forte :
[Unit]
BindsTo=ssh-socks.service
After=ssh-socks.service
Appliquez-la à l'unité appropriée dans la conception réelle. Requires= et l'ordonnancement ne couvrent qu'une partie de la relation. Une façade déjà active risque sinon de ne plus jamais déclencher d'activation après la disparition de son backend. Vérifiez aussi l'état des unités en échec et les limites de fréquence de démarrage ; les dépendances ne les annulent pas.
Établissez ensuite l'état prêt au démarrage. After= ordonne des tâches, pas l'état prêt d'un écouteur SSH Type=simple. Une attente fixe peut échouer lors d'une authentification lente. Utilisez un contrat de démarrage qui établit l'écouteur requis ; ExitOnForwardFailure=yes capte un échec de configuration du transfert, pas l'accessibilité ultérieure de la destination.
Enfin, définissez la sortie d'inactivité et la réactivation. L'option de sortie d'inactivité du démon de transfert concerne l'absence de connexions actives, pas le manque d'octets sur une connexion ouverte. Une session silencieuse peut le maintenir actif. La demande suivante devrait activer les services requis, et les boucles de redémarrage devraient rester bornées et visibles. Recréer l'écouteur admet de nouvelles connexions ; cela ne restaure pas les anciennes sessions TCP relayées.