2013-06-06 8 views
1

각 쿼리에 DNS 레코드 용 원본 TTL을 가져와야합니다. DNS 확인 프로그램은 첫 번째 쿼리에서만 원래의 ttl을 표시합니다. 각 다음 쿼리에서 캐시를 다시 설정할 시간을 보여줍니다.Python DNS 확인자 및 원래 TTL

>>> answer = dns.resolver.query('www.stackoverflow.com') 
>>> print answer.rrset.ttl 
300 
>>> answer = dns.resolver.query('www.stackoverflow.com') 
>>> print answer.rrset.ttl 
292 

어떤 검색어로 어떻게 원본 TTL을 얻을 수 있습니까?

+0

로컬 이름 서버에서 각 쿼리 사이에 시간을 주어야하며, 마지막 DNS 쿼리 응답 저장은 20 분 (확실하지 않음) –

+0

'dig www.google.com' 명령을 사용하면';; 답 부분 :'www.google.com과 같은 것을 얻을 것입니다. \t 218 IN A 74.125.135.99' 여기서 '218'은 쿼리 결과가 DNS 데이터베이스의 로컬 이름 서버에 218 초 동안 저장된다는 것을 의미합니다. 이 명령을 다시 시도해보십시오.'218'은 시간이 지나면'0'으로 감소 할 때 감소 할 것입니다. –

+0

@GrijeshChauhan 나는 그것을 안다. 그래서 원래의 ttl을 얻는 최적의 방법은 무엇입니까? 이 작업을 위해 캐시가없는 자체 DNS 서버를 배포하고 싶지 않습니다. 캐시가없는 다른 쪽의 DNS 서버는 매우 느립니다. –

답변

4

신뢰할 수있는 서버를 직접 쿼리하여 원본 TTL 만 얻을 수 있습니다. 이것은 파이썬에 한정되지 않습니다.

  1. 원하는 이름의 NS 레코드를 쿼리하여 권한있는 네임 서버 집합을 확인합니다. 이름에 대한 NS 레코드를 찾지 못하면 첫 번째 레이블을 제거하고 다시 쿼리하십시오 (상위 도메인 쿼리). NS 레코드를 얻을 때까지 재귀 적으로 반복합니다.
  2. NS 레코드가 있으면 네임 서버에 원래 요청한 이름을 직접 쿼리하십시오. 하나 이상의 네임 서버가 응답하지 않는 경우 목록의 다음 이름을 쿼리하십시오.

이것은 기본적으로 재귀 적 리졸버 작업의 일부분을 수행하는 것과 같습니다.

+1

재귀 적 해석기의 복제 작업이 중요하다고 생각됩니다. – CrackerJack9