systemd-socket-proxyd dapat hidup lebih lama dari terowongan SSH SOCKS-nya
Selaraskan siklus hidup pembantu penerusan soket dengan ketergantungannya pada SSH agar terowongan yang mati tidak meninggalkan front end yang tampak sehat.
Jika port depan masih menerima koneksi setelah SSH keluar, periksa ketiga unit. Soket aktivasi, pembantu systemd-socket-proxyd, dan pendengar SOCKS yang dibuat SSH memiliki masa hidup berbeda:
| Soket | Pembantu | SSH | Tafsir |
|---|---|---|---|
| Mendengarkan | Tidak aktif | Tidak aktif | Mungkin menunggu permintaan secara normal |
| Mendengarkan | Aktif | Aktif | Proses ada; kesehatan tujuan akhir belum terbukti |
| Mendengarkan | Aktif | Tidak aktif | Front end dapat menerima pekerjaan tanpa backend-nya |
Menjalankan pembantu dan SSH bersama tidak menentukan transisi berhenti berikutnya. Untuk pembantu yang tidak boleh tetap aktif tanpa terowongannya, systemd mendokumentasikan hubungan yang lebih kuat:
[Unit]
BindsTo=ssh-socks.service
After=ssh-socks.service
Terapkan pada unit yang sesuai dalam desain sebenarnya. Requires= dan pengurutan hanya menangani sebagian hubungan. Front end yang sudah aktif mungkin tidak akan pernah memicu aktivasi lagi setelah backend-nya hilang. Periksa juga status unit yang gagal dan batas laju mulai; dependensi tidak mengesampingkan batas tersebut.
Lalu tetapkan kesiapan mulai. After= mengurutkan tugas, bukan kesiapan pendengar SSH Type=simple. Jeda tetap dapat gagal saat autentikasi lambat. Gunakan kontrak mulai yang menetapkan pendengar yang dibutuhkan; ExitOnForwardFailure=yes menangkap kegagalan penyiapan penerusan, bukan keterjangkauan tujuan nanti.
Terakhir, tetapkan keluar saat menganggur dan aktivasi ulang. Opsi keluar saat menganggur daemon penerusan menyangkut tidak adanya koneksi aktif, bukan kurangnya bita pada koneksi terbuka. Sesi tenang dapat membuatnya tetap aktif. Permintaan berikutnya seharusnya mengaktifkan layanan yang diperlukan, dan perulangan mulai ulang seharusnya tetap terbatas dan terlihat. Membuat ulang pendengar menerima koneksi baru; itu tidak memulihkan sesi TCP lama yang diproksikan.