2013-10-03 3 views
0

특정 사이트에서 socket.gethostbyaddr(ip_addr)을 사용하는 동안 호스트 이름을 가져 오는 데 문제가 있습니다.파이썬 소켓 : gethostbyaddr : 역방향 DNS 조회 실패

어떤 사이트가 작동하지 않는지에 대해서는 자세히 설명하지 않겠습니다.

그래서 이름으로 호스트를 얻는 것은 지금까지 시도한 모든 사이트에서 잘 작동하지만 그 다음 사이트 이름을 가져 오려고하면 오류가 발생합니다. ing host not found.

전체 데이터가있는 것이 좋을 수도 있고 대안이 될 수도 있습니다. 수정이 없다면 호스트 이름을 생략 할 수 있습니다. 더 이상. 도와 주셔서 감사합니다.

# not full code 
hostip = socket.gethostbyname(hostname) 
print socket.gethostbyaddr(hostip) 

Error: socket.herror: [Errno 11004] host not found 
+2

모든 사이트에 역방향 DNS가 올바르게 구성되어있는 것은 아닙니다. 때로는 의도적 인 경우가 있습니다. 내부 주소를보고 네트워크 내부에 필요가 없기 때문에 때로는 설정하기가 어렵습니다. 때로는 누군가 망친 것입니다. 그게 네가 묻고있는 전부인가? 또는 전체 2 차 수준의 DNS 데이터를 다운로드하고 다른 규칙으로 자신의 역방향 맵을 작성할 수 있는지 여부를 묻는 중입니까? 아니면 ...? – abarnert

+0

@abarnert 네, 제 질문에 답했습니다. 감사. 질문이 혼란 스럽다면 미안 해요. – Crispy

답변

2

모든 IP 주소에 역 DNS가있는 것은 아닙니다. 때로는 의도적 인 경우가 있습니다. 내부 주소를보고 네트워크 내부에 필요가 없기 때문에 때로는 설정하기가 어렵습니다. 때로는 누군가 망친 것입니다.

이유는 누구입니까? 가장 일반적으로 여러 도메인 이름이 동일한 IP 주소에 매핑되기 때문입니다.

예를 들어 공유 호스팅 사이트는 고객 3 명 (www.foo.com, www.bar.com 및 www.baz.com)을 모두 1.2.3.4로 매핑 할 수 있습니다. HTTP는 Host: 헤더에 요청 된 호스트 이름을 제공하므로 브라우저가 가고자하는 사이트를 파악할 수 있습니다. 그러나 HTTP (또는 다른 상위 프로토콜) 이외에는 1.2.3.4를 사용하여 세 가지 이름 중 어느 것이 의미하는지 파악할 방법이 없습니다. 그래서, 그들이 당신에게 유용 할 수있는 것은 없습니다. 또한 자신의 IT 직원에게 유용 할 shared_1234.hostingcompany.com과 같은 이름이있을 수 있습니다.이 경우 제공 할 수도 있지만 그렇지 않으면 역 DNS를 사용하지 않아도됩니다.