Nama internal masih diselesaikan ke server VPN sehari setelah terowongan ditutup, dan berkas resolver terus muncul kembali dengan entri itu. Di tempat resolvconf Debian memiliki status, berkas itu dirakit dari catatan pemasok, dan salah satunya adalah sisa yang tertinggal. Menghapus catatan hanya butuh satu menit; membuktikan bahwa penghapusannya aman adalah pekerjaan sebenarnya. Gerbang-gerbang ini berjalan berurutan, dan gerbang yang gagal mengakhiri prosedur alih-alih mengirim Anda ke langkah berikutnya.

Pastikan resolvconf Memiliki Status

Identifikasi pemiliknya lebih dulu, karena gejala yang sama di bawah systemd-resolved membutuhkan perintah dan perbaikan yang berbeda. Paket resolvconf menyimpan basis data di bawah /run/resolvconf dan mengarahkan /etc/resolv.conf ke berkas yang dibangunnya dari basis data itu. Dua pembacaan menyelesaikan pertanyaan ini: target symlink, dan apakah paket terpasang serta aktif. Target di bawah /run/systemd/resolve berarti rancangan yang lain, tempat semua yang di bawah ini tidak berlaku.

dpkg -l resolvconf | tail -1
ls -l /etc/resolv.conf
systemctl is-active resolvconf.service

Jika tautan menunjuk ke tempat lain atau paketnya tidak ada, berhenti di sini. Pembungkus kompatibilitas yang meminjam nama itu, yang dikirim oleh pengelola resolver lain, bukan pemilik basis data ini.

Basis Data Menyimpan Masukan, Bukan Jawabannya

Basis data menyimpan masukan dan berkasnya adalah keluaran, jadi mendaftar masukan adalah satu-satunya cara untuk melihat program mana yang memasang entri yang ingin Anda buang. Catatannya pendek, dan kuncinya adalah pegangan yang Anda butuhkan nanti. Bacalah sebelum memutuskan mana yang usang, karena nama yang tampak seperti antarmuka VPN bisa milik klien lain. Jauhkan alamat privat dan domain pencarian internal dari diagnostik bersama; kuncinya saja biasanya sudah mengidentifikasi catatan itu.

sudo resolvconf --list
sudo resolvconf -i

Perintah pertama mencetak catatan yang dipasok tanpa memprosesnya, dan perintah kedua mendaftar antarmuka yang saat ini menyediakan konfigurasi DNS. Kunci biasanya dibangun dari nama antarmuka ditambah program pemasoknya. Manual resolvconf menjelaskan basis data yang dituju kunci-kunci itu.

Salin kunci dari keluaran alih-alih membangunnya kembali. Entri tidak disebut tun0 hanya karena skrip lama memakai nama itu.

Buktikan Catatan Itu Tidak Punya Pemilik

Sebuah catatan aman dihapus bila tidak ada koneksi hidup yang memasangnya. Korelasikan kunci dengan koneksi yang membuatnya, lalu pastikan koneksi itu sudah hilang. Korelasi itulah keseluruhan gerbangnya, dan itulah langkah yang paling sering dilewati dalam perjalanan menuju perintah hapus. Jika buktinya ambigu, anggap catatan itu masih hidup dan berhentilah.

Nama proses adalah bukti yang lemah. OpenConnect memanggil vpnc-script, jadi pemeriksaan proses vpnc tidak mengatakan apa pun tentang catatan mana yang sedang berlaku. Koneksi baru juga bisa memakai ulang nama antarmuka yang ditinggalkan koneksi lama, sehingga kunci tampak lebih tua daripada usia sebenarnya. Bandingkan alamat server di dalam catatan dengan alamat terowongan yang masih aktif, dan berhentilah jika keduanya cocok.

Pemutusan normal melalui pengelola pemilik koneksi adalah obat pertama. Itu menarik kembali apa yang dipasang koneksi tersebut dan membiarkan pemasok lain tidak tersentuh.

Periksa Penghapusan dan Penulisan Ulang

Setelah catatan dipastikan usang, hapus dengan kunci yang tepat lalu baca hasilnya alih-alih menganggapnya. Perintah ini mengubah status resolver untuk setiap aplikasi di host, jadi jalankan di jendela yang Anda kendalikan. Beri tanda kutip pada kunci, karena kunci memuat karakter yang akan diperluas oleh shell. Placeholder di blok itu mewakili kunci yang Anda salin dari daftar, bukan string literal.

sudo resolvconf -d "RECORD_KEY_FROM_THE_LIST"
sudo resolvconf --list
resolvectl query host.corp.example || getent hosts host.corp.example

Penghapusan menjalankan skrip pembaruan bila pembaruan diaktifkan; bila pembaruan dimatikan, ia menunda pembaruan, sehingga catatan yang dihapus dan berkas yang ditulis ulang menjadi dua peristiwa terpisah. Baca ulang daftarnya dan pastikan kuncinya hilang sebelum melihat berkasnya. Lalu kueri satu nama yang seharusnya masih diselesaikan melalui pemasok yang tersisa dan satu nama publik, lalu bandingkan keduanya dengan apa yang Anda lihat sebelum perubahan. Jika sebuah nama privat berhenti diselesaikan sepenuhnya, catatan itu masih membawanya.

resolvconf -u hanya menjalankan skrip pembaruan itu. Ia tidak pernah mengidentifikasi atau menghapus catatan usang, dan membangun ulang dari masukan usang menghasilkan berkas tak diinginkan yang sama.

Kait Pemutusan yang Terbunuh Meninggalkan Catatan

Pembersihan sekali jalan memulihkan keadaan hari ini, dan penghentian berikutnya yang terputus mengembalikan catatan itu. Telusuri jalur pembongkaran: kait pemutusan milik klien, pembantu yang dipanggil kait itu, dan apa yang terjadi bila salah satunya terbunuh. Penghentian yang terputus adalah asal-usul yang biasa, karena kaitnya tidak pernah berjalan sama sekali. Catat status keluar kait itu sekali dan Anda akan tahu apakah ia gagal secara diam-diam.

Jaga penyiapan dan pembersihan di bawah satu pemilik. Skrip kedua yang menebak nama antarmuka akhirnya akan menghapus catatan koneksi lain, yang lebih buruk daripada entri usang yang Anda mulai. Pemiliknya juga harus memutuskan kapan sebuah catatan usang, karena ia tahu koneksi mana yang memasangnya.

Lalu uji siklus hidupnya: sambungkan, putuskan, daftar catatannya lagi. Hilangnya entri dengan sendirinya adalah satu-satunya bukti bahwa perbaikan itu bertahan.

Artikel terkait