Назад | Перейти на главную страницу

Могу ли я регистрировать конкретные запросы в Bind 9?

Я хотел бы знать, какие хосты выполняют определенный DNS-запрос и в какое время. Есть ли способ получить такие логи на Bind 9?

Например, я могу записать все A запросы для xyzzy.net.

Нет, отчеты о регистрации не поддерживают фильтры. Вы можете отправить журналы привязки в системный журнал, а затем отфильтровать только IP-адрес клиента и запись A в правилах системного журнала. Это, наверное, самый простой способ.

Поместите правильный вид раздела канала в блок журналирования {} в named.conf.

        channel "client" {
            file "/var/log/client_named.log";
            severity info;
            print-time yes;
        };

вероятно, добился бы цели. Это должно дать вам такие данные:

22-Apr-2011 12:06:53.294 client xxx.xxx.xxx.xxx#56202: view external-in: query: st.in.multi.surbl.org IN A +

РЕДАКТИРОВАТЬ: Предупреждение - включение этого вида ведения журнала будет очень быстро создавать очень большие файлы журнала и может легко заполнить ваш диск без какого-либо вращения / сжатия журнала и, вероятно, лучше всего подходит для короткого сеанса сбора данных, а не постоянная конфигурация.

Если это (вместе с последующей обработкой итогового файла журнала) слишком много, вы можете сделать это с помощью такого инструмента, как tcpdump.

tcpdump -i eth0 dst port 53 | egrep 'A' | egrep 'xyyzyy.com'

или даже лучше, написать фильтр для соответствия только правым битам пакета DNS, который вы хотите фильтровать (в данном случае тип A?)

Однако, вероятно, проще использовать такой инструмент, как dnstop. веб-страница dnstop будет выполнять все декодирование протокола за вас, а IIRC вы можете фильтровать его вывод с помощью -n, чтобы ограничить то, что он захватывает, одним доменом.