L2TP: sinyal fatal 15, NO_PROPOSAL_CHOSEN, dan modp1024 yang hilang
Sinyal fatal 15 bersama NO_PROPOSAL_CHOSEN adalah ketidakcocokan fase 2: entah daemon tidak lagi menawarkan modp1024, atau nilai fase 1 berada di kolom fase 2.
Koneksi Anda menggantung, klien keluar, dan baris terakhir di layar adalah death_handler: Fatal signal 15 received. Baris itu melaporkan penghentian, bukan penyebab. Satu baris sebelumnya di log IPsec hampir selalu ada NO_PROPOSAL_CHOSEN, dan pasangan itu menunjuk ke fase 2 pertukaran, tempat kedua pihak membandingkan pilihan enkripsi dan hash lalu berhenti ketika tidak ada yang sama. Kredensial belum dikirim pada tahap itu, jadi mengetik ulang kata sandi tidak dapat mengubah hasilnya.
Biasanya dua hal mengosongkan irisan itu pada klien Linux. Daemon lokal mungkin tidak lagi menerapkan grup Diffie-Hellman yang diminta profil, atau profil membawa usulan fase 1 di kolom fase 2. Keduanya meninggalkan jejak di log, dan tidak satu pun merupakan masalah akun.
Apa yang sebenarnya dikatakan kedua pesan itu
IKE bernegosiasi dalam beberapa tahap. Fase 1 membangun kanal terlindungi dan memilih algoritmanya sendiri; fase 2, SA anak, membawa lalu lintas di bawah himpunan terpisah. NO_PROPOSAL_CHOSEN adalah notifikasi yang dikembalikan penjawab ketika tidak ada kombinasi yang ditawarkan dapat diterima, dan muncul sebagai [ HASH N(NO_PROP) ] di dalam pertukaran INFORMATIONAL.
Sinyal 15 adalah peristiwa lain: sesuatu menyuruh proses lokal berhenti dan penanganannya mencatatnya. Ketika kedua baris muncul bersama, urutannya kausal, penolakan dulu lalu penghentian.
Baca negosiasi sebelum menyentuh kredensial
Naikkan tingkat log di tempat daemon menulis, lalu sambungkan ulang sambil mengamati keluarannya. Pada host NetworkManager, plugin L2TP meneruskan tingkat itu ke backend, dan pesan masuk ke journal atau berkas syslog klasik tergantung distribusinya. Salah satu dari ini akan menunjukkan pertukarannya: journalctl -f -u NetworkManager | grep -Ei 'pluto|charon|no_prop|proposal' atau tail -f /var/log/syslog | grep -Ei 'pluto|charon|ike'.
Baris yang menyebut pluto berasal dari libreswan, charon dari strongSwan, dan keduanya menggambarkan kondisi yang sama dengan kata berbeda. Bentuk yang layak dicari adalah yang menyebut grup yang hilang, misalnya algorithm 'modp1024' is not supported, karena mengubah kegagalan kabur menjadi spesifik.
Ke mana modp1024 pergi
Grup 2 Diffie-Hellman cukup lemah sehingga beberapa distribusi berhenti mengompilasinya ke dalam libreswan sejak 3.30. Profil yang ditulis bertahun-tahun lalu, atau diambil dari panduan gateway yang hanya mencantumkan aes128-sha1-modp1024, lalu meminta daemon lokal melakukan sesuatu yang sama sekali tidak mampu dilakukannya. Build NetworkManager-l2tp yang lebih baru membuat hasil itu lebih mungkin: sejak 1.2.16 mereka mengganti himpunan dengan usulan bergaya Windows 10 dan iOS serta melepas modp1024 begitu libreswan terdeteksi. Ujung lawan sering tidak bersalah dan tetap menawarkan persis grup yang Anda konfigurasikan.
Asimetri itulah yang membuat kegagalan terasa acak. Klien lama tersambung, profil yang sama di laptop yang diperbarui tidak, dan konfigurasi server tidak pernah bergeser. Kerusakannya dilakukan oleh pergeseran versi.
Dua perbaikan dengan dampak berbeda
Perbaikan murahnya adalah berhenti menuliskan algoritma secara hard-code. Kosongkan kedua kolom usulan di editor dan biarkan plugin memilih himpunan yang diterima ujung lawan; jika gateway mendukung grup modern, negosiasi selesai tanpa kerja tambahan.
Perbaikan kedua menjaga gateway lama tetap terjangkau dengan memasang strongSwan, yang paketnya masih menerapkan grup 2 di sebagian besar distribusi. Itu penukaran daemon, jadi ada harganya: pastikan apakah tunnel lain di host bergantung pada konfigurasi libreswan sebelum menghapusnya, dan perkirakan penolakan SELinux antara NetworkManager dan plugin strongSwan di Fedora. Penolakan itu muncul di log audit, bukan di jejak IKE, itulah sebabnya tunnel bisa terlihat rusak tepat setelah pemasangan yang berhasil. Urutan yang berhasil adalah dnf install strongswan dulu, lalu rpm -e libreswan.
String usulan yang cocok, dan jebakan di sekitarnya
Ketika kolom harus diisi tangan, fase 1 dan fase 2 mengambil nilai berbeda. Pasangan yang diketahui berhasil terhadap ujung bergaya Meraki menawarkan aes128-sha1-modp1024 di fase 1 dengan 3des-sha1-modp1024 di belakangnya, keduanya ditutup tanda seru yang membuat himpunannya ketat, sehingga hanya usulan itu yang pernah dikirim.
Fase 2 lalu menyempit ke aes128-sha1 dan 3des-sha1 dengan penanda ketat yang sama dan tanpa akhiran Diffie-Hellman sama sekali. Baris fase 2 yang membawa -modp1024 adalah nilai fase 1 di kolom yang salah, dan penjawab menolaknya pada setiap percobaan ulang. Salin baris itu ke profil kedua dan profil kedua gagal dengan cara yang sama, dan begitulah satu salah ketik menjadi insiden seluruh armada.
Kesalahan lain memakai jendela sembul yang sama tanpa merupakan ketidakcocokan usulan. Di KDE jenis L2TP dapat terdaftar dengan plugin terpasang sementara setiap koneksi langsung mati, karena editor koneksi dan pembantu waktu jalan dikirim sebagai paket terpisah. Host tanpa layar dapat memakai ulang profil dari desktop yang berfungsi: salin dari /etc/NetworkManager/system-connections/, atur mode ke 600, lalu jalankan nmcli con reload. Nyalakan dengan nmcli con up id work-l2tp, karena bentuk telanjang menginginkan UUID, dan hapus entri ifname yang usang, jika tidak manajer menjawab Could not find source connection padahal semua hal lain benar.
Kunci yang dibagikan sebelumnya dapat disimpan sebagai teks biasa atau sebagai 0s diikuti base64; kedua bentuk berfungsi, tetapi nilainya harus cocok dengan gateway byte demi byte, termasuk spasi di akhir yang Anda salin bersamanya.