Как посмотреть кэш DNS сервера BIND
Рубрика: DNS | Дата: 21 Апр 2009
DNS сервер BIND хранит свой кэш (записи о доменах, которые уже запрашивали, и которые еще не потеряли свою актуальность) в оперативной памяти, а мне захотелось его посмотреть, чтобы проверить – есть ли там хоть что-то.
Решение простое. Делал на FreeBSD 7.1
Предполагается, что BIND DNS у вас уже установлен и работает.
В консоли пишем
rndc dumpdb -cache
Потом идем
cd /var/named/var/dump/
и там находим фал дампа кэша BIND
называется он named_dump.db
А с ним уже делайте что хотите
. Можно просто открыть и почитать записи, можно например перед тем, как сделать дамп, дать пинг на какое-нибудь экзотическое имя домена. У меня это cnn.com – я туда никогда не хожу
.
т.е. сначала
ping cnn.com
PING cnn.com (157.166.224.25): 56 data bytes
^C
затем делаем запись кэша DNS в файл
rndc dumpdb -cache
а потом поищем наш cnn.com в кэше.
cat /var/named/var/dump/named_dump.db | grep cnn
cnn.com. 472 NS twdns-04.ns.aol.com.
Все ок, cnn.com у нас есть в кэше. Такая проверка работает, если ваш компьютер использует только один DNS, который на ней же и установлен. Для достоверности можно сделать запрос сначала именно через свой DNS сервер, например так (у меня DNS слушает 127.0.0.1 т.е. внешних клиентов он не обслуживает).
dig @127.0.0.1 cnn.com
; <<>> DiG 9.4.2-P2 <<>> @127.0.0.1 cnn.com
; (1 server found)
;; global options: printcmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 21149
;; flags: qr rd ra; QUERY: 1, ANSWER: 4, AUTHORITY: 4, ADDITIONAL: 0
;; QUESTION SECTION:
;cnn.com. IN A
;; ANSWER SECTION:
cnn.com. 56 IN A 157.166.226.25
cnn.com. 56 IN A 157.166.226.26
cnn.com. 56 IN A 157.166.224.25
cnn.com. 56 IN A 157.166.224.26
;; AUTHORITY SECTION:
cnn.com. 356 IN NS twdns-04.ns.aol.com.
cnn.com. 356 IN NS twdns-03.ns.aol.com.
cnn.com. 356 IN NS twdns-01.ns.aol.com.
cnn.com. 356 IN NS twdns-02.ns.aol.com.
;; Query time: 0 msec
;; SERVER: 127.0.0.1#53(127.0.0.1)
;; WHEN: Tue Apr 21 13:55:48 2009
;; MSG SIZE rcvd: 188
ну а потом уже кэш в файл и там ищем cnn.
Ну или способ попроще
.
В консоли пишем
dig @127.0.0.1 free.com
; <<>> DiG 9.4.2-P2 <<>> @127.0.0.1 free.com
; (1 server found)
;; global options: printcmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 28468
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 2, ADDITIONAL: 0
;; QUESTION SECTION:
;free.com. IN A
;; ANSWER SECTION:
free.com. 300 IN A 64.38.232.180
;; AUTHORITY SECTION:
free.com. 172800 IN NS trafficdns1.ddc.com.
free.com. 172800 IN NS trafficdns2.ddc.com.
;; Query time: 377 msec
;; SERVER: 127.0.0.1#53(127.0.0.1)
;; WHEN: Tue Apr 21 13:58:16 2009
;; MSG SIZE rcvd: 98
Нам интересна строка Query time: 377 msec Это время, которое ушло на запрос. 0.3 секунды.
Делаем этот же запрос еще раз
dig @127.0.0.1 free.com
; <<>> DiG 9.4.2-P2 <<>> @127.0.0.1 free.com
; (1 server found)
;; global options: printcmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 41728
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 2, ADDITIONAL: 0
;; QUESTION SECTION:
;free.com. IN A
;; ANSWER SECTION:
free.com. 296 IN A 64.38.232.180
;; AUTHORITY SECTION:
free.com. 172796 IN NS trafficdns1.ddc.com.
free.com. 172796 IN NS trafficdns2.ddc.com.
;; Query time: 1 msec
;; SERVER: 127.0.0.1#53(127.0.0.1)
;; WHEN: Tue Apr 21 13:58:20 2009
;; MSG SIZE rcvd: 98
Видим, что Query time: 1 msec. В 300 раз быстрее
. Данные взяты из кэша. Разумеется кэш имеет срок жизни. Администратор DNS сервера сам устанавливает TTL (Time To Live время жизни записей). После устаревания запись будет удалена из кэша, пока снова в него не поступит. Время жизни записи отображается в строке
;; ANSWER SECTION:
free.com. 300 IN A 64.38.232.180
это в первом запросе, во втором запросе значение другое
;; ANSWER SECTION:
free.com. 296 IN A 64.38.232.180
Часики тикают
.
P.S. Адреса сайтов выбраны случайно, за их содержимое ответственности не несу
.
Оставить комментарий или два