Здесь показаны различия между двумя версиями данной страницы.
Предыдущая версия справа и слева Предыдущая версия Следующая версия | Предыдущая версия | ||
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 | ||
+ | |||