Anda menambah nama ke /etc/hosts, menyambung VPN dan menjangka rekod itu muncul untuk semua orang. Ia tidak berlaku, dan kejutan biasanya datang dengan gejala kedua: nama itu diselesaikan pada mesin anda dan gagal pada mesin rakan sekerja, yang kelihatan seperti perkhidmatan DNS VPN yang rosak dan sebenarnya fail hosts melakukan tepat apa yang direka untuknya. Fail hosts ialah konfigurasi penyelesaian nama setempat, bukan kemas kini zon, dan tiada apa dalam sambungan VPN biasa memuat naiknya.

Hosts ialah penggantian setempat, bukan kemas kini zon

Fail itu ialah senarai pemetaan yang dirujuk oleh pustaka perkhidmatan nama sebelum, atau sebagai ganti, bertanya kepada pelayan DNS. Baris seperti 10.40.0.20 build.corp.example mengubah apa yang disimpulkan oleh aplikasi pada satu mesin itu. Ia tidak mencipta rekod, ia tidak bergerak melalui terowong, dan pelayan DNS yang ditunjuk oleh terowong itu tidak tahu ia wujud.

Itulah sebabnya kegagalan itu tidak simetri. Klien anda mendapat jawapan daripada fail. Klien lain bertanya kepada pelayan DNS VPN, yang tidak mengembalikan apa-apa, dan aplikasi melaporkan bahawa nama itu tidak wujud. Kedua-dua mesin berkelakuan betul; hanya satu yang mempunyai penggantian yang tidak pernah dilihat oleh yang lain.

Dua arahan, dua komponen berbeza

Cara terpantas untuk menghentikan perdebatan ialah menjadikan perbezaan itu kelihatan dalam dua arahan, kedua-duanya dijalankan pada klien yang mempunyai entri hosts:

getent ahosts build.corp.example
dig @10.40.0.53 build.corp.example A

Yang pertama bertanya kepada laluan carian sistem itu sendiri, yang pada sistem glibc biasa membaca fail setempat sebelum DNS. Yang kedua menghantar pertanyaan DNS terus kepada pelayan di alamat itu dan tidak merujuk fail setempat sama sekali. Apabila yang pertama mengembalikan entri anda dan yang kedua mengembalikan NXDOMAIN, anda telah membuktikan bahawa rekod itu tidak wujud dalam DNS dan mesin anda menjawab daripada penggantian setempat.

Urutannya boleh dikonfigurasikan, dan ia berbaloi untuk diperiksa sebelum anda membuat sebarang kesimpulan tentang sesuatu distribusi. Lihat baris hosts: dalam /etc/nsswitch.conf; hosts: files dns merujuk fail terlebih dahulu. Jangan salin contoh itu ke atas konfigurasi yang berfungsi semata-mata untuk menukar urutan, kerana sistem sebenar sering menyenaraikan sumber tambahan dan entri perkhidmatan bersyarat yang tidak dibawa oleh contoh itu.

systemd-resolved mengaburkan ujian

Pada sistem yang menggunakan systemd-resolved, stub setempat juga menyediakan nama daripada pangkalan data hosts. Oleh itu pertanyaan kepada 127.0.0.53 bukan ujian bebas terhadap pelayan jauh, walaupun ia kelihatan seperti pertanyaan DNS dan berkelakuan seperti itu. Anda boleh mengesahkan apa yang diketahui oleh penyelesai dan pelayan mana yang akan ditanyakannya dengan:

resolvectl query build.corp.example
resolvectl status

Output status menamakan pelayan DNS bagi setiap pautan, dan begitulah cara anda mengetahui sama ada pautan VPN benar-benar menerima penyelesai. Pertanyaan itu berasingan daripada entri hosts dan itulah yang berbaloi ditanya apabila nama peribadi gagal bagi setiap pengguna dan bukan bagi seorang.

Aplikasi boleh menambah lapisan lain lagi. Pelayar dengan tetapan DNS-over-HTTPS sendiri, kontena dengan konfigurasi penyelesai sendiri, atau masa jalan yang menyimpan carian dalam cache sepanjang hayat proses boleh masing-masing menjawab secara berbeza daripada sistem. Uji aplikasi yang anda ambil berat dan bukannya menganggap satu arahan menerangkan setiap program pada mesin itu.

Apa yang sebenarnya berkongsi nama merentasi VPN

Jika nama peribadi perlu berfungsi untuk semua orang, ia memerlukan pemilik yang boleh dicapai oleh penyelesai semua orang. Jawapan bersihnya ialah menerbitkan rekod itu dalam zon terurus dan menjadikan zon itu boleh diselesaikan melalui laluan DNS VPN yang dimaksudkan. Rekod itu kemudiannya mempunyai satu sumber kebenaran, jejak audit dan kitaran hayat, dan tiada siapa perlu mengingati laptop mana yang membawa penggantian setempat.

Mengedarkan fail hosts ialah alternatif yang sah, dan ia pengurusan titik akhir dan bukan perkhidmatan nama. Jika anda memilihnya, fail itu mesti digunakan, divresyen dan dibuang oleh apa sahaja yang menguruskan armada, dan ia harus diterangkan begitu dalam reka bentuk. “VPN yang uruskannya” bukan penerangan proses itu.

Pendaftaran DNS dinamik ialah mekanisme ketiga, dengan kebenarannya sendiri, pengesahan kemas kini dan jangka hayat rekod. Ia tidak berpunca daripada entri hosts, dan ia juga tidak berpunca daripada klien yang hanya menyambung, melainkan pelayan dan klien kedua-duanya dikonfigurasikan untuk melakukannya. Rekod yang muncul dengan sendirinya ialah tanda bahawa seseorang telah mendayakan kemas kini selamat dan klien yang mendaftar sendiri, dan konfigurasi itu tergolong dalam rekod reka bentuk dan bukan dalam urutan penyelesaian masalah. Jika tiada siapa boleh menamakan pemilik tetapan itu, anggap rekod automatik itu belum disahkan dan kekalkan zon terurus sebagai sumber kebenaran.

Nama yang diselesaikan bukan laluan

Penyelesaian nama dan kebolehcapaian adalah berasingan, dan pemetaan setempat yang lapuk ialah cara klasik untuk mengelirukan kedua-duanya. Entri hosts yang menunjuk ke alamat yang telah berpindah akan terus memilih hos lapuk lama selepas DNS diperbetulkan, dan gejalanya kelihatan seperti kegagalan penghalaan pada nama yang diselesaikan dengan baik.

Jadi apabila laporan itu ialah “nama diselesaikan tetapi perkhidmatan tidak boleh dicapai”, bandingkan carian sistem dengan pertanyaan eksplisit kepada pelayan DNS VPN, kemudian periksa alamat yang anda peroleh terhadap alamat yang sebenarnya digunakan oleh perkhidmatan itu. Rujukan systemd-resolved mendokumenkan sumber setempat yang dirujuknya, dan itulah peta yang anda perlukan untuk perbandingan itu.

Kemudian betulkan penggantian itu melalui pemiliknya. Membuang satu baris daripada fail hosts anda sendiri tidak melakukan apa-apa kepada dua belas laptop yang menerima baris yang sama daripada skrip penggunaan, dan itulah versi masalah ini yang benar-benar dialami orang.

Artikel berkaitan