Bagaimana Windows memutuskan Server DNS mana yang akan digunakan saat menyelesaikan nama?

41

Algoritma apa yang digunakan Windows untuk memutuskan DNS Server mana yang akan diminta untuk menyelesaikan nama?

Katakanlah saya memiliki beberapa antarmuka, semua aktif, beberapa tanpa server dns ditentukan, beberapa diminta untuk menentukannya secara otomatis, dan beberapa dengan itu ditentukan secara manual (dalam antarmuka ipv4 DAN antarmuka ipv6).

Saya meminta jawaban untuk pertanyaan umum ini dengan harapan saya tahu bagaimana menyelesaikan masalah yang lebih spesifik pada Windows Vista - Saya memiliki dua antarmuka, satu metrik lebih rendah dan server DNS yang ditentukan secara manual. nslookup menggunakan server DNS INI dan menyelesaikan nama dengan benar. Namun, semua aplikasi lain gagal menyelesaikan nama kecuali saya secara manual menentukan server DNS untuk antarmuka lain, yang kemudian digunakan oleh aplikasi tersebut. nslookup juga menggunakan server DNS yang ditentukan untuk antarmuka lain ini setelah ditentukan.

Terima kasih

Artefacto
sumber

Jawaban:

27

Jika saya tidak salah, itu ditentukan oleh urutan pengikatan NIC di Pengaturan Lanjut di folder koneksi jaringan. Anda dapat memverifikasinya dengan mengubah urutan pengikatan berbagai NIC dan menjalankan nslookup sebagai ujian.

Untuk memperluas jawaban saya, mengutip artikel yang ditautkan Evan , berikut adalah kutipan dari artikel tersebut:

Layanan Klien DNS menanyakan server DNS dalam urutan berikut:

  1. Layanan Klien DNS mengirimkan permintaan nama ke server DNS pertama pada daftar server DNS yang disukai adaptor dan menunggu satu detik untuk mendapat respons.

  2. Jika layanan Klien DNS tidak menerima respons dari server DNS pertama dalam satu detik, ia mengirimkan permintaan nama ke server DNS pertama pada semua adaptor yang masih dalam pertimbangan dan menunggu dua detik untuk tanggapan.

  3. Jika layanan Klien DNS tidak menerima respons dari server DNS mana pun dalam dua detik, layanan Klien DNS mengirimkan kueri ke semua server DNS pada semua adaptor yang masih dalam pertimbangan dan menunggu dua detik lagi untuk mendapatkan respons.

  4. Jika layanan Klien DNS masih tidak menerima respons dari server DNS apa pun, ia mengirimkan permintaan nama ke semua server DNS pada semua adaptor yang masih dalam pertimbangan dan menunggu empat detik untuk mendapatkan respons.

  5. Jika layanan Klien DNS tidak menerima respons dari server DNS apa pun, klien DNS mengirimkan kueri ke semua server DNS pada semua adaptor yang masih dalam pertimbangan dan menunggu delapan detik untuk mendapat respons.

Adaptor yang disukai dalam langkah 1 adalah adaptor yang terdaftar pertama dalam urutan yang mengikat.

joeqwerty
sumber
4
Proses ini telah berubah di Windows 10, meskipun saya tidak tahu proses baru saya tahu hal di atas tidak berlaku untuk Windows 10, lihat blog ini - blogs.technet.microsoft.com/networking/2015/08/14/...
Robert
14

Di Windows 10 (dan Windows Server 2016) Anda harus memperbarui metrik setiap antarmuka dalam urutan yang Anda inginkan.

  1. Panel Kontrol Goto> Jaringan dan Internet> Koneksi Jaringan
  2. Klik kanan koneksi yang diinginkan (Koneksi Prioritas Tinggi)
  3. Klik Properties> Internet Protocol Version 4
  4. Klik Properties> Advanced
  5. Hapus centang 'Metrik Otomatis'
  6. Masukkan 10 di 'Antarmuka Metrik'
  7. Klik OK

Referensi:

Saya menggunakan 10 untuk LAN saya, 20 untuk WLAN, dan 100 untuk Antarmuka VPN (Saya lebih suka DNS lokal di tempat kerja, ini mungkin terbalik untuk yang lain). Ingat metrik bawah = prioritas lebih tinggi .

Lihat artikel ini di Dukungan Microsoft untuk Penjelasan tentang fitur Metrik Otomatis untuk rute IPv4 .

Jacob Evans
sumber
+1 Bagi saya di Windows 10, ini adalah satu-satunya solusi, terima kasih.
GμårÐïåñ
Modifikasi metrik hanya memengaruhi pemilihan rute. Itu tidak mempengaruhi server DNS mana yang akan digunakan.
Jruv
14 upvotes dan pengalaman pribadi tidak setuju, saya setuju tidak seharusnya tetapi dev di microsoft tampaknya telah mengkodekannya dengan cara ini.
Jacob Evans
8

Halaman ini menjelaskan algoritma yang digunakan oleh Windows untuk melakukan permintaan DNS. Ini tidak cukup mendalam untuk memberi Anda semua jawaban yang Anda cari, tetapi beberapa waktu dengan sniffer dan artikel ini harus menjadi semua yang Anda butuhkan untuk menentukan apa yang terjadi dalam situasi spesifik Anda.

Evan Anderson
sumber
3

Saya memiliki masalah yang persis sama. Saya telah menghabiskan satu hari mencoba mencari tahu. Sekarang saya tahu dan itu berfungsi seperti pesona.

Jika Anda memiliki beberapa kartu jaringan dan jika menentukan server DNS di masing-masing. Apakah Anda tahu server DNS apa yang akan digunakan pada akhirnya?

Anda bisa memeriksanya melalui latihan.

nslookup 192.168.3.6

Jadi Anda melihat server yang sebenarnya digunakan PC Anda

Pertanyaannya adalah - Dari apa yang bergantung pada jendela server DNS apa yang dipilih untuk digunakan dan bagaimana kita dapat mengubahnya.

Kami sangat membutuhkannya saat kami menggunakan klien VPN.

The jawaban dari qwerty2010 adalah tepat dan benar. Tetapi Anda dapat menggunakannya HANYA ketika Anda memiliki NIC di panel kontrol - jaringan dan pusat berbagi - ubah pengaturan adaptor - daftar NIC

Hanya jika Anda melihat nic yang bertanggung jawab untuk klien VPN Anda, Anda dapat menggunakan cara grafis untuk mengarahkan windows ke server dns (yang ditentukan pada nic tertentu) yang ingin Anda gunakan.

Jadi, Anda pergi Jaringan dan pusat berbagi -> Ubah pengaturan adaptor -> Lanjutan -> Pengaturan lanjutan -> dan Anda memindahkan UP nic dengan DNS yang ingin Anda GUNAKAN. (UP Anda harus mengangkatnya ke atas).

Namun jika misalnya Anda menggunakan Shrew vpn client - Anda tidak akan memiliki nics.

Apa yang kamu kerjakan.

Anda membuka registri.

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\{4D36E972-E325-11CE-BFC1-08002BE10318}

Dan Anda melihat di subfolder 0000, 0001 dll folder dengan

DriverDesc = Shrew Soft Virtual Adapter

baik. Kemudian Anda salin ke clipboard

NetCfgInstanceId = {B498E7DE-7257-48F6-AD32-60E470030F05}

Sekarang kamu pergi

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\Tcpip\Linkage]

dan kamu buka key = Bind. Anda akan melihat daftar seperti ini

\Device\{1DF89CE3-CAAD-4EB7-A53F-AD16BC1D5EFD}
\Device\{70126DBE-B44D-4392-9417-0CABD6E384B1}
\Device\{D5127F8E-E7BB-4661-AE5A-A922614173D0}
\Device\{C44039AB-6801-4A9B-A736-3B12782FF411}
\Device\{85231D0F-CD05-4774-A983-632C5D83AC62}
\Device\{7E87BC81-8C58-4E05-9FA0-7897A6AA5CCE}
\Device\{3A1A3EFC-A9DE-4BCA-BAF6-81C7074487E0}
\Device\{8D41EDFC-04AC-4537-B5D5-0D54EB51A023}

Yang harus Anda lakukan adalah meletakkannya di atas

\Device\{B498E7DE-7257-48F6-AD32-60E470030F05}
\Device\{1DF89CE3-CAAD-4EB7-A53F-AD16BC1D5EFD}
\Device\{70126DBE-B44D-4392-9417-0CABD6E384B1}
\Device\{D5127F8E-E7BB-4661-AE5A-A922614173D0}
\Device\{C44039AB-6801-4A9B-A736-3B12782FF411}
\Device\{85231D0F-CD05-4774-A983-632C5D83AC62}
\Device\{7E87BC81-8C58-4E05-9FA0-7897A6AA5CCE}
\Device\{3A1A3EFC-A9DE-4BCA-BAF6-81C7074487E0}
\Device\{8D41EDFC-04AC-4537-B5D5-0D54EB51A023}

Itu saja. Tidak perlu melakukan reboot.

Sekarang windows Anda akan menggunakan DNS yang ditentukan dalam shrew vpn nic ketika Anda menggunakan koneksi vpn.

Alex
sumber
0

Karena ini dapat membantu Anda atau orang lain, Anda dapat menonaktifkan penggunaan Windows round-robin dari dns yang terdaftar untuk membuat penggunaan dns lebih mudah diprediksi. Coba atur RoundRobin=0di HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\DNS\Parameters( referensi ) untuk menonaktifkan putaran-dns dns.

Ada juga "batas waktu" untuk memutar server, Anda juga dapat mencoba mengaturnya ke nol :

 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Dnscache\Parameters
 ServerPriorityTimeLimit=0
higuita
sumber
Menurut "referensi" yang disebutkan (tautan) ini berlaku untuk mengkonfigurasi server DNS dalam memberikan beberapa alamat IP untuk beberapa FQDN yang dipertanyakan dalam urutan penyortiran yang dirotasi dari kueri ke kueri. Ini tidak ada hubungannya dengan pertanyaan tentang bagaimana resolver DNS (klien) memilih server DNS untuk ditanyai.
Thomas Urban
-13

Itu tidak memutuskan secara acak. Anda terhubung ke router yang mendapatkan IP dari perusahaan yang memiliki server DNS. Mereka mendapatkan permintaan Anda kecuali Anda mengubah IP secara manual ke DNS lain, misalnya: OpenDns . Atau mungkin Anda memutuskan memiliki server DNS Anda sendiri. Itu juga berhasil. Cukup masukkan alamat IP di pusat jaringan dan semua harus baik-baik saja. Dan ya, Anda harus mengaturnya secara manual.

Anda juga dapat menyesuaikan file yang C:\Windows\System32disebut "host" tanpa ekstensi. Ini memungkinkan Anda untuk mengarahkan ulang permintaan URL alih-alih dikirim ke DNS standar. Ke server lokal (yang harus dijalankan dan mendengarkan port 80)

KdgDev
sumber
18
Pada dasarnya semua yang Anda katakan di sini salah
MDMarra
3
Dan -1 tambahan untuk bahkan menyebutkan kekejian bernanah itu adalah file host.
Maximus Minimus
Cara untuk menjadi MarkM informatif
KdgDev
4
@ WebDevHobo - Ada terlalu banyak untuk dikoreksi dalam komentar, tapi saya akan menyentuh pada poin besar. 1) OP memiliki komputer dengan banyak antarmuka (kemungkinan besar NIC terpisah), dan masing-masing memiliki DNS yang berbeda. Dalam konteks pertanyaan, ia jelas menjalankan beberapa server DNS internal atau memiliki beberapa server DNS eksternal yang disukai - kotak mungkin multi-homed. 2) Anda tidak perlu menetapkan alamat server DNS internal secara manual jika Anda menggunakan DHCP dalam konfigurasi server DHCP untuk kumpulan alamat itu. 3) Path ke file hosts adalah c: \ windows \ system32 \ drivers \ etc
MDMarra
3
Dan file HOSTS tidak boleh digunakan dalam situasi ini, atau secara praktis tidak pernah kecuali Anda melakukan pengembangan lokal dan menggunakan header HOST atau semacamnya dan perlu FQDN untuk menyelesaikannya secara lokal. Dan server tidak perlu menjalankan port 80 apakah menggunakan file HOSTS untuk resolusi nama atau server DNS. Cukup tambahkan: port_number ke akhir URL. HOSTS tidak peduli dengan port, sama seperti DNS tidak - itu adalah cara menerjemahkan nama host ke alamat IP dan tidak lebih.
MDMarra