Архивы

BIND: Настройка DNS-сервера. Часть1

BIND (Berkeley Internet Domain Name System) — открытая реализация системы DNS, в системе FreeBSD установлен по умолчанию. BIND — это не отдельная программа, а набор взаимодействующих компонентов:

  • named — сервер — отвечает на запросы;
  • resolver — клиент — опрашивает другие dns-сервера; resolver library;
  • dig, host, nslookup — набор утилит для диагностики работы DNS;

BIND — универсален. Его можно использовать и как авторитетный (master/slave) dns-сервер, и как кеширующий, и как перенаправляющий.

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

Коротко о том, что должно получиться:

  • кеширующий сервер, обрабатывающий запросы определенных ip-адресов;
  • авторитетный master сервер, содержащий 1 прямую зону и несколько обратных;
  • slave попросим повесить у провайдера, а можно и воспользоваться бесплатным сервисом  — secondary.net.ua;

Файлы конфигурации можно найти в /etc/namedb, что является символической ссылкой на /var/named/etc/namedb:

[14:56]root@noc# ls -al /etc/namedb
lrwxr-xr-x 1 root wheel 23 Apr 5 09:05 /etc/namedb -> ../var/named/etc/namedb

[14:57]root@noc# ls -al /etc/namedb/
total 33
drwxr-xr-x 6 root wheel 8 Apr 5 09:05 .
drwxr-xr-x 3 root wheel 3 Apr 5 09:03 ..
drwxr-xr-x 2 bind wheel 2 Apr 5 09:03 dynamic
drwxr-xr-x 2 root wheel 5 Apr 5 09:05 master
-rw-r--r-- 1 root wheel 19573 Apr 5 09:05 named.conf
-rw-r--r-- 1 root wheel 3134 Apr 5 09:05 named.root
drwxr-xr-x 2 bind wheel 2 Apr 5 09:03 slave
drwxr-xr-x 2 bind wheel 2 Apr 5 09:03 working

Настройка кеширующего dns-сервера:

Кеширующий сервер слушает udp и tcp порт 53, на который принимает рекурсивные (в подавляющем большинстве) запросы клиентов на разрешения каких-либо доменных имен. Приняв запрос от клиента, named сначала ищет ответ в своем кеше, и если не находит, начинает опрашивать другие dns-сервера, начиная с корневых, с помощью нерекурсивных запросов. Получив окончательный ответ (т.е. искомый ip-адрес нужного домена), сохраняет его в кеш и отправляет клиенту.

Для настройка кеширующего сервера эти файлы являются обязательными:

  • named.conf — главный conf-файл демона named;
  • named.root — файл, содержащий перечень корневых серверов — оставляем без изменений;

Файл конфигурации состоит из набора инструкций, каждая из которых заканчивается точкой с запятой. Все, что помечено «//», «/*  текст */» и «#» — комментарии.

Редактируем named.conf

Настройка опций (инструкция options):

options {

// # Все файлы и пути относительны chroot директории,
// # в другом случае должны быть определены полностью:
 directory "/etc/namedb/working";
 pid-file "/var/run/named/pid";
 dump-file "/var/dump/named_dump.db";
 statistics-file "/var/stats/named.stats";


// # Разрешить рекурсивные запросы из следующего списка ip-адресов:
 allow-recursion {
 10.10.10.0/24;
 192.168.1.0/24
 };

// # Если сервер не знает ответа на запрос, он запрашивает другие сервера, и делает это с указаного здесь адреса:
 query-source address 10.10.10.10;

// # Обманываем любопытных кулхацкеров, которые интересуются версией нашего bind'a:
 version "Microsoft DNS Server ver. 0.99alpha";

// # Указываем, на каких интерфейсах слушать запросы:
 listen-on { 127.0.0.1; 10.10.10.10; };

Далее оставляем все, как есть:

// # Как я понимаю, у нас есть пустые  зоны для IPv6, которым мы не пользуемся, поэтому дисейблим:
// These zones are already covered by the empty zones listed below.
// If you remove the related empty zones below, comment these lines out.
 disable-empty-zone "255.255.255.255.IN-ADDR.ARPA";
 disable-empty-zone "0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.IP6.ARPA";
 disable-empty-zone "1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.IP6.ARPA";
};

Подключение файла подсказок named.root, как уже было сказано, в нем указывается перечень корневых серверов:

// The traditional root hints mechanism. Use this, OR the slave zones below.
zone "." { type hint; file "/etc/namedb/named.root"; };

Указание следующих зон локально предотвращают запросы для этих зон вне нашей сети и ненужные запросы к корневым серверам:

// RFCs 1912, 5735 and 6303 (and BCP 32 for localhost)
zone "localhost" { type master; file "/etc/namedb/master/localhost-forward.db"; };
zone "127.in-addr.arpa" { type master; file "/etc/namedb/master/localhost-reverse.db"; };
zone "255.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; };

// RFC 1912-style zone for IPv6 localhost address (RFC 6303)
zone "0.ip6.arpa" { type master; file "/etc/namedb/master/localhost-reverse.db"; };

// "This" Network (RFCs 1912, 5735 and 6303)
zone "0.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; };

// Private Use Networks (RFCs 1918, 5735 and 6303)
zone "10.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; };
zone "16.172.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; };
zone "17.172.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; };
zone "18.172.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; };
zone "19.172.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; };
zone "20.172.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; };
zone "21.172.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; };
zone "22.172.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; };
zone "23.172.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; };
zone "24.172.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; };
zone "25.172.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; };
zone "26.172.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; };
zone "27.172.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; };
zone "28.172.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; };
zone "29.172.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; };
zone "30.172.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; };
zone "31.172.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; };
zone "168.192.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; };

// Shared Address Space (RFC 6598)
zone "64.100.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; };
zone "65.100.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; };
zone "66.100.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; };
zone "67.100.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; };
zone "68.100.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; };
zone "69.100.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; };
zone "70.100.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; };
zone "71.100.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; };
zone "72.100.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; };
zone "73.100.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; };
zone "74.100.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; };
zone "75.100.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; };
zone "76.100.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; };
zone "77.100.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; };
zone "78.100.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; };
zone "79.100.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; };
zone "80.100.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; };
zone "81.100.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; };
zone "82.100.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; };
zone "83.100.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; };
zone "84.100.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; };
zone "85.100.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; };
zone "86.100.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; };
zone "87.100.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; };
zone "88.100.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; };
zone "89.100.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; };
zone "90.100.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; };
zone "91.100.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; };
zone "92.100.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; };
zone "93.100.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; };
zone "94.100.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; };
zone "95.100.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; };
zone "96.100.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; };
zone "97.100.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; };
zone "98.100.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; };
zone "99.100.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; };
zone "100.100.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; };
zone "101.100.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; };
zone "102.100.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; };
zone "103.100.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; };
zone "104.100.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; };
zone "105.100.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; };
zone "106.100.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; };
zone "107.100.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; };
zone "108.100.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; };
zone "109.100.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; };
zone "110.100.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; };
zone "111.100.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; };
zone "112.100.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; };
zone "113.100.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; };
zone "114.100.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; };
zone "115.100.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; };
zone "116.100.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; };
zone "117.100.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; };
zone "118.100.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; };
zone "119.100.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; };
zone "120.100.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; };
zone "121.100.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; };
zone "122.100.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; };
zone "123.100.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; };
zone "124.100.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; };
zone "125.100.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; };
zone "126.100.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; };
zone "127.100.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; };

// Link-local/APIPA (RFCs 3927, 5735 and 6303)
zone "254.169.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; };

// IETF protocol assignments (RFCs 5735 and 5736)
zone "0.0.192.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; };

// TEST-NET-[1-3] for Documentation (RFCs 5735, 5737 and 6303)
zone "2.0.192.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; };
zone "100.51.198.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; };
zone "113.0.203.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; };

// IPv6 Example Range for Documentation (RFCs 3849 and 6303)
zone "8.b.d.0.1.0.0.2.ip6.arpa" { type master; file "/etc/namedb/master/empty.db"; };

// Domain Names for Documentation and Testing (BCP 32)
zone "test" { type master; file "/etc/namedb/master/empty.db"; };
zone "example" { type master; file "/etc/namedb/master/empty.db"; };
zone "invalid" { type master; file "/etc/namedb/master/empty.db"; };
zone "example.com" { type master; file "/etc/namedb/master/empty.db"; };
zone "example.net" { type master; file "/etc/namedb/master/empty.db"; };
zone "example.org" { type master; file "/etc/namedb/master/empty.db"; };

// Router Benchmark Testing (RFCs 2544 and 5735)
zone "18.198.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; };
zone "19.198.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; };

// IANA Reserved - Old Class E Space (RFC 5735)
zone "240.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; };
zone "241.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; };
zone "242.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; };
zone "243.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; };
zone "244.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; };
zone "245.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; };
zone "246.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; };
zone "247.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; };
zone "248.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; };
zone "249.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; };
zone "250.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; };
zone "251.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; };
zone "252.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; };
zone "253.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; };
zone "254.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; };

// IPv6 Unassigned Addresses (RFC 4291)
zone "1.ip6.arpa" { type master; file "/etc/namedb/master/empty.db"; };
zone "3.ip6.arpa" { type master; file "/etc/namedb/master/empty.db"; };
zone "4.ip6.arpa" { type master; file "/etc/namedb/master/empty.db"; };
zone "5.ip6.arpa" { type master; file "/etc/namedb/master/empty.db"; };
zone "6.ip6.arpa" { type master; file "/etc/namedb/master/empty.db"; };
zone "7.ip6.arpa" { type master; file "/etc/namedb/master/empty.db"; };
zone "8.ip6.arpa" { type master; file "/etc/namedb/master/empty.db"; };
zone "9.ip6.arpa" { type master; file "/etc/namedb/master/empty.db"; };
zone "a.ip6.arpa" { type master; file "/etc/namedb/master/empty.db"; };
zone "b.ip6.arpa" { type master; file "/etc/namedb/master/empty.db"; };
zone "c.ip6.arpa" { type master; file "/etc/namedb/master/empty.db"; };
zone "d.ip6.arpa" { type master; file "/etc/namedb/master/empty.db"; };
zone "e.ip6.arpa" { type master; file "/etc/namedb/master/empty.db"; };
zone "0.f.ip6.arpa" { type master; file "/etc/namedb/master/empty.db"; };
zone "1.f.ip6.arpa" { type master; file "/etc/namedb/master/empty.db"; };
zone "2.f.ip6.arpa" { type master; file "/etc/namedb/master/empty.db"; };
zone "3.f.ip6.arpa" { type master; file "/etc/namedb/master/empty.db"; };
zone "4.f.ip6.arpa" { type master; file "/etc/namedb/master/empty.db"; };
zone "5.f.ip6.arpa" { type master; file "/etc/namedb/master/empty.db"; };
zone "6.f.ip6.arpa" { type master; file "/etc/namedb/master/empty.db"; };
zone "7.f.ip6.arpa" { type master; file "/etc/namedb/master/empty.db"; };
zone "8.f.ip6.arpa" { type master; file "/etc/namedb/master/empty.db"; };
zone "9.f.ip6.arpa" { type master; file "/etc/namedb/master/empty.db"; };
zone "a.f.ip6.arpa" { type master; file "/etc/namedb/master/empty.db"; };
zone "b.f.ip6.arpa" { type master; file "/etc/namedb/master/empty.db"; };
zone "0.e.f.ip6.arpa" { type master; file "/etc/namedb/master/empty.db"; };
zone "1.e.f.ip6.arpa" { type master; file "/etc/namedb/master/empty.db"; };
zone "2.e.f.ip6.arpa" { type master; file "/etc/namedb/master/empty.db"; };
zone "3.e.f.ip6.arpa" { type master; file "/etc/namedb/master/empty.db"; };
zone "4.e.f.ip6.arpa" { type master; file "/etc/namedb/master/empty.db"; };
zone "5.e.f.ip6.arpa" { type master; file "/etc/namedb/master/empty.db"; };
zone "6.e.f.ip6.arpa" { type master; file "/etc/namedb/master/empty.db"; };
zone "7.e.f.ip6.arpa" { type master; file "/etc/namedb/master/empty.db"; };

// IPv6 ULA (RFCs 4193 and 6303)
zone "c.f.ip6.arpa" { type master; file "/etc/namedb/master/empty.db"; };
zone "d.f.ip6.arpa" { type master; file "/etc/namedb/master/empty.db"; };

// IPv6 Link Local (RFCs 4291 and 6303)
zone "8.e.f.ip6.arpa" { type master; file "/etc/namedb/master/empty.db"; };
zone "9.e.f.ip6.arpa" { type master; file "/etc/namedb/master/empty.db"; };
zone "a.e.f.ip6.arpa" { type master; file "/etc/namedb/master/empty.db"; };
zone "b.e.f.ip6.arpa" { type master; file "/etc/namedb/master/empty.db"; };

// IPv6 Deprecated Site-Local Addresses (RFCs 3879 and 6303)
zone "c.e.f.ip6.arpa" { type master; file "/etc/namedb/master/empty.db"; };
zone "d.e.f.ip6.arpa" { type master; file "/etc/namedb/master/empty.db"; };
zone "e.e.f.ip6.arpa" { type master; file "/etc/namedb/master/empty.db"; };
zone "f.e.f.ip6.arpa" { type master; file "/etc/namedb/master/empty.db"; };

// IP6.INT is Deprecated (RFC 4159)
zone "ip6.int" { type master; file "/etc/namedb/master/empty.db"; };

 Настройка авторитетного dns-сервера (master):

Авторитетный dns-сервер содержит одну или несколько (или целую тучу :-)) зон и отвечает на запросы клиентов и других dns-серверов для разрешения имен именно с этих зон.

Для настройки авторитетного сервера следующие файлы являются обязательными:

  • named.conf – главный conf-файл демона named;
  • pro-voip.com.ua – файл зоны;

Файлы зоны подключаются к серверу с помощью инструкции zone в файле named.conf:

zone "pro-voip.com.ua" {
        type master;
        file "/etc/namedb/master/pro-voip.com.ua";
        allow-transfer { 10.10.10.11; };
};

— здесь указывам имя зоны в кавычках «pro-voip.com.ua», тип зоны — master, с помощью директивы file задаем путь к файлу зоны. Сам файл зоны может храниться где угодно, у меня все master-файлы зоны находятся в директории /etc/namedb/master.

Директива allow-transfer задает список slave-серверов, на которые будет скопирована зона.

Для удобства администрирования я выношу все инструкции zone в отдельный файл master.conf, который подключается к главному конфигурационному файлу named.conf с помощью директивы include вот так:

// ### INCLUDE

include "/etc/namedb/master.conf";

Если необходимо выкосить какую либо из зон с dns-сервера, комментируем соответствующую инструкцию zone, не трогая сам файл зоны. Если нужно убрать с dns-сервера все зоны, просто комментируем инструкцию  include, которая подключает соответствующий файл с зонами. Удобно.

Поднастроим еще опции в named.conf.

options {

// # Разрешаем запросы с любых адресов:
        allow-query     { any; };
// # Механизм, позволяющий masterу оповещать своих slave об изменениях в файлах зон:
        notify yes;
// # Определям локальный source-адресс для отправки notify-сообщений slave'ам:
        notify-source 10.10.10.10;
// # Переливать файл зоны на slave со следующим адресом источника:
        transfer-source 10.10.10.10;
}

 Настройка авторитетного dns-сервера (slave):

Настройка авторитетного slave-сервера отличается от master’а описанием подключения зоны. Создаем отдельный файл slave.conf, где и будем подключать эти самые зоны; подключаем slave.conf в named.conf:

include "/etc/namedb/slave.conf";

Подключение зон выглядит следующим образом:

zone "pro-voip.com.ua" {
        type slave;
        file "/etc/namedb/slave/pro-voip.com.ua";
        masters { 10.10.10.10; };
};

— опять-таки указываем название зоны в кавычках, тип slave; путь к файлу зоны задаем с помощью директивы file; masters — задает список master-серверов, откуда будет скачана зона.

Хочу заметить, что при настройке slave-сервера файл зоны создавать не нужно — нужно лишь указать, в какой файл эта зона на slave будет сохранена.

Настройка логирования

Настройка логов действий демона named производится с помощью инструкции logging, в ней в указываем с помощью channel методы и параметры вывода логов, с помощью category — типы сообщений, которые в этот лог будут записаны:

logging {
 channel logfile {
 file "/var/named/var/log/named.log" versions unlimited size 10m;
 severity info;
 print-category yes;
 print-severity yes;
 print-time yes;
 };
 category default { logfile; };
 category security { logfile; };
 category lame-servers{ null; };
 category config { logfile; };
 category xfer-in { logfile; };
 category xfer-out { logfile; };
 category edns-disabled { null; };
};

Имя канала «logfile»; все, что приходит в этот канал, перенаправляется в файл /var/named/var/log/named.log, количество версий лога неограниченное, размер log-файла 10М. Опции для channel: уровень логирования severity (аналог «приоритетов» syslog’а) — info; печатаем в лог категорию, уровень, время — print-category, print-severity, print-time.

Категории сообщений в логе задаем с помощью директивы category, и эти сообщения перенаправляем в канал logfile. Категории, которые не хотим видеть в логе, отправляем в канал null.

Таким образом с помощью каналов и категорий можно создавать столько логов, сколько вам нужно, и определенного вида.