strongSwan kekal mati selepas peer but semula: pulihkan satu terowong
Tinggalkan but semula daemon. Letakkan permulaan dan DPD pada sambungan yang mesti kembali, kemudian sahkan mengikut nama dan buktikan perkhidmatan, bukan daemon.
Gerbang jauh but semula, kembali dalam satu minit, dan daemon strongSwan tempatan terus berjalan sementara terowong masih mati. Tugas cron yang grep ESTABLISHED dan but semula daemon akhirnya akan menutupinya, dan ia juga akan memutuskan setiap terowong tidak berkaitan pada mesin sambil mungkin terlepas yang gagal. Pemulihan milik sambungan yang mesti kembali, dinyatakan dalam tetapan yang bertahan selepas reload. Runbook ini menyediakannya untuk satu sambungan dan membuktikan hasilnya mengikut nama.
Tinggalkan but semula global, simpan buktinya
But semula daemon membawa dua kecacatan khusus: ia memusnahkan keadaan setiap sambungan, dan ia tidak memberitahu anda peristiwa mana yang sebenarnya gagal. Teks status yang anda grep mungkin datang dari sambungan lain, sementara child yang diperlukan duduk terbiar kerana tiada apa yang mencetuskannya.
Baca sambungan yang dimuatkan dan persatuan yang aktif sebelum mengubah apa-apa, supaya anda mempunyai gambaran sebelum untuk dibandingkan selepas peer kembali.
swanctl --list-conns
swanctl --list-sas
Letakkan permulaan dan cubaan semula pada sambungan yang kembali
Dalam penggunaan swanctl.conf tetapan ini tinggal pada peringkat sambungan dan child, bukan dalam dasar global. Serpihan di bawah ialah contoh dari sisi pemula yang menganggap cadangan, pengesahan dan pemilih sudah betul.
connections {
branch {
keyingtries = 0
dpd_delay = 30s
children {
private-lan {
start_action = trap|start
dpd_action = restart
}
}
}
}
start_action menentukan apa yang berlaku apabila child dimuatkan: start memulakan serta-merta, manakala trap memasang dasar yang mencetuskan permulaan apabila trafik yang sepadan muncul. Menulis trap|start memerlukan strongSwan 5.9.6 atau lebih baharu, jadi semak versi sebelum menyalin baris itu. dpd_action=restart meminta rundingan baharu sebaik sahaja peer diisytiharkan mati, dan keyingtries=0 pada peringkat sambungan membenarkan cubaan selanjutnya sehingga berjaya atau ralat kekal. Di bawah IKEv2, dpd_timeout tidak memberi kesan sama sekali, kerana penghantaran semula biasa yang menentukan bila peer tidak bertindak balas.
Kelewatan dalam contoh itu ialah titik permulaan, bukan tarikh akhir sejagat. Pilihnya berdasarkan berapa lama but semula peer mengambil masa dan berapa banyak penghantaran semula yang anda sanggup tanggung.
Ketahui peristiwa mana yang anda pulihkan
Tiga kegagalan kelihatan serupa pada papan pemuka dan memerlukan tetapan berbeza. Sambungan awal yang tidak pernah naik ialah masalah konfigurasi atau kebolehcapaian. Peer yang berhenti menjawab ialah kes DPD. Child yang ditutup secara eksplisit oleh peer ialah peristiwa dasar dengan close_action sendiri, yang tidak pernah diperhatikan DPD. Membaca log di sekitar gangguan memberitahu anda yang mana antara tiga, dan jawapannya mengubah pembaikan.
Jangan tambah permulaan semula yang agresif pada sambungan yang sengaja ditutup oleh pengendali untuk penyelenggaraan, jika tidak terowong muncul semula di tengah tetingkap. Untuk reka bentuk atas permintaan, trap yang dikekalkan sudah cukup, kerana trafik yang sepadan membina semula child tanpa sebarang pemasa.
Sahkan mengikut nama, bukan status daemon
Baca sambungan dan child-nya mengikut nama semasa peer masih mati, kemudian sekali lagi apabila ia kembali; perbezaan antara kedua-dua output itu ialah buktinya.
swanctl --initiate --child private-lan
swanctl --terminate --ike branch
Kemudian sahkan perkhidmatan, bukan persatuan. Persatuan keselamatan child yang baharu serta permintaan yang berjaya ke destinasi peribadi di belakangnya ialah pasangan fakta yang penting, dan daemon yang berjalan dengan terowong tidak berkaitan yang sihat tidak membuktikan kedua-duanya.
Jika child tidak pernah memulakan, semak sama ada trafik ujian sepadan tepat dengan pemilih yang dikonfigurasikan, termasuk protokol dan port. Jika ia memulakan dan gagal, baca ralat pengesahan atau cadangan daripada menyembunyikannya di sebalik gelung tanpa henti, kerana keyingtries=0 akan mengulangi penolakan kekal selama-lamanya.
Muatkan perubahan dalam tetingkap dan uji semula
Muat semula lebih selamat daripada but semula daemon, dan ia masih tidak percuma: menggantikan atau memunggah child boleh menutup persatuan yang telah dimulakan atau menjatuhkan trap-nya.
Muatkan semasa tetingkap penyelenggaraan, simpan fail sebelumnya, dan sahkan bahawa sambungan muncul dengan tetapan yang anda maksudkan dan bukan dengan nilai lalai.
swanctl --load-conns
swanctl --list-conns
Gulung balik dengan memulihkan fail sebelumnya dan memuatkannya semula, kemudian ulangi dua arahan yang sama. Terowong yang hanya kembali selepas but semula daemon belum dibaiki, ia telah ditetapkan semula.