dnsmasq는 얼마나 오래 dns를 캐시합니까?


9

맨 페이지를 검색하여 dnsmasq가 dns를 캐시하는 시간을 찾을 수 없었습니다. 캐싱 및 만료 규칙은 무엇입니까?

이름 조회에 요청이 외부 서비스로 전송되는 데 때때로 5 초 또는 10 초가 걸리는 문제가 있습니다. 외부 서비스 ip를 / etc / hosts에 저장할 수 있지만 ip 변경이 두렵습니다. Dnsmasq를 설치하면 이름 조회가 향상되지만 느린 이름 조회는 여전히 빈도가 적습니다.

한 가지 해결책은 cron 작업에서 간단한 핑을 설정하는 것이지만 먼저 만료 시간을 찾아야합니다.

감사.

최신 정보

발굴 출력 추가

; <<>> DiG 9.8.1-P1 <<>> api.mch.weixin.qq.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 45012
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0

;; QUESTION SECTION:
;api.mch.weixin.qq.com.             IN      A

;; ANSWER SECTION:
api.mch.weixin.qq.com.      0       IN      A       140.207.69.102

;; Query time: 0 msec
;; SERVER: 127.0.0.1#53(127.0.0.1)
;; WHEN: Fri Jul 17 19:24:36 2015
;; MSG SIZE  rcvd: 55

업데이트 2

이전 발굴 출력에는 TTL이 0으로 포함되어 오해의 소지가 있습니다. 다른 발굴 결과를 게시했습니다.

; <<>> DiG 9.8.1-P1 <<>> api.mch.weixin.qq.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 60900
;; flags: qr rd ra; QUERY: 1, ANSWER: 3, AUTHORITY: 0, ADDITIONAL: 0

;; QUESTION SECTION:
;api.mch.weixin.qq.com.             IN      A

;; ANSWER SECTION:
api.mch.weixin.qq.com.      181     IN      CNAME   forward.qq.com.
forward.qq.com.             181     IN      A       101.226.90.149
forward.qq.com.             181     IN      A       101.226.129.200

;; Query time: 0 msec
;; SERVER: 127.0.0.1#53(127.0.0.1)
;; WHEN: Tue Jul 21 12:01:54 2015
;; MSG SIZE  rcvd: 99

답변:


9

DNSmasq는 캐싱 기간을 결정하기 위해 DNS TTL 값을 사용합니다. 이 dig명령을 사용하여 해당 도메인에 대한 DNS 서버의 현재 TTL을 쿼리 할 수 있습니다 .


dnsmasq가 TTL 기간 내에 dns 만 캐시한다는 것을 의미합니까? 발굴 결과로 내 질문을 업데이트했습니다.
perlwle

1
예, 캐싱에는 TTL 기간 만 사용됩니다. 그리고 TTL이 0이므로 DNSmasq는 항상 권한있는 DNS 서버에 쿼리합니다.
Tero Kilkanen

그러나 매뉴얼에 명시된대로 --max-cache-ttl 을 사용 하여 캐시 된 값에 대해 더 낮은 TTL을 강제로 낮출 수 있습니다 (자체 테스트하지는 않음).
sam_pan_mariusz

@TeroKilkanen Query time: 0msec은 dnsmasq에 대한 캐시 적중을 의미합니다. 그러나 dnsmasq는 dns 레코드를 캐시에 얼마나 오래 보관합니까?
perlwle

@sam_pan_mariusz 당신이 --max_ttl깃발 을 의미한다고 생각 합니까? 외부 서비스 IP 변경을 놓치는 것보다 항상 올바른 IP를 얻고 싶습니다.
perlwle

4

dnsmasq에 대해 설정해야하는 옵션 --min-cache-ttl은 초입니다.

발굴 출력에 따르면 TTL은 0입니다. 예를 들어으로 설정하면 --min-cache-ttl=600dig에 의해 반환되는 TTL 값은 600이됩니다. 내 위치의 TTL api.mch.weixin.qq.com은 600이므로 직접 600 초로 설정하십시오. IP 변경 사항이 누락되지 않도록 합리적으로 안전해야합니다. (중국에 있다고 생각합니다.)

이렇게하면 모든 DNS 레코드가 10 분 동안 유효한 것으로 간주됩니다.

이 기능의 소개를 자세히 설명 하는 dnsmasq 메일 링리스트 메시지를 참조하십시오 .


나는 매 10 분마다 핑을 할 것이고 dns 조회 지연을 수정하기를 바랍니다. 이전 의견에서 언급했듯이 해당 설정이없는 이전 버전을 사용하고 있습니다. 내가 틀렸다면 정정하십시오. 그러나 사용 가능한 경우 600으로 설정하는 것은 외부 서비스 TTL과 동일합니다. 그것은 아무런 차이를 만들지 않습니까?
perlwle

1
@perlwle 아니요, 그렇지 않습니다. 항상 TTL을 0으로 가정하여 1200으로 늘리면 도움이 될 것이라고 생각했습니다. DNSCrypt살펴볼 것을 제안 합니다. 조회 시간, 연결 속도 및 타사의 영향에 대한 추가 정보가 없으면 더 명확하게 답변 할 수 없습니다. 보다 강력한 DNS 캐시 / 리졸버가 필요한 경우 언 바운드에 대한 이 자습서 의 기본 부분을 권장 합니다. 표준 리포지토리에서 Ubuntu 12.04에서 완벽하게 작동합니다. (Google DNS는 현재 DNSSEC를 올바르게 처리합니다.)
Phizes

1
또한 해당 호스트 파일 항목에 대한 dnsmasq 'local-ttl'을 참고하십시오.
KCD
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.