Mengapa peer WireGuard yang dihapus kembali setelah restart
Dua keadaan memegang daftar peer: antarmuka yang berjalan dan apa pun yang menulisnya saat boot. Hapus dari keduanya, dan periksa SaveConfig sebelum mengubah apa pun.
Identitas menghilang dari antarmuka yang berjalan dan perubahannya tampak selesai. Setelah layanan dijalankan ulang, ia kembali, yang terbaca seolah WireGuard mengabaikan perintahnya. Yang sebenarnya terjadi lebih sederhana: konfigurasi saat boot masih memuat peer itu.
Dua keadaan memegang daftar itu. Pencabutan baru nyata ketika keduanya kehilangannya.
Apa yang sebenarnya diubah wg set
Perintah wg set wg0 peer <public-key> remove menyunting antarmuka yang berjalan di dalam kernel. Ia tidak menulis apa pun ke disk. Berkas konfigurasi, profil NetworkManager, atau keadaan tersimpan router tetap tanpa sentuhan. Itu memang rancangannya, bukan bug.
Pemisahan itu disengaja, karena alat ini tidak tahu siapa pemilik antarmuka. Perintah saat runtime harus aman dijalankan pada antarmuka yang dikelola hal lain. Ia tidak bisa menebak di mana salinan tahan lama berada. Akibatnya mudah dikatakan: penghapusan saat runtime secara bawaan bersifat sementara.
Jadi peer kembali pada restart berikutnya, dan kembali dengan prefiks yang diizinkan semula. Apa pun yang dirutekan melaluinya juga dibuat ulang. Identitas yang dianggap sudah dicabut karenanya bisa mencapai tujuan lamanya setelah pemuatan ulang. Tidak ada apa pun di keluaran runtime yang memperingatkan siapa pun.
Temukan penulisnya sebelum menyunting berkas
Antarmuka punya pemilik. Bisa wg-quick yang membaca berkas, NetworkManager yang menerapkan profil, konfigurasi antarmuka router itu sendiri, atau titik masuk kontainer yang membuat ulang antarmuka saat mulai. Menyunting berkas yang tidak pernah dibaca pemiliknya tidak menghasilkan perubahan permanen sama sekali.
Mulai dari antarmuka yang berjalan dan kenali kunci publiknya, karena nama dan alamat adalah pengenal yang lebih lemah daripada kuncinya sendiri. Lalu bandingkan daftar itu dengan konfigurasi tersimpan yang benar-benar dibaca pemiliknya.
wg show wg0 peers
wg show wg0 allowed-ips
systemctl status wg-quick@wg0 --no-pager
ls -l /etc/wireguard
Antarmuka hidup yang daftar peer dan isi berkasnya tidak cocok adalah seluruh diagnosisnya. Konfigurasi tersimpan menang saat boot, dan keadaan runtime kalah. Bandingkan keduanya sebelum mengubah salah satunya.
Jebakan SaveConfig
wg-quick menambahkan lipatan yang menangkap orang yang menyunting berkas dengan tangan. Saat SaveConfig aktif, perilaku pematikannya yang terdokumentasi menulis keadaan runtime saat ini ke atas berkas konfigurasi.
Itu membalik arah persistensi yang biasa. Anda menghapus peer dari berkas, lalu layanan berhenti. Keadaan yang berjalan ditulis kembali ke atas suntingan Anda dan memulihkan peer yang baru saja Anda hapus.
Karena itu urutannya penting: sunting berkas selagi antarmuka mati, atau nonaktifkan SaveConfig sebelum menyunting, lalu nyalakan antarmuka kembali dan pastikan apa yang dimuat. Suntingan tangan saat antarmuka menyala adalah perlombaan dengan penulisan saat mati.
Ubah kedua keadaan, lalu muat ulang
Di runtime, hapus peer berdasarkan kuncinya. Di konfigurasi tersimpan, hapus blok yang sama melalui operasi yang didukung pemiliknya, bukan dengan menyunting di sekitarnya.
Lalu tinjau apa yang dibawa peer itu. Jaringan terutekan yang dulu milik identitas yang dicabut harus dipindahkan dengan sengaja atau dihapus, bukan diwarisi diam-diam oleh peer mana pun yang disunting berikutnya.
Biarkan jalur pemulihan terbuka bila gateway juga membawa akses administratif Anda. Restart yang menghapus peer yang salah adalah gangguan yang Anda buat sendiri. Hal yang sama berlaku untuk restart yang menghapus rute yang salah.
Seperti apa uji yang lulus
Muat ulang atau jalankan ulang layanan, lalu baca daftar peer sekali lagi. Kunci lama harus tidak ada, dan peer yang ingin Anda pertahankan harus masih ada dan berfungsi.
wg show wg0 peers
wg show wg0 allowed-ips
sudo wg-quick down wg0 && sudo wg-quick up wg0
wg show wg0 peers
Di mana situasinya memungkinkan, pastikan identitas lama tidak lagi mencapai sumber dayanya yang dulu. Daftar antarmuka yang rapi sebelum restart adalah separuh uji. Separuh lainnya adalah apa yang masih bisa dilakukan identitas itu sesudahnya.
Jika suatu pengelola terus memulihkan peer, berhentilah mengulang penghapusan tingkat rendah. Perbaiki inventaris yang dibaca penulis itu, karena sampai saat itu setiap restart adalah undangan lain bagi identitas untuk muncul lagi.