Mencantumkan koneksi dalam konfigurasi strongSwan hanya membuktikan bahwa sebuah definisi telah dimuat. Itu tidak berarti peer telah dihubungi, bahwa ada SA IKE, atau bahwa ada lalu lintas yang dilindungi. Daemon memperlakukan definisi dan asosiasi hidup sebagai objek terpisah, dan jarak di antara keduanya adalah pilihan desain yang disengaja. Mengetahui objek mana yang sedang Anda periksa mengubah kegagalan yang kabur menjadi perintah berikutnya yang spesifik.

Memuat bukan menghubungkan

Koneksi yang dimuat adalah pernyataan tentang apa yang nantinya dapat dinegosiasikan: alamat peer, kredensial, proposal, dan pemilih lalu lintas. Tidak ada apa pun dalam pernyataan itu yang mengharuskan daemon menelepon seseorang. Gateway dapat menunggu pihak lain, memulai sendiri saat boot, atau menunggu lalu lintas yang cocok untuk membangunkannya. Ketiganya sah, dan ketiganya terlihat sama dalam berkas konfigurasi sampai Anda membaca kebijakan awal.

Operator mendapat masalah karena membaca daftar definisi sebagai daftar status. Profilnya ada, jadi terowongan dianggap aktif, dan jam berikutnya habis untuk men-debug rute bagi asosiasi yang tidak pernah dibangun.

Kesalahan sebaliknya sama umumnya. Profil yang hilang membuat orang mencari gangguan jaringan padahal konfigurasi tidak pernah dimuat. Sebutkan objeknya, lalu jalankan perintah yang mengamatinya.

Tiga objek, tiga pengamatan

strongSwan menyimpan definisi yang dimuat, sebuah SA IKE, dan sebuah SA CHILD. Yang pertama adalah konfigurasi, yang kedua adalah hubungan kendali yang terautentikasi, dan yang ketiga adalah perlindungan yang dinegosiasikan untuk lalu lintas terpilih. Ketiganya bahkan punya nama terpisah, sehingga profil bernama hq dapat memiliki child bernama hq-lan.

Tabel memetakan setiap lapisan ke perintah yang menampilkannya. Baca baris sebelum membaca log.

LayerWhat it containsCommand
DefinitionPeer addresses, credentials, proposals, and traffic selectorsswanctl --list-conns
IKE SAOne authenticated control channel to the peerswanctl --list-sas
CHILD SAKeys and selectors for the traffic being protectedChild rows under the IKE SA

Meminta child terlebih dahulu membangun SA IKE induknya bila belum ada. Meminta SA IKE saja adalah panggilan lain. Kanal kendali yang terautentikasi dengan baik tidak menjamin child yang Anda minta.

Perbedaan itu penting saat terjadi kegagalan sebagian. Sebuah SA IKE bisa sehat sementara child gagal karena ketidakcocokan pemilih atau proposal yang tidak diterima peer. Kedua objek gagal karena alasan berbeda, jadi keduanya layak mendapat pengamatan terpisah.

Pilih tindakan awal dengan sengaja

Dalam swanctl.conf, start_action sebuah child menentukan perilaku setelah pemuatan. Nilai bawaan none membiarkan definisi untuk inisiasi manual atau penggunaan sebagai responder. start memutarnya, sementara trap meninggalkan kebijakan yang bernegosiasi begitu lalu lintas yang cocok muncul.

Jadi «pemuatan tidak pernah memulai terowongan» dan «pemuatan selalu memulai satu» keduanya salah. Tindakan itu bagian dari profil dan harus cocok dengan peran peer. Dua gateway yang keduanya menunggu pihak lain menghasilkan kesunyian, bukan terowongan.

Dengan trap, lalu lintas harus cocok dengan pemilih, sehingga ping yang tidak terkait tidak akan membangunkan apa pun. Dengan start, alamat peer harus dapat digunakan dan kedua pihak harus sepakat soal autentikasi dan proposal. Tidak ada tindakan yang menggantikan pemeriksaan syarat itu.

Pemulihan adalah kebijakan tersendiri

Awal bukanlah keepalive. Deteksi peer mati, penutupan eksplisit oleh peer, pembaruan kunci, dan mulai ulang proses adalah peristiwa siklus hidup yang berbeda dengan pengaturannya sendiri. Konfigurasikan masing-masing dengan sengaja daripada mengharapkan satu awal mula mencakup semuanya.

Terowongan yang naik saat boot dan mati satu jam kemudian adalah pertanyaan pemulihan. Kebijakan awal sudah melakukan tugasnya lalu berhenti berarti. Lihat pengaturan DPD dan pembaruan kunci sebelum menyalahkan negosiasi awal.

Mengganti definisi yang dimuat adalah operasi tersendiri. Kebijakan awal non-bawaan punya tindakan kebalikan yang terdokumentasi, dan memuat ulang adalah perubahan operasional, bukan anggapan bahwa setiap asosiasi diperbarui di tempat. Lakukan muat ulang secara bertahap, di tempat sambungan ulang dapat diterima. Pertahankan konfigurasi lama sampai yang baru terbukti.

Periksa apa yang ada sebelum men-debug perutean

Jalankan ketiga pengamatan berurutan: definisi yang dimuat, SA IKE aktif, dan entri child. Setiap jawaban mempersempit pertanyaan berikutnya. Lewati satu langkah dan akhirnya Anda men-debug lapisan yang tidak pernah dibangun.

Mulailah dari yang dimuat dan yang benar-benar terbentuk:

swanctl --list-conns
swanctl --list-sas

Jika child hilang padahal profilnya benar, inisiasi dengan namanya dan amati apa yang terjadi. Keluaran biasanya menyebutkan apakah induknya naik lebih dahulu.

swanctl --initiate --child hq-lan

SA CHILD yang aktif bukan garis finis. Aturan penerusan, rute, dan otorisasi aplikasi itu sendiri masih harus selaras. Siklus hidup menjawab apa yang dinegosiasikan; ia tidak dapat memutuskan siapa yang boleh memakai layanan.

Artikel terkait