DNS 캐시 효율성 / 캐시 된 항목을 측정하는 방법은 무엇입니까?


16

dnsmasq데비안 서버에서 캐싱 전용 DNS 서버로 구성 했으며 제대로 작동합니다 (발굴을 통해 DNS 응답 시간이 향상되고 있음).

그러나 dnsmasq캐싱 이 무엇인지 한 번 에 알고 싶습니다 . 따라서 달성하는 효율성 (예 : 적중률)에 대해 생각하기 시작할 수 있습니다.

매뉴얼 페이지와 웹을 둘러 보았으며 dnsmasq(예를 들어 dnsmasq.lease 파일에 보관 된 임대를 위해 할 수있는 것과 달리) 캐싱이 무엇인지 어떻게 볼 수 없습니다 .

는 IS dnsmasqDNS 캐시는 메모리에? 아니면 로그 파일을 삭제해야합니까?

답변:


22

액세스 할 수는 dnsmasq없지만 제목이 dnsmasq입니다. 캐싱입니까? USR1 신호를 dnsmasq프로세스로 보내서 시스템 로그에 통계를 덤프 할 수 있습니다.

$ sudo pkill -USR1 dnsmasq

그런 다음 시스템 로그를 참조하십시오.

$ sudo tail /var/log/syslog
Jan 21 13:37:57 dnsmasq[29469]: time 1232566677
Jan 21 13:37:57 dnsmasq[29469]: cache size 150, 0/475 cache insertions re-used unexpired cache entries.
Jan 21 13:37:57 dnsmasq[29469]: queries forwarded 392, queries answered locally 16
Jan 21 13:37:57 dnsmasq[29469]: server 208.67.222.222#53: queries sent 206, retried or failed 12
Jan 21 13:37:57 dnsmasq[29469]: server 208.67.220.220#53: queries sent 210, retried or failed 6

참고 :dnsmasq 캐시에 RAM 이 유지 된다고 생각합니다 .

따라서 캐시를 덤프하려면 호출이 -q있을 때 스위치 를 활성화해야합니다 dnsmasq. 이것은 dnsmasqman 페이지 에서 언급됩니다 :

   -d, --no-daemon
        Debug mode: don't fork to the background, don't write a pid file, 
        don't change user id, generate a complete cache dump  on
        receipt on SIGUSR1, log to stderr as well as syslog, don't fork new 
        processes to handle TCP queries. Note that this option is for use in 
        debugging only, to stop dnsmasq daemonising in production, use -k.

   -q, --log-queries
        Log the results of DNS queries handled by dnsmasq. Enable a full 
        cache dump on receipt of SIGUSR1.

1
감사합니다. 작동하는 것 같고 다음과 유사한 출력을 생성합니다. 10 월 20 일 08:39:17 dnsmasq [4846] : 시간 1413790757 10 월 20 일 08:39:17 dnsmasq [4846] : 캐시 크기 4096, 0/59976 캐시 삽입이 다시 만료되지 않은 캐시 항목을 사용했습니다. 10 월 20 일 08:39:17 dnsmasq [4846] : 쿼리 전달됨 13376, 로컬에서 응답 한 쿼리 1326 따라서 총 캐시 항목 히트는 1326/14702이며, 이는 약 9 %입니다. 더 오래 실행하고 방문하는 동일한 사이트의 사이트가 많을수록 그 결과가 발생할 수 있습니다.
binaryfrost

OpenWRT 기반 라우터에서는을 사용하십시오 logread | tail.
Brian

1
@binaryfrost 캐시 된 DNS 주소 당 메모리 사용량에 대한 아이디어가 있습니까? 캐시 크기가 500,000 인 경우 사용 가능한 메모리 양을 기록합니다.
satch_boogie

systemd를 사용하는 시스템에는 / var / log / syslog가 없으며 SIGUSR1을 journalctl출력 한 후 dnsmasq에 대한 항목을 찾을 수 없습니다 . dnsmasq가 레코드를 덤프 할 위치를 명시 적으로 지정하는 방법이 있습니까?
Sergiy Kolodyazhnyy

2

매뉴얼 페이지에서이 정보를 얻는 또 다른 방법 :

캐시 통계는 또한 도메인 바인드에서 클래스 CHAOS 및 TXT 유형의 쿼리에 대한 응답으로 DNS에서 사용 가능합니다. 도메인 이름은 cachesize.bind, insertions.bind, evictions.bind, misses.bind, hits.bind, auth.bind 및 servers.bind입니다. dig 유틸리티를 사용하여 이것을 쿼리하는 예제 명령은 다음과 같습니다.

   dig +short chaos txt cachesize.bind
   dig +short chaos txt hits.bind
   dig +short chaos txt misses.bind

시스템에 systemd-resolve와 같은 것이 있으면 다음을 사용하여 서버를 직접 쿼리해야합니다.

   dig +short chaos txt hits.bind @serverIP
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.