man pdnsd.conf (5) - конфигурационный файл pdnsd |
- Statistics
- Participants
- Translate into Russian
- Translation result
- Translation complete.
ИМЯ
pdnsd.conf - конфигурационный файл pdnsd
ОПИСАНИЕ
Эта страница руководства описывает структуру конфигурационного файла pdnsd(8) и доступные опции настройки. По умолчанию файл находится в /etc/pdnsd.conf. Это может быть изменено с помощью опции -c командной строки. Пример файла pdnsd.conf имеется в составе дистрибутива pdnsd в каталоге с документацией или в файле /etc/pdnsd.conf.sample.
ФОРМАТ ФАЙЛА
Конфигурационный файл разделён на секции. Каждая секция начинается с имени секции и открывающейся фигурной скобки ({) и завершается закрывающей фигурной скобкой (}). В каждой секции опции конфигураци могут быть заданы в виде
имя_опции=значение_опции;
Значением опции может быть последовательность символов, число, спецификация времени или константа. В предыдущих версиях pdnsd строки должны были заключаться
в кавычки ("), но начиная с версии 1.1.10 это больше не требуется, за исключением тех случаев, когда строка содержит специальный символ, такой как пробел, символ, который обычно начинает комментарий, или один из символов ",;{}".
Спецификация времени состоит из последовательности цифр с последующим однобуквенным суффиксом. Доступны следующие суффиксы: s (секунды), m (минуты),
h (часы), d (дни) и w (недели). Если суффикс пропущен,
предполагаются секунды. Если несколько спецификаций времени сцеплены, их значения складываются; например 2h30m интерпретируется как 2*60*60 + 30*60 = 9000 секунд.
Некоторые опции принимают больше чем одно значение; в этом случае, значения разделяются запятыми.
Если Вы можете использовать одно из множества доступных значений опции, это записывается в документации как (опция1|опция3|опция3|...)
Константы true|false (истина/ложь) и yes|no (да|нет) распознаются как синонимы констант on|off (включено|выключено).
Комментарии могут быть заключены в /* и */, возможны вложенные комментарии. Если символ # или две косые черты (//) появляются в конфигурационном файле, всё от этих символов до конца текущей строки расценивается как комментарий и игнорируется.
Примеры для большинства опций находятся в образце конфигурационного файла.
Секция global
Секция global указывает параметры, которые затрагивают общее поведение сервера. Если вы укажете несколько секций global, более поздние настройки в файле заменят более ранние значения.
Здесь возможны опции:
perm_cache=(число|off);
Выключает дисковый кэш или задаёт максимальный размер кэша в килобайтах. Если дисковый кэш отключен, 8 байт всё-же будут записаны на диск. Кэш в памяти всегда на 10 килобайт больше, чем файл кэша. Значение по умолчанию - 2048 (2 мегабайта).
cache_dir=строка;
Задаёт каталог, в котором Вы хотите хранить кэш. По умолчанию это "/var/cache/pdnsd" (кроме случаев, когда pdnsd был скомпилирован с другим значением по умолчанию).
server_port=число;
Задаёт порт сервера. Это особенно полезно, когда Вы хотите запустить сервер и не являетесь пользователем root. Отметим, что Вы можете также не указывать uptest=ping в секции server, если вы не пользователь root.
Порт по умолчанию - 53, в соответствие с стандартом RFC. Отметим, что Вы можете использовать нестандартные порты, только если Вам нужны клиенты на Вашей машине для связи с сервером; другие вероятно дадут сбой, если попытаются связаться с сервером, используя запись NS, поскольку запись A предоставляющая адрес (среди прочего) для серверов имён не имеет спецификации номера порта.
server_ip=строка;
или
interface=строка;
Устанавливает IP-адрес на котором pdnsd будет ожидать запросы. Это может быть полезно когда узел имеет несколько интерфейсов и вы хотите, чтобы pdnsd не ожидал соединений на всех интерфейсах. Например, можно заставить pdnsd ожидать соединений на 127.0.0.1, чтобы позволить pdnsd обслуживать запросы от BIND. По умолчанию эта опция установлена в server_ip=any, что позволяет pdnsd ожидать соединений на всех локальных интерфейсах. В настоящее время Вы можете указать здесь только один адрес; если Вы хотите, чтобы pdnsd ожидал соединений на нескольких интерфейсах, но не на всех, Вы можете указать server_ip=any и использовать правила пакетного фильтра для ограничения доступа.
Используемый IP-адрес нужно помещать в кавычки, но начиная с версии 1.1.10 это больше не обязательно.
Если pdnsd был скомпилирован с одновременной поддержкой IPv4 и IPv6, но pdnsd не был скомпилирован для запуска в IPv6 режиме по умолчанию, и Вы хотите указать здесь адрес IPv6, тогда Вы должны использовать опцию командной строки -6 или сначала установить run_ipv4=off (см. ниже), чтобы быть уверенным, что IPv6 адрес был разобран правильно.
Если pdnsd запущен в режиме IPv6 и Вы указали здесь адрес IPv4, он будет автоматически преобразован в адрес IPv6.
Новое в версии 1.2: Вы можете указать здесь имя интерфейса, такое как "lo" или "eth0", вместо IP-адреса (это было проверено на Linux и может работать или не работать на других платформах). pdnsd не привязывается к имени интерфейса, но определит адрес интерфейса при запуске и будет ожидать соединений на этом адресе. Если адрес интерфейса поменяется во время работы pdnsd, pdnsd не заметит этого. В этом случае Вам может потребоваться перезапустить pdnsd.
linkdown_kluge=(on|off);
Эта опция включает kluge, который может понадобиться некоторомы людям: когда все серверы недоступны, а эта опциея включена, кэш не используется при получении запроса, и в любом случае будет возвращена ошибка DNS. Исключением из этого являются только локальные записи (которые указаны в секциях rr и source), которые продолжают нормально обслуживаться. В общем, если сеть отключена, то Вы вероятно хотите получать также и кэшированные записи, поэтому эта опция по умолчанию отключена.
max_ttl=время;
Эта опция устанавливает максимальное время удержания записи в кэше. Все ресурсные записи DNS имеют поле времени жизни, которое говорит какой период времени запись может находиться в кэше, перед тем как её потребуется перезапросить. Если оно больше значения указанного в max_ttl, то значение времени жизни будет установлено в max_ttl. Это сделано для предотвращения кэширования записей на неоправданно длинный период времени, потому что это почти никогда не бывает правильно. По умолчанию это 604800 секунд (одна неделя).
min_ttl=время;
Эта опция устанавливает минимальное время удержания записи в кэше. Все ресурсные записи DNS имеют поле времени жизни, которое говорит о том, какой период времени запись может находиться в кэше, перед тем как её потребуется перезапросить. Если время жизни ресурсной записи меньше значения указанного в min_ttl, то значение времени жизни будет установлено в min_ttl. По умолчанию это 120 секунд.
neg_ttl=время;
Эта опция устанавливает время, в течение которого отрицательно кэшированные записи будут оставаться действительными, если время их жизни не может быть определено. В любом случае, весь домен будет кэширован отрицательно, включая отрицательное кэширование тех записей, для доменнов которых pdnsd не имеет записей SOA. Если SOA существует, будет принято время жизни SOA.
neg_rrs_pol=(on|off|auth);
Задаёт набор политик отрицательного кэширования ресурсных записей; это указывает pdnsd при каких обстоятельствах он должен применять отрицательный тип кэширования записей для определённого домена. off выключает отрицательное кэширование типов записей, on всегда добавляет в кэш отрицательные записи, если сервер имён не вернул запись запрошенного нами типа, и auth добавляет только такие записи, которые приняты в ответе полномочного сервера имён этого домена. Предустановлено auth. Обычно это правильно, потому что некоторые кэширующие серверы ведут себя странно.
neg_domain_pol=(on|off|auth);
Это аналог neg_rss_pol для отрицательного кэширования всего домена. Включение этой опции должно быть безопасным, потому что я не видел кэширующих серверов, которые ложно заявляют, что домен не существует.
По умолчанию auth.
run_as=строка;
Эта опция позволяет Вам заставить pdnsd сменить идентификатор пользователя и группы после того как будут выполнены все необходимые привилегированные операции. Позволяет уменьшить риски безопасности и поэтому рекомендуется. Данная строка задаёт имя пользователя, идентификаторы имени и первичной группы которого будут выбраны.
Немного больше подробностей: после чтения конфигурационного файла, переключения в режим демона (если указано) и запуска нити статуса сервера, главная нить меняет свои gid и uid, а также uid и gid всех нитей вновь создаваемых после этого. При выборе других uid и gid, эти нити запускаются с привилегиями указанного пользователя. Под Linux и FreeBSD, нить статуса сервера запускается с начальными привилегиями, только если выключена опция strict_setuid (см. ниже, включено по умолчанию), потому что это может потребоваться для исполнения тестов. Управляющая нить также удерживает исходные привилегии в этом случае. Вы должны позаботиться о том, чтобы пользователь, которого Вы указали, имел разрешения на запись в Ваш кэш-файл и канал статуса (если Вам требуется канал статуса). Вы должны просмотреть сообщения об ошибках, подобные "permission denied" (отказано в доступе) и "operation not permitted" (операция запрещена), чтобы обнаружить проблемы с разрешениями.
strict_setuid=(on|off);
Будучи использованной одновременно с опцией run_as, эта опция позволяет Вам указать, что все без исключения нити программы должны быть запущены с привилегиями пользователя run_as. Эта опция предоставляет более высокую степень безопасности по сравнению с обычной опцией run_as, но она не всегда доступна. См. опцию run_as для дальнейших размышлений.
Эта опция включена по умолчанию.
Замечание: эта опция не имеет эффекта на не-Linux системах.
paranoid=(on|off);
Обычно pdnsd запрашивает все серверы в рекурсивном режиме (то есть просит серверы запрашивать другие серверы самим, если возможно и возвращать ответы для доменов которые могут не быть их полномочными), и принимать дополнительные записи с информацией для серверов, которые не полномочны для запрашиваемого сервера. Это открывает возможность так называемого отравления кэша: злонамеренные атакующие могут настроить DNS сервер так, что когда его спрашивают, он возвращает поддельные дополнительные записи. Таким образом, можно заменить доверенные серверы на его собственные, которые заставляют ваш DNS сервер возвращать неправильные IP-адреса. Эта опция защищает ваш кэш от заражения, отклоняя дополнительные записи, которые не описывают домены в запрошенном пространстве полномочных серверов и не делает более рекурсивные запросы. Исключение из этого правила - это серверы, которые Вы указали в Вашем конфигурационном файле, которые являются доверенными.
Минусом является возможное падение производительности, в частности, для тех же операций может потребоваться большее количство запросов.
Вы должны также помнить, что здесь могут быть другие подобные проблемы безопасности, которые являются по существу проблемами DNS, так как любой "традиционный" сервер имеет их (расширения безопасности DNS решают эти проблемы, но они не широко распространены). Одна из таких уязвимостей - это атакующий может бомбардировать Вас поддельными ответами, один из которых может совпасть с запросом, который Вы выполнили. Если Вы выполнили такой запрос, один из 65536 поддельных пакетов будет удачным (то есть среднее число пакетов, необходимых для атаки - 32768). pdnsd может использовать для запросов TCP-соединения, что будет слегка более затратно, но они горазде менее подвержены таким атакам на нормальных операционных системах. Также pdnsd выбирает случайные идентификаторы запросов, так что у атакующего не получится сделать это быстро. Эта атака всё же относительно легка, если атакующий может прослушивать Ваш сетевой трафик.
Эта уязвимость - не ошибка pdnsd, она возможна при использовании стандартных серверов имён (pdnsd может быть немного более безопасен против атак этого типа, если Вы заставите его использовать TCP).
Опция paranoid отключена по умолчанию.
scheme_file=строка;
В дополнение к нормальным тестам, Вы можете указать что некоторые серверы должны запрашиваться, когда активна определённая схема pcmcia-cs (только под Linux). Для этого pdnsd нужно знать в каком файле раполагается информация о схеме pcmcia. Обычно это /var/lib/pcmcia/scheme или /var/state/pcmcia/scheme.
status_ctl=(on|off);
Имеет тот же эффект, что и опция -s командной строки: включает управление статусом, если указана.
Добавлено Полом Ромбаутсом: Имейте в виду, что pdnsd-ctl позволяет конфигурирование pdnsd во время выполнения, может быть даже изменён IP-адрес сервера имён. Если Вы не используете pdnsd-ctl и Вы хотите максимальной безопасности, Вы не должны включать эту опцию. Она отключена по умолчанию.
daemon=(on|off);
Имеет тот же эффект, что и опция -d командной строки: режим демона включен, если указана.
По умолчанию выключен.
tcp_server=(on|off);
tcp_server=on имеет тот же эффект, что и -t или --tcp опция командной строки: включает обслуживание TCP. Аналогично, tcp_server=off, подобно опции командной строки --notcp.
По умолчанию включено.
pid_file=строка;
Имеет тот же эффект, что и опция -p командной строки: Вы можете указать файл, в который pdnsd запишет свой PID при запуске в режиме демона.
verbosity=число;
Это имеет тот же эффект, что и опция -v командной строки: Вы можете установить информативность сообщений pdnsd. Аргумент - это число между 0 (мало сообщений) и 3 (наибольшее количество сообщений).
query_method=(tcp_only|udp_only|tcp_udp);
Эта опция имеет тот же эффект, что и опция -m командной строки. Прочитайте документацию этой опции командной строки. tcp_only указывает аргумент командной строки to, udp_only - uo и tcp_udp - tu.
Если Вы используете query_method=tcp_udp, рекомендуется также чтобы Вы установили опцию глобального тайм-аута по меньшей мере в два раза больше самого длинного тайм-аута сервера.
run_ipv4=(on|off);
Имеет тот же эффект, что опции -4 или -6 командной строки: если указано on, включается поддержка IPv4, а поддержка IPv6 выключается (если она доступна). Если указано off, IPv4 будет отключена и IPv6 будет включена. Для этой опции важно, чтобы pdnsd был скомпилирован с поддержкой протокола, который Вы выбрали. Если pdnsd был скомпилирован с одновременной поддержкой IPv4 и IPv6, и Вы хотите включить IPv6-адреса в конфигурационный файл, вероятно Вам потребуется указать сначала опцию run_ipv4=off, чтобы быть уверенным, что IPv6-адреса были корректно распознаны.
debug=(on|off);
Имеет тот же эффект, что и опция -g командной строки: включает отладочные сообщения, если указано on.
ctl_perms=число;
Эта опция позволяет Вам устанавливать файловые разрешения, которые будет иметь сокет, управляющий статусом pdnsd. Владельцем файла будет пользователь run_as, или, если ничего не указано, пользователь, запустивший pdnsd. Если Вы хотите указать разрешения в восьмеричной системе (как обычно), не забудьте добавить в начале ноль (0600 вместо 600!). Для использования управления статусом требуется доступ на запись. По умолчанию это 0600 (только владелец может читать или писать).
Пожалуйста помните, что сокет сохраняется в каталоге кэша, и может потребоваться также настройка разрешений на доступ к каталогу. Удостоверьтесь, что каталог кэша не доступен на запись для недоверенных пользователей.
proc_limit=число;
С этой опцией Вы можете установить предел количества нитей pdnsd активных одновременно. Если это число превышено, запросы встают в очередь и могут быть откложены на некоторое время. См. также опцию procq_limit.
По умолчанию 40.
procq_limit=число;
Когда будет достигнут предел proc_limit запрашивающих нитей, попытки соединения к pdnsd будут вставать в очередь. С этой опцией Вы можете задать максимальную длину очереди. Если длина очереди тоже будет превышена, входящие запросы будут отбрасываться. Это означает, что TCP-соединения будут закрыты, а UDP-запросы будут просто отброшены, что, возможно, вызовет ожидание DNS-клиента, инициировавшего запрос до тех пор, пока не будет достигнут тайм-аут ожидания ответа.
См. также опцию proc_limit. Максимум proc_limit+procq_limit нитей запросов будет существовать в любой момент времени (в добавок от 3 до 6 нитей всегда будут существовать, в зависимости от Вашей конфигурации).
По умолчанию 60.
tcp_qtimeout=время;
Эта опция устанавливает тайм-аут для TCP-запросов. Если через TCP-соединение не был принят полный запрос, через указанный промежуток времени соединение будет закрыто. По умолчанию это время устанавливается перед компиляцией, с помощью опции --with-tcp-qtimeout скрипта configure.
par_queries=число;
Эта опция используется для задания максимального числа удалённых серверов, которые могут опрашиваться одновременно, для каждого запроса, который принял pdnsd.
Начиная с версии 1.1.11, значение этой опции слегка изменилось. Теперь это приращение, на которое увеличивается число параллельных запросов, если предыдущий набор серверов превысил время ожидания. Например, если имеется список сервер1, сервер2, сервер3, и т.д. доступных серверов и par_queries=2, то pdnsd сначала отправит запросы на сервер1 и сервер2, и будет ждать ответа от этих серверов.
Если эти серверы не отправят ответ в течение периода тайм-аута, pdnsd отправит дополнительные запросы на сервер3 и сервер4, и будет ждать ответа от сервера1, сервера2, сервера3 и сервера4, и так далее до тех пор, пока не получит полезный ответ или список не будет исчерпан.
В наихудшем случае запросы ко всем серверам в списке доступных серверов не будут завершены. Может быть таким образом мы используем больше системных ресурсов (но только если первые серверы в списке медленные или неотзывчивые), но преимущество этого - мы имеем больший шанс получить ответ. Кроме того, раз уж ждать и так долго, почему бы не ждать больше серверов.
См. также ниже объяснение опции глобального тайм-аута.
1 или 2 - хорошие значения для этой опции. Значение по умолчанию устанавливается при компиляции, с помощью опции --with-par-queries скрипта configure.
timeout=время;
Это глобальный параметр тайм-аута для DNS-запросов. Он указывает минимальный период времени, которое pdnsd будет ждать после отправки первого запроса удалённому серверу перед тем как решит, что не принял ответ. Опции тайм-аута в конфигурационном файле теперь задают только минимальные интервалы тайм-аута. Установка опции глобального таймаута даёт возможность указывать совсем короткие интервалы тайм-аута в секции server (см. ниже). Это приводит к тому, что pdnsd довольно быстро начнёт запрашивать дополнительные серверы, если первые серверы долго отвечают (но всё ещё продолжит ожидать ответа от первого из них). Это позволяет pdnsd в определённых ситуациях быстрее получать ответ.
Original (English): man pdnsd.conf (5) - The configuration file for pdnsd
Translation: © Владимир Ступин, shtirlic.com .
License: GNU
