Dua server DNS pada satu adaptor tidak membagi ruang nama
Mencantumkan dua resolver pada satu adaptor tidak memberi setiap domain otoritasnya sendiri. Buat dua aturan terbatas, uji pemilihan, dan hapus persis keduanya.
Mencantumkan dua resolver pada satu adaptor tampak seperti cara mengirim satu domain ke satu server dan domain lain ke server lainnya, dan tidak ada bagian dari daftar resolver yang bekerja seperti itu. Windows menyelesaikan berdasarkan nama, dan keputusan server mana yang ditanya datang dari objek kebijakan, bukan dari daftar alamat berurutan. Model mental yang harus diganti adalah antrean: tidak ada server pertama untuk domain A dan server kedua untuk domain B. Ada kumpulan aturan per ruang nama yang menyebut server secara eksplisit, dan begitu aturan itu ada, daftar adaptor berhenti menarik.
Mitos: dua alamat membagi dua domain
Kepercayaan itu bertahan karena kebetulan berhasil ketika satu server menjawab semuanya dan yang kedua hanya cadangan. Klien bertanya ke server pertama, server itu meneruskan atau melakukan rekursi, dan jawabannya tiba; tidak ada yang menyadari resolver mana yang sebenarnya memegang zona. Ilusi itu pecah saat kedua ruang nama berada di zona privat terpisah tanpa penerusan di antaranya, karena server pertama lalu menjawab secara otoritatif bahwa nama itu tidak ada. Jawaban negatif dari server pertama tidak memicu cadangan, karena klien menerima jawaban definitif, bukan kegagalan.
Daftar berurutan tidak punya konsep domain, jadi tidak bisa menyatakan maksudnya. Yang benar-benar dikendalikan daftar adalah server mana yang ditanya lebih dulu dan mana yang dicoba kedua, dan kedua jawaban itu berlaku sama untuk setiap nama.
Apa yang sebenarnya dipakai Windows untuk memilih
Tabel Kebijakan Resolusi Nama mencocokkan nama dengan ruang nama yang dikonfigurasi dan memilih server serta opsi untuk kecocokan itu. Aturan dapat dikonfigurasi secara lokal, dikirim melalui Kebijakan Grup, atau disediakan oleh profil VPN, dan kebijakan efektif adalah gabungan, bukan satu daftar. Itulah sebabnya diagnosis pertama selalu keadaan efektif: aturan yang dibuat secara lokal tetapi kalah oleh kebijakan terkelola menghasilkan laboratorium yang berperilaku sama sekali tidak seperti yang disarankan konfigurasinya. Aturan juga dicocokkan menurut kekhususan, sehingga entri ruang nama yang luas dapat menutupi entri yang sempit dengan cara yang tidak terlihat dalam daftar item yang dikonfigurasi. Membaca urutan efektif adalah satu-satunya cara melihat aturan mana yang menang.
Get-DnsClientNrptRule
Get-DnsClientNrptPolicy -Effective
Perintah pertama mencantumkan apa yang dikonfigurasi di mesin; perintah kedua menunjukkan apa yang benar-benar akan diterapkan klien, termasuk entri yang datang dari tempat lain. Jika keluaran efektif berisi ruang nama terkelola, pemilik kebijakan itulah tempat yang benar untuk meminta perubahan, bukan daftar aturan lokal. Kedua perintah hanya membaca keadaan, jadi menjalankannya sebelum ada yang menyetujui perubahan tidak merugikan apa pun.
Satu aturan per ruang nama, simpan objeknya
Setelah keadaan efektif dipahami, buat satu aturan per ruang nama dan simpan objek yang dikembalikan setiap perintah. Nama tampilan adalah label bagi manusia, dan pengenal unik dalam objek yang dikembalikan adalah target penghapusan yang andal setelahnya. Tulis kedua pengenal dalam catatan perubahan yang sama yang mencatat ruang nama dan resolver, karena sesi yang membuatnya tidak akan menjadi sesi yang membersihkan.
$svcRule = Add-DnsClientNrptRule -Namespace ".svc.internal.example" -NameServers "10.60.0.53" -DisplayName "VPN lab services" -PassThru
$resRule = Add-DnsClientNrptRule -Namespace ".research.internal.example" -NameServers "10.61.0.53" -DisplayName "VPN lab research" -PassThru
$svcRule | Select-Object Name, Namespace, NameServers
$resRule | Select-Object Name, Namespace, NameServers
Titik di awal menandai kecocokan akhiran, jadi aturan mencakup app.svc.internal.example dan apa pun di bawahnya. Dua alamat di sini milik rencana perutean laboratorium ini sendiri; sebuah aturan tidak membuat zona, tidak memasang rute, dan tidak memberi wewenang kepada aplikasi yang akhirnya terhubung, dan referensi Add-DnsClientNrptRule mendokumentasikan dengan tepat parameter mana melakukan apa.
Perhatikan apa yang tidak dilakukan perintah ini: perintah ini berlaku untuk seluruh mesin, tidak dibatasi pada sesi VPN, dan bertahan setelah jendela ditutup. Laboratorium yang melupakan ini meninggalkan kebijakan setelah terowongan hilang.
Buktikan bahwa klien memilih server
Menanyakan ke server tertentu apakah ia mengenal sebuah nama membuktikan bahwa server itu dapat menjawab, yang bukan klaim yang sama dengan klien memilih server tersebut. Uji yang penting menyelesaikan nama nyata melalui jalur klien biasa lalu memastikan resolver mana yang menanganinya, idealnya saat terowongan yang menyediakan rute menyala. Jika terowongan mati, aturan yang dibatasi dengan benar tetap menunjuk ke server yang tidak dapat dijangkau, dan itu masalah perutean, bukan kebijakan. Uji kedua keadaan agar keduanya dapat dibedakan nanti.
Resolve-DnsName app.svc.internal.example
Resolve-DnsName build.research.internal.example
Resolve-DnsName app.svc.internal.example -DnsOnly -NoHostsFile
Perhatikan jawaban cache dari periode sebelum aturan ada, dan perhatikan aplikasi yang sepenuhnya melewati resolver sistem dengan DNS terenkripsi mereka sendiri. Akhiran pencarian adalah fitur terpisah lainnya: aturan dapat memilih resolver untuk nama lengkap tanpa mengajari Windows memperluas nama host telanjang ke ruang nama itu.
Hapus persis apa yang Anda buat
Pembersihan adalah tempat laboratorium menjadi kisah peringatan. Menghapus setiap aturan di mesin itu cepat dan menghilangkan kebijakan yang diandalkan orang lain, jadi gunakan pengenal yang ditangkap saat aturan dibuat, lalu baca ulang keadaan efektif untuk memastikan mesin kembali ke tempat awalnya. Jika sesi yang membuatnya sudah tidak ada, catatan perubahan adalah satu-satunya tempat pengenal itu berada. Itulah alasan menuliskannya sebelum perintah pertama berjalan, bukan sesudahnya.
Remove-DnsClientNrptRule -Name $svcRule.Name -Force
Remove-DnsClientNrptRule -Name $resRule.Name -Force
Get-DnsClientNrptPolicy -Effective
Untuk penerapan, bukan laboratorium, pertanyaan masa pakai sama pentingnya dengan aturan. Profil VPN dapat membawa aturan ruang nama dan memilih apakah aturan itu bertahan setelah koneksi; aturan yang bertahan saat resolver tidak dapat dijangkau membuat klien lebih memilih server mati, dan aturan yang dibatasi pada koneksi hilang saat terowongan hilang. Putuskan perilaku mana yang dibutuhkan layanan, tandai siapa pemilik aturan, dan biarkan pembagian otoritas terdokumentasi di samping profil, bukan dalam ingatan seseorang tentang laboratorium.