Windows는 이름을 확인할 때 사용할 DNS 서버를 어떻게 결정합니까?


41

이름을 확인하기 위해 Windows가 어떤 DNS 서버를 쿼리할지 결정하기 위해 Windows는 어떤 알고리즘을 사용합니까?

몇 가지 인터페이스가 모두 활성화되어 있고 일부는 dns 서버가 지정되지 않았고 일부는 자동으로 결정하도록 지시했으며 일부는 수동으로 지정했습니다 (인터페이스 ipv4 및 인터페이스 ipv6).

Windows Vista에서 더 구체적인 문제를 해결하는 방법을 알고 있기를 희망 하면서이 일반적인 질문에 대한 답변을 요청합니다. 두 가지 인터페이스가 있습니다. 하나는 하위 메트릭과 DNS 서버가 수동으로 지정되어 있습니다. nslookup 은이 DNS 서버를 사용 하고 이름을 올바르게 확인합니다. 그러나 다른 인터페이스에 대해 DNS 서버를 수동으로 지정하지 않으면 응용 프로그램에서 사용하는 다른 모든 응용 프로그램에서 이름을 확인하지 못합니다. nslookup은 지정된 다른 인터페이스에 지정된 DNS 서버도 사용합니다.

감사

답변:


27

내가 실수하지 않으면 네트워크 연결 폴더의 고급 설정에서 NIC 바인딩 순서에 따라 결정됩니다. 다양한 NIC의 바인딩 순서를 변경하고 테스트로 nslookup을 실행하여이를 확인할 수 있습니다.

Evan이 링크 한 기사를 인용 하여 내 대답을 넓히려면 다음 기사 에서 발췌 한 내용입니다.

DNS 클라이언트 서비스는 다음 순서로 DNS 서버를 쿼리합니다.

  1. DNS 클라이언트 서비스는 기본 어댑터의 DNS 서버 목록에서 첫 번째 DNS 서버로 이름 쿼리를 전송하고 1 초 동안 응답을 기다립니다.

  2. DNS 클라이언트 서비스가 1 초 내에 첫 번째 DNS 서버로부터 응답을받지 못하면 여전히 고려중인 모든 어댑터의 첫 번째 DNS 서버로 이름 쿼리를 보내고 응답을 2 초 동안 기다립니다.

  3. DNS 클라이언트 서비스가 2 초 내에 DNS 서버로부터 응답을받지 못하면 DNS 클라이언트 서비스는 여전히 고려중인 모든 어댑터의 모든 DNS 서버로 쿼리를 보내고 응답을 위해 2 초 더 기다립니다.

  4. DNS 클라이언트 서비스가 여전히 DNS 서버로부터 응답을받지 못하면 여전히 고려중인 모든 어댑터의 모든 DNS 서버로 이름 쿼리를 보내고 응답을 4 초 동안 기다립니다.

  5. DNS 클라이언트 서비스가 DNS 서버로부터 응답을받지 못하면 DNS 클라이언트는 여전히 고려중인 모든 어댑터의 모든 DNS 서버로 쿼리를 보내고 8 초 동안 응답을 기다립니다.

1 단계에서 선호되는 어댑터는 바인딩 순서에서 첫 번째로 나열된 어댑터입니다.


4
이 프로세스는 Windows 10에서 변경되었지만 위의 Windows 10에는 적용되지 않는다는 새로운 프로세스를 모르지만이 블로그 ( blogs.technet.microsoft.com/networking/2015/08/14/)를
Robert

14

Windows 10 (및 Windows Server 2016)에서는 각 인터페이스의 메트릭을 원하는 순서대로 업데이트해야합니다.

  1. 제어판으로 이동> 네트워크 및 인터넷> 네트워크 연결
  2. 원하는 연결을 마우스 오른쪽 버튼으로 클릭하십시오 (높은 우선 순위 연결)
  3. 특성> 인터넷 프로토콜 버전 4를 클릭하십시오.
  4. 특성> 고급을 클릭하십시오.
  5. '자동 측정 항목'을 선택 취소하십시오.
  6. '인터페이스 메트릭'에 10을 입력하십시오.
  7. 확인을 클릭하십시오

참고 문헌 :

LAN에 10, WLAN에 20, VPN 인터페이스에 100을 사용했습니다 (직장에서 로컬 DNS를 선호합니다. 낮은 메트릭 = 높은 우선 순위를 기억하십시오 .

IPv4 라우트의 자동 메트릭 기능에 대한 설명은 Microsoft 지원에서이 기사를 참조하십시오 .


+1 Windows 10의 경우 이것이 유일한 해결책이었습니다. 감사합니다.
GµårÐïåñ

메트릭 수정은 경로 선택에만 영향을줍니다. 사용할 DNS 서버에는 영향을 미치지 않습니다.
Jruv

14 개의 공감대와 개인적인 경험에 동의하지 않는다. 나는 그렇게 해서는 안된다고 동의 하지만, 마이크로 소프트의 개발자들은 이런 식으로 코딩 한 것처럼 보였다.
Jacob Evans

8

이 페이지 에서는 Windows에서 DNS 쿼리를 수행하는 데 사용하는 알고리즘에 대해 설명합니다. 당신이 찾고있는 모든 답변을 줄만큼 깊이가 없지만 스니퍼가있는 시간 과이 기사는 특정 상황에서 일어나는 일을 결정하는 데 필요한 모든 것입니다.


3

나는 정확히 같은 문제가 있었다. 나는 그것을 알아 내려고 하루를 보냈다. 이제는 알고 매력처럼 작동합니다.

네트워크 카드가 여러 개인 경우 각각에 DNS 서버를 지정하십시오. 마지막에 어떤 DNS 서버가 사용 될지 알고 있습니까?

연습을 통해 확인할 수 있습니다.

nslookup 192.168.3.6

PC가 실제로 사용하는 서버를 볼 수 있습니다

문제는-DNS 서버 창에서 사용하기로 선택한 것과 변경하는 방법에 있습니다.

VPN 클라이언트를 사용할 때 특히 필요합니다.

qwerty2010답변옳고 정확합니다. 그러나 제어판-네트워크 및 공유 센터-어댑터 설정 변경-nic 목록에 NIC가있는 경우에만 사용할 수 있습니다

VPN 클라이언트에 책임이있는 nic을 보는 경우에만 그래픽 방식을 사용하여 dns 서버 (특정 nic에 지정됨)가 사용하려는 창을 가리킬 수 있습니다.

네트워크 및 공유 센터-> 어댑터 설정 변경-> 고급-> 고급 설정->으로 이동하여 사용하려는 DNS로 nic을 위로 이동하십시오. (UP을 들어야합니다).

그러나 예를 들어 Shrew vpn 클라이언트를 사용하는 경우 nic이 없습니다.

너 뭐하니.

레지스트리를 엽니 다.

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

하위 폴더 0000, 0001 등에서

DriverDesc = Shrew Soft Virtual Adapter

좋아. 그런 다음 클립 보드에 복사합니다

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

이제 간다

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

그리고 당신은 열립니다 key = Bind. 다음과 같은 목록이 나타납니다

\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}

당신이해야 할 모든 상단에 넣어

\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}

그게 다야. 다시 부팅 할 필요가 없습니다.

이제 Windows는 VPN 연결을 사용할 때 shrew vpn nic에 지정된 DNS를 사용합니다.


0

이것은 당신이나 다른 사람들에게 도움이 될 수 있으므로, 나열된 dns의 Windows 라운드 로빈 사용을 비활성화하여 dns 사용을보다 예측 가능하게 만들 수 있습니다. 를 설정해보십시오 RoundRobin=0HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\DNS\Parameters( 참조 하는 DNS 라운드 robing을 비활성화).

서버 회전을위한 "시간 초과"도 있습니다. 서버를 0 으로 설정해보십시오 .

 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Dnscache\Parameters
 ServerPriorityTimeLimit=0

언급 된 "참조"(링크)에 따르면 이는 쿼리 된 FQDN에 대해 여러 IP 주소를 쿼리에서 회전하는 정렬 순서로 DNS 서버를 구성하는 데 적용됩니다. 이것은 DNS 확인자 (클라이언트)가 쿼리 할 DNS 서버를 선택하는 방법에 대한 질문과는 아무런 관련이 없습니다.
Thomas Urban

-13

무작위로 결정하지 않습니다. DNS 서버가있는 회사에서 IP를 가져 오는 라우터에 연결되어 있습니다. IP를 다른 DNS (예 : OpenDns)로 수동 변경하지 않는 한 요청을 받습니다 . 또는 자신의 DNS 서버를 사용하기로 결정했을 수도 있습니다. 그것도 작동합니다. 네트워크 센터에서 IP 주소를 입력하기 만하면됩니다. 그렇습니다. 수동으로 설정해야합니다.

C:\Windows\System32확장명없이 "호스트"라는 파일을 조정할 수도 있습니다 . 표준 DNS로 보내지 않고 URL 요청을 리디렉션 할 수 있습니다. 로컬 서버로 (포트 80을 실행하고 청취해야 함)


18
기본적으로 당신이 말한 모든 것이 잘못되었습니다
MDMarra

3
그리고 hosts 파일 인 페스터 링 혐오감을 언급하기위한 추가 -1도 있습니다.
Maximus Minimus

유익한 정보를
얻는

4
@WebDevHobo-의견을 수정하기에는 너무 많은 것이 있지만 큰 요점을 다루겠습니다. 1) OP에는 여러 개의 인터페이스 (대부분 별개의 NIC)가있는 컴퓨터가 있으며 각각 다른 DNS가 정의되어 있습니다. 질문의 맥락에서, 그는 몇 개의 내부 DNS 서버를 분명히 실행하고 있거나 선호하는 외부 DNS 서버가 몇 개 있습니다.이 상자는 아마도 멀티 홈입니다. 2) 해당 주소 풀에 대한 DHCP 서버 구성에서 DHCP를 사용하는 경우 내부 DNS 서버 주소를 수동으로 설정할 필요가 없습니다. 3) 호스트 파일의 경로는 c : \ windows \ system32 \ drivers \ etc입니다.
MDMarra

3
HOSTS 파일은이 상황에서 사용되지 않아야합니다. 로컬 개발을 수행하고 HOST 헤더 등을 사용하고 로컬로 해결하기 위해 FQDN이 필요한 경우가 아니면 실제로는 절대로 사용해서는 안됩니다. 또한 서버는 이름 확인을 위해 HOSTS 파일을 사용하든 DNS 서버를 사용하든 포트 80을 실행할 필요가 없습니다. URL 끝에 : port_number를 추가하십시오. 호스트는 DNS가 아닌 포트를 신경 쓰지 않습니다. 호스트 이름을 IP 주소로 변환하는 방법입니다.
MDMarra
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.