Здесь показаны различия между двумя версиями данной страницы.
| Предыдущая версия справа и слева Предыдущая версия Следующая версия | Предыдущая версия | ||
| freebsd:bind9 [2020/11/22 11:09] alex | freebsd:bind9 [2022/01/08 15:27] (текущий) alex | ||
|---|---|---|---|
| Строка 3: | Строка 3: | ||
| - | ==== Ведение журналов, сбор статистики и отладка ==== | ||
| - | Утверждение **logging** позволяет задать произвольное число способов записи в журнал с помощью предложений **channel** и привязать различные категории сообщений к каналам с помощью предложений **category**. | ||
| - | |||
| - | В предложении **channel** задается имя канала, способ записи (в файл с ограничением его размера (можно использовать масштабирующие коэффициенты K, M и G) и числа версий, syslog, stderr, null), фильтр (минимальный уровень серьезности сообщений для вывода через этот канал) и формат вывода (выводить ли в каждое сообщение имя категории, уровень серьезности и метку времени; по умолчанию - нет): | ||
| - | |||
| - | channel имя-канала { | ||
| - | ( file имя-файла | ||
| - | [ versions ( число | unlimited ) ] | ||
| - | [ size максимальный-размер ] | ||
| - | | syslog syslog_facility | ||
| - | | stderr | ||
| - | | null ); | ||
| - | [ severity (critical | error | warning | notice | | ||
| - | info | debug [ уровень ] | dynamic ); ] | ||
| - | [ print-category yes-или-no; ] | ||
| - | [ print-severity yes-или-no; ] | ||
| - | [ print-time yes-или-no; ] | ||
| - | }; | ||
| - | Версии файла (file, file.0, file.1 и т.д.) перенумеровываются при каждом открытии (кстати, а когда он открывается?), если максимальный размер файла не задан. Если задан и размер и число версий, то перенумеровывание при открытии происходит только при превышении этого размера. Если при записи в файл его максимальный размер будет превышен, то при указании числа версий происходит перенумерация файлов и открывается новый, если число версий не указано, то запись в файл просто прекращается. | ||
| - | |||
| - | Режим отладки задается либо при запуске (ключ -d), либо командой trace программы rndc (выключается командой rndc notrace). Команда trace позволяет указать уровень отладки (чем больше уровень, тем более подробная отладочная информация выдается, уровень 3 достаточно болтлив). При указании фильтра (severity) можно указать определенный уровень отладки (debug [ уровень ]) для включения отладочной печати данного уровня (и ниже) независимо от уровня отладки сервера (лишь бы ее включили) или указать ключевое слово dynamic для отладочной печати уровня, совпадающего с уровнем отладки сервера. | ||
| - | |||
| - | В предложении **category** задается имя категории и список ранее определенных каналов, через которые будут выводиться сообщения данной категории: | ||
| - | |||
| - | category имя-категории { | ||
| - | имя-канала ; [ имя-канала ; ... ] | ||
| - | }; | ||
| - | Определены следующие категории: | ||
| - | |||
| - | * default (определяет каналы для тех категорий, каналы для которых не определены явно; queries при этом не включается) | ||
| - | * general (неотсортированные в другие категории сообщения) | ||
| - | * database (хранение зон и кеш) | ||
| - | * security (при уровне отладки 3 - разрешения и запрещения, наличие подписей) | ||
| - | * config (разбор файла настройки) | ||
| - | * resolver (выполнение рекурсивных запросов клиентов, обращение к другим серверам, объем выдачи зависит от уровня отладки) | ||
| - | * xfer-in | ||
| - | * xfer-out | ||
| - | * notify | ||
| - | * client (обработка клиентских запросов и посылка ответов, уровень отладки 3) | ||
| - | * unmatched (отсутствует класс или view) | ||
| - | * network | ||
| - | * update | ||
| - | * queries (включается командой rndc querylog; явная привязка этой категории к каналам также включает трассировку - severity info) | ||
| - | * dispatch (передача запросов между модулями bind) | ||
| - | * dnssec | ||
| - | * lame-servers (severity info) | ||
| - | * delegation-only (ответы NXDOMAIN в результате действия опции delegation-only) | ||
| - | Переопределять каналы (в т.ч. встроенные) нельзя, но можно привязать категории к новым каналам. Сообщения об ошибках синтаксиса файла настройки и о запуске сервера записываются как будто утверждение logging отсутствует (так что syslog:daemon тоже надо просматривать регулярно). По умолчанию принимается следующая настройка записи в журнал: | ||
| - | |||
| - | logging { | ||
| - | channel default_syslog { | ||
| - | syslog daemon; | ||
| - | severity info; | ||
| - | }; | ||
| - | channel default_debug { | ||
| - | file "named.run"; | ||
| - | severity dynamic; | ||
| - | }; | ||
| - | channel default_stderr { | ||
| - | stderr; | ||
| - | severity info; | ||
| - | }; | ||
| - | channel null { | ||
| - | null; | ||
| - | }; | ||
| - | category default { default_syslog; default_debug; }; | ||
| - | category unmatched { null; }; | ||
| - | }; | ||
| - | Количество статистической информации, собираемой BIND 9 сильно уменьшилось о сравнению с предыдущими версиями. Накопленная статистика добавляется командой rndc stats к файлу named.stats в рабочей директории (options, directory), очередной раздел обрамляется строками "Statistics Dump" с указанием времени в формате UNIX: | ||
| - | |||
| - | * success - число запросов, не вызвавших ошибок или возврата клиенту ссылки | ||
| - | * referral - число запросов, на которые сервер вернул клиенту ссылки | ||
| - | * nxrrset - несуществующих записей запрошенного типа для доменного имени | ||
| - | * nxdomain - несуществующих доменных имен | ||
| - | * recursion - число запросов, потребовавших рекурсивной обработки | ||
| - | * failure - число ошибок, кроме nxrrset и nxdomain | ||
| - | Общее число запросов к серверу равно success + referral + nxrrset + nxdomain + failure. Статистика может собираться отдельно по зонам и видам, в этом случае имена зоны и вида (опускается для вида default) приводятся в конце каждой строки. | ||
| - | |||
| - | Запуск сервера | ||
| - | |||
| - | Рекомендуется создать специальную группу named и пользователя named для запуска сервера. Перед запуском необходимо отредактировать /etc/named.conf, файлы зон и установить соответствующие права доступа к ним и прочим файлам, имеющим отношение к серверу (простой пример). Если необходимо управление сервером с помощью программы rndc, то необходимо также отредактировать /etc/rndc.conf. Ключи запуска: | ||
| - | |||
| - | * -c имя-файла-настройки (полное имя файла) | ||
| - | * -d уровень-отладки | ||
| - | * -f (не уходить в фоновый режим при запуске) | ||
| - | * -g (не уходить в фоновый режим при запуске, вся отладочная печать на stderr) | ||
| - | * -p номер-обслуживаемого-порта | ||
| - | * -u идентификатор-пользователя (сменить эффективный идентификатор пользователя с root на указанный как можно скорее после запуска) | ||
| Строка 403: | Строка 315: | ||
| Чтобы принять 2 вида зоны slave сервер должен иметь 2 адреса, на которые будут передаваться различные виды. | Чтобы принять 2 вида зоны slave сервер должен иметь 2 адреса, на которые будут передаваться различные виды. | ||
| + | === Работа в chroot окружении === | ||
| Для работы в chroot окружении в **/etc/rc.conf** добавляю: | Для работы в chroot окружении в **/etc/rc.conf** добавляю: | ||
| Строка 585: | Строка 498: | ||
| **blackhole**: указывает список хостов, которые входят в черный список (запрещен доступ) для инициализации любых транзакций с данным name-сервером. | **blackhole**: указывает список хостов, которые входят в черный список (запрещен доступ) для инициализации любых транзакций с данным name-сервером. | ||
| + | ==== Ведение журналов, сбор статистики и отладка ==== | ||
| - | * **named-checkzone** – проверяет синтаксис и целостность файлов зон. Такие же проверки выполняются каждый раз перед их загрузкой bind’ом. Но считаю полезным все-таки это делать перед их загрузкой сервером имен. | + | Утверждение **logging** позволяет задать произвольное число способов записи в журнал с помощью предложений **channel** и привязать различные категории сообщений к каналам с помощью предложений **category**. | 
| - | * **named-compilezone** – выполняет более строгие проверки, чем named-checkzone, т.к. в результате ее работы сформируется дамп актуальных зон, который в свою очередь будут использоваться named. | + | |
| - | * **named-checkconf** – утилита проверки файла-конфигурации named.conf | + | В предложении **channel** задается имя канала, способ записи (в файл с ограничением его размера (можно использовать масштабирующие коэффициенты K, M и G) и числа версий, syslog, stderr, null), фильтр (минимальный уровень серьезности сообщений для вывода через этот канал) и формат вывода (выводить ли в каждое сообщение имя категории, уровень серьезности и метку времени; по умолчанию - нет): | 
| + | |||
| + | channel имя-канала { | ||
| + | ( file имя-файла | ||
| + | [ versions ( число | unlimited ) ] | ||
| + | [ size максимальный-размер ] | ||
| + | | syslog syslog_facility | ||
| + | | stderr | ||
| + | | null ); | ||
| + | [ severity (critical | error | warning | notice | | ||
| + | info | debug [ уровень ] | dynamic ); ] | ||
| + | [ print-category yes-или-no; ] | ||
| + | [ print-severity yes-или-no; ] | ||
| + | [ print-time yes-или-no; ] | ||
| + | }; | ||
| + | Версии файла (file, file.0, file.1 и т.д.) перенумеровываются при каждом открытии (кстати, а когда он открывается?), если максимальный размер файла не задан. Если задан и размер и число версий, то перенумеровывание при открытии происходит только при превышении этого размера. Если при записи в файл его максимальный размер будет превышен, то при указании числа версий происходит перенумерация файлов и открывается новый, если число версий не указано, то запись в файл просто прекращается. | ||
| + | |||
| + | Режим отладки задается либо при запуске (ключ -d), либо командой trace программы rndc (выключается командой rndc notrace). Команда trace позволяет указать уровень отладки (чем больше уровень, тем более подробная отладочная информация выдается, уровень 3 достаточно болтлив). При указании фильтра (severity) можно указать определенный уровень отладки (debug [ уровень ]) для включения отладочной печати данного уровня (и ниже) независимо от уровня отладки сервера (лишь бы ее включили) или указать ключевое слово dynamic для отладочной печати уровня, совпадающего с уровнем отладки сервера. | ||
| + | |||
| + | В предложении **category** задается имя категории и список ранее определенных каналов, через которые будут выводиться сообщения данной категории: | ||
| + | |||
| + | category имя-категории { | ||
| + | имя-канала ; [ имя-канала ; ... ] | ||
| + | }; | ||
| + | Определены следующие категории: | ||
| + | |||
| + | * default (определяет каналы для тех категорий, каналы для которых не определены явно; queries при этом не включается) | ||
| + | * general (неотсортированные в другие категории сообщения) | ||
| + | * database (хранение зон и кеш) | ||
| + | * security (при уровне отладки 3 - разрешения и запрещения, наличие подписей) | ||
| + | * config (разбор файла настройки) | ||
| + | * resolver (выполнение рекурсивных запросов клиентов, обращение к другим серверам, объем выдачи зависит от уровня отладки) | ||
| + | * xfer-in | ||
| + | * xfer-out | ||
| + | * notify | ||
| + | * client (обработка клиентских запросов и посылка ответов, уровень отладки 3) | ||
| + | * unmatched (отсутствует класс или view) | ||
| + | * network | ||
| + | * update | ||
| + | * queries (включается командой rndc querylog; явная привязка этой категории к каналам также включает трассировку - severity info) | ||
| + | * dispatch (передача запросов между модулями bind) | ||
| + | * dnssec | ||
| + | * lame-servers (severity info) | ||
| + | * delegation-only (ответы NXDOMAIN в результате действия опции delegation-only) | ||
| + | Переопределять каналы (в т.ч. встроенные) нельзя, но можно привязать категории к новым каналам. Сообщения об ошибках синтаксиса файла настройки и о запуске сервера записываются как будто утверждение logging отсутствует (так что syslog:daemon тоже надо просматривать регулярно). По умолчанию принимается следующая настройка записи в журнал: | ||
| + | |||
| + | logging { | ||
| + | channel default_syslog { | ||
| + | syslog daemon; | ||
| + | severity info; | ||
| + | }; | ||
| + | channel default_debug { | ||
| + | file "named.run"; | ||
| + | severity dynamic; | ||
| + | }; | ||
| + | channel default_stderr { | ||
| + | stderr; | ||
| + | severity info; | ||
| + | }; | ||
| + | channel null { | ||
| + | null; | ||
| + | }; | ||
| + | category default { default_syslog; default_debug; }; | ||
| + | category unmatched { null; }; | ||
| + | }; | ||
| + | Количество статистической информации, собираемой BIND 9 сильно уменьшилось о сравнению с предыдущими версиями. Накопленная статистика добавляется командой rndc stats к файлу named.stats в рабочей директории (options, directory), очередной раздел обрамляется строками "Statistics Dump" с указанием времени в формате UNIX: | ||
| + | |||
| + | * success - число запросов, не вызвавших ошибок или возврата клиенту ссылки | ||
| + | * referral - число запросов, на которые сервер вернул клиенту ссылки | ||
| + | * nxrrset - несуществующих записей запрошенного типа для доменного имени | ||
| + | * nxdomain - несуществующих доменных имен | ||
| + | * recursion - число запросов, потребовавших рекурсивной обработки | ||
| + | * failure - число ошибок, кроме nxrrset и nxdomain | ||
| + | Общее число запросов к серверу равно success + referral + nxrrset + nxdomain + failure. Статистика может собираться отдельно по зонам и видам, в этом случае имена зоны и вида (опускается для вида default) приводятся в конце каждой строки. | ||
| ==== Домен 4-го уровня ==== | ==== Домен 4-го уровня ==== | ||
| Строка 595: | Строка 582: | ||
| ==== Проверка ==== | ==== Проверка ==== | ||
| + | * **named-checkzone** – проверяет синтаксис и целостность файлов зон. Такие же проверки выполняются каждый раз перед их загрузкой bind’ом. Но считаю полезным все-таки это делать перед их загрузкой сервером имен. | ||
| + | * **named-compilezone** – выполняет более строгие проверки, чем named-checkzone, т.к. в результате ее работы сформируется дамп актуальных зон, который в свою очередь будут использоваться named. | ||
| + | * **named-checkconf** – утилита проверки файла-конфигурации named.conf | ||
| Проверяю конфигурационный файл на ошибки | Проверяю конфигурационный файл на ошибки | ||
| named-checkconf /usr/local/etc/namedb/named.conf | named-checkconf /usr/local/etc/namedb/named.conf | ||
| - | Файл зоны можно проверить так: | + | Проверяю файл зоны на ошибки | 
| - | команда Имя Зоны Путь к зоне | + | |
| named-checkzone mgmt.klotik.ru /usr/local/etc/namedb/master/mgmt.klotik.ru | named-checkzone mgmt.klotik.ru /usr/local/etc/namedb/master/mgmt.klotik.ru | ||
| zone mgmt.klotik.ru/IN: loaded serial 2020021300 | zone mgmt.klotik.ru/IN: loaded serial 2020021300 | ||
| Строка 607: | Строка 595: | ||
| ==== Запуск ==== | ==== Запуск ==== | ||
| + | |||
| + | Рекомендуется создать специальную группу named и пользователя named для запуска сервера. Перед запуском необходимо отредактировать /etc/named.conf, файлы зон и установить соответствующие права доступа к ним и прочим файлам, имеющим отношение к серверу (простой пример). Если необходимо управление сервером с помощью программы rndc, то необходимо также отредактировать /etc/rndc.conf. Ключи запуска: | ||
| + | |||
| + | * -c имя-файла-настройки (полное имя файла) | ||
| + | * -d уровень-отладки | ||
| + | * -f (не уходить в фоновый режим при запуске) | ||
| + | * -g (не уходить в фоновый режим при запуске, вся отладочная печать на stderr) | ||
| + | * -p номер-обслуживаемого-порта | ||
| + | * -u идентификатор-пользователя (сменить эффективный идентификатор пользователя с root на указанный как можно скорее после запуска) | ||
| /usr/local/etc/rc.d/named start | /usr/local/etc/rc.d/named start | ||
| Строка 684: | Строка 681: | ||
| Файл настройки rndc (/etc/rndc.conf) имеет такой же синтаксис, что и named.conf. Комментарии могут записываться в стиле C, C++ или sh. Файл настройки состоит из утверждений, завершающихся точкой с запятой. Утверждения содержат блок предложений, заключенный в фигурные скобки. Предложение в блоке также завершается точкой с запятой. Права на чтение этого файла должны быть только у того, кто имеет право запускать rndc. Предусматириваются следующие типы утверждений: | Файл настройки rndc (/etc/rndc.conf) имеет такой же синтаксис, что и named.conf. Комментарии могут записываться в стиле C, C++ или sh. Файл настройки состоит из утверждений, завершающихся точкой с запятой. Утверждения содержат блок предложений, заключенный в фигурные скобки. Предложение в блоке также завершается точкой с запятой. Права на чтение этого файла должны быть только у того, кто имеет право запускать rndc. Предусматириваются следующие типы утверждений: | ||
| - | options { | + | options { | 
| - | default-server имя-или-адрес-сервера; | + | default-server имя-или-адрес-сервера; | 
| - | default-key "имя-ключа"; | + | default-key "имя-ключа"; | 
| - | default-port номер-управляющего-порта; | + | default-port номер-управляющего-порта; | 
| - | } | + | } | 
| - | server имя-или-адрес-сервера { // адрес в двойных кавычках | + | server имя-или-адрес-сервера { // адрес в двойных кавычках | 
| - | key "имя-ключа"; | + | key "имя-ключа"; | 
| - | port номер-управляющего-порта; | + | port номер-управляющего-порта; | 
| - | } | + | } | 
| - | key "имя-ключа" | + | key "имя-ключа" | 
| - | algorithm hmac-md5; | + | algorithm hmac-md5; | 
| - | secret "base-64-кодированный-ключ"; | + | secret "base-64-кодированный-ключ"; | 
| - | } | + | } | 
| - | Утилита rndc-confgen позволяет сгенерировать /etc/rndc.conf со случайным ключом (и закоментаренные предложения controls и key для /etc/named.conf). Следующими ключами можно модифицировать получаемый файл: | + | Утилита rndc-confgen позволяет сгенерировать /etc/rndc.conf со случайным ключом (и закомментированные предложения controls и key для /etc/named.conf). Следующими ключами можно модифицировать получаемый файл: | 
| - | -b размер-ключа (по умолчанию - 128; от 1 до 512) | + | * -b размер-ключа (по умолчанию - 128; от 1 до 512) | 
| - | -k имя-ключа (по умолчанию - rndc-key) | + | * -k имя-ключа (по умолчанию - rndc-key) | 
| - | -p номер-управляющего-порта (по умолчанию - 953) | + | * -p номер-управляющего-порта (по умолчанию - 953) | 
| - | -s имя-или-адрес-сервера (по умолчанию - 127.0.0.1) | + | * -s имя-или-адрес-сервера (по умолчанию - 127.0.0.1) | 
| Утилита rndc позволяет менять параметры соединения с сервером с помощью ключей: | Утилита rndc позволяет менять параметры соединения с сервером с помощью ключей: | ||
| - | -c имя-файла-настройки | + | * -c имя-файла-настройки | 
| - | -s имя-или-адрес-сервера | + | * -s имя-или-адрес-сервера | 
| - | -p номер-управляющего-порта | + | * -p номер-управляющего-порта | 
| - | -y имя-ключа | + | * -y имя-ключа | 
| - | -V (трассировка исполнения для отладки) | + | * -V (трассировка исполнения для отладки) | 
| Если запустить rndc без указания команды, то она выдаст список поддерживаемых команд: | Если запустить rndc без указания команды, то она выдаст список поддерживаемых команд: | ||
| Строка 791: | Строка 788: | ||
| https://toster.ru/q/67146\\ | https://toster.ru/q/67146\\ | ||
| https://miac.volmed.org.ru/wiki/index.php/%D0%9D%D0%B0%D1%81%D1%82%D1%80%D0%BE%D0%B9%D0%BA%D0%B0_DNS_%D1%81%D0%B5%D1%80%D0%B2%D0%B5%D1%80%D0%B0_(named9)\\ | https://miac.volmed.org.ru/wiki/index.php/%D0%9D%D0%B0%D1%81%D1%82%D1%80%D0%BE%D0%B9%D0%BA%D0%B0_DNS_%D1%81%D0%B5%D1%80%D0%B2%D0%B5%D1%80%D0%B0_(named9)\\ | ||
| + | https://freebsdguide.ru/_14/_7\\ | ||
| http://freebsdguide.ru/_14/_8\\ | http://freebsdguide.ru/_14/_8\\ | ||
| http://www.bog.pp.ru/work/bind.html | http://www.bog.pp.ru/work/bind.html | ||
| + | |||