systemd-socket-proxyd boleh hidup lebih lama daripada terowong SSH SOCKSnya
Selaraskan kitaran hayat pembantu pemajuan soket dengan kebergantungan SSH supaya terowong mati tidak meninggalkan bahagian hadapan yang kelihatan sihat.
Jika port hadapan menerima sambungan selepas SSH keluar, periksa ketiga-tiga unit. Soket pengaktifan, pembantu systemd-socket-proxyd dan pendengar SOCKS yang dicipta SSH mempunyai jangka hayat berbeza:
| Soket | Pembantu | SSH | Tafsiran |
|---|---|---|---|
| Mendengar | Tidak aktif | Tidak aktif | Mungkin menunggu permintaan secara normal |
| Mendengar | Aktif | Aktif | Proses wujud; kesihatan destinasi seterusnya belum terbukti |
| Mendengar | Aktif | Tidak aktif | Bahagian hadapan boleh menerima kerja tanpa bahagian belakangnya |
Memulakan pembantu dan SSH bersama tidak menentukan peralihan berhenti kemudian. Bagi pembantu yang tidak boleh kekal aktif tanpa terowongnya, systemd mendokumenkan hubungan yang lebih kukuh:
[Unit]
BindsTo=ssh-socks.service
After=ssh-socks.serviceGunakan ia pada unit yang sesuai dalam reka bentuk sebenar. Requires= dan susunan hanya menangani sebahagian hubungan. Bahagian hadapan yang sudah aktif mungkin tidak akan mencetuskan pengaktifan semula selepas bahagian belakangnya hilang. Periksa juga keadaan unit gagal dan had kadar permulaan; kebergantungan tidak mengatasi had tersebut.
Seterusnya tetapkan kesediaan permulaan. After= menyusun tugas, bukan kesediaan pendengar SSH Type=simple. Tidur tetap boleh gagal semasa pengesahan perlahan. Gunakan kontrak permulaan yang menetapkan pendengar yang diperlukan; ExitOnForwardFailure=yes menangkap kegagalan persediaan pemajuan, bukan ketersampaian destinasi kemudian.
Akhir sekali, tentukan keluar melahu dan pengaktifan semula. Pilihan keluar melahu daemon pemajuan berkaitan ketiadaan sambungan aktif, bukan kekurangan bait pada sambungan terbuka. Sesi senyap boleh mengekalkannya aktif. Permintaan seterusnya harus mengaktifkan perkhidmatan yang diperlukan, dan gelung mula semula harus kekal terhad dan kelihatan. Mencipta semula pendengar menerima sambungan baharu; ia tidak memulihkan sesi TCP yang diproksi lama.