2011-02-04 2 views
7

확인 방법 :Dns.GetHostEntry 오류 조건과 나는 매우 구체적인 문제와 관련된 Dns.GetHostEntry이

서비스는 호스트의 이름을 사용하여 호스트의 모든 IP Adresses를 검색 할 Dns.GetHostEntry를 사용합니다. 이것은 항상 잘 작동했습니다. 특정 고객에게 Dns.GetHostEntry는 특정 호스트를 쿼리 할 때 "no such such is known"오류를 발생시킵니다. 이 문제는 서비스가 설치된 컴퓨터가 아닌 다른 도메인에있는 호스트를 확인하려고 할 때만 발생합니다. 이 서비스는 꽤 오랫동안 작동했지만 최근에 "no such host is known"오류가 발생합니다 (슬프게도 스택 추적을 사용할 수 없음). Nslookup은 작동하지만 아무런 문제가 없습니다. 해당 서비스는 VB.NET으로 작성되었으며 .NET Framwork 2.0을 대상으로합니다.

.NET 3.0 (http://msdn.microsoft.com/en-us/library/ms143998(v=VS.85).aspx)에 대한 MSDN 항목의 주석은 호스트의 역방향 DNS 항목에 문제가 있음을 나타 냈지만 테스트 네트워크에서 모든 역순으로 문제를 재현하지 못했습니다. 조회 영역이 삭제되었습니다. (다른 .NET 버전에 대한 더 많은 주석이 있으며, 모두 유사한 문제가 있습니다.) [편집 :] 잘못 PTR 레코드를 추가해도 문제가 발생하지 않습니다.

[EDIT2 :] 오류를 발생시킨 유일한 원인은 네트워크 어댑터의 연결을 끊었 기 때문에 DNS 서버를 사용할 수 없게 만드는 것입니다. 캐싱으로 인해 정방향으로 해결 된 경우에도 여전히 작동합니다.

내 질문은 다음과 같습니다.

  1. GetHostEntry가이 특정 오류를 발생시키는 조건은 무엇입니까?
  2. 어떤 해상도 방법을 사용합니까? 내가 잘못하지 않았다면, 관리되지 않는 WinSock 함수 getnameinfo (http://msdn.microsoft.com/en-us/library/ms738532(v=vs.85).aspx)를 사용합니다 : "이름 확인은 DNS (Domain Name System), 로컬 호스트 파일, 또는 다른 명명 메커니즘이 될 수 있습니다."
  3. 다른 도메인의 컴퓨터 (갑자기 같은 도메인에있는 컴퓨터가 아닌)의 갑자기 실패하는 이유는 무엇입니까?

감사와 안부, cun83

+0

로컬 컴퓨터에서 "ipconfig/flushdns"를 수행하고 PTR 레코드를 수정 한 후 DNS 서버를 다시 시작 했습니까? 캐시 된 결과를 여전히 사용하고있을 수 있습니다. –

+0

예, 캐시를 플러시했습니다. DNS 서버 서비스 및 클라이언트 서비스를 다시 시작하기 만하면 캐시되지 않습니다. – cun83

답변

5

저는 개인적으로 항상 Dns.GetHostAddresses를 사용합니다. 항상 안정적인 결과를 제공합니다.

Dns.GetHostEntry에 대한 오류가 발생했는지는 DnsGetHostEntry이 (가) IP 주소를 반환하기 전에 역방향 DNS 조회를 시도 할 예정이라고 생각됩니다. DNS 역방향 조회가 실패하면 "알 수있는 호스트가 없습니다"라는 메시지가 표시됩니다.

제가 아는 한, Dns.GetHostAddresses은 IP 주소만을 반환합니다.

관련 문제