Spec-Zone.ru › Tcllib

dns

ИМЯ

dns — клиент службы доменных имён для Tcl

Содержание

  • Содержание

  • Краткое описание

  • Описание

  • КОМАНДЫ

  • ПРИМЕРЫ

  • ССЫЛКИ

  • АВТОРЫ

  • Ошибки, идеи и отзывы

  • См. также

  • Категория

  • Авторские права

КРАТКОЕ ОПИСАНИЕ

package require Tcl 8.5 9
package require dns ?1.6.1?

::dns::resolve query ?options?
::dns::configure ?options?
::dns::name token
::dns::address token
::dns::cname token
::dns::result token
::dns::status token
::dns::error token
::dns::reset token
::dns::wait token
::dns::cleanup token
::dns::nameservers

ОПИСАНИЕ

Пакет dns предоставляет клиент службы доменных имён, написанный только на Tcl. Сведения о протоколе DNS см. в (1) и (2), а о том, как библиотека C выполняет разрешение доменных имён, — в resolver(3). Этот пакет призван оградить сценарии Tcl от проблем, связанных с использованием системного обработчика разрешения имён при работе с медленными серверами имён. Практическая польза пакета может быть разной. Разрешение имён в Интернете — сложная задача, и DNS — лишь одна из частей механизма разрешения. Возможно, в вашем случае следует использовать файлы hosts, NIS, WINS или другие системы. Этот пакет не заменяет обработчик разрешения имён из библиотеки C, однако реализует разрешение имён через DNS. Пакет также расширяет пакет uri, добавляя поддержку DNS URI (4) вида dns:what.host.com или dns://my.nameserver/what.host.com. Команда dns::resolve может обрабатывать DNS URI или обычные доменные имена в качестве запроса.

Примечание: По умолчанию пакет использует DNS через TCP-соединения. Для использования UDP необходимо установить пакет tcludp версии, корректно обрабатывающей двоичные данные (> 1.0.4). Его можно получить по адресу http://tcludp.sourceforge.net/. Если пакет udp установлен, по умолчанию будет использоваться UDP.

Примечание: Пакет поддерживает DNS через TLS (RFC 7858) для повышения конфиденциальности DNS-запросов. Для использования этой возможности необходим пакет TLS.

КОМАНДЫ

  • ::dns::resolve query ?options?

    Выполняет разрешение доменного имени с помощью протокола DNS. Параметр query — доменное имя, которое нужно найти. Это должно быть полное доменное имя или DNS URI.

    • -nameserver hostname или -server hostname

      Задаёт альтернативный сервер имён для этого запроса.

    • -protocol tcp|udp

      Задаёт сетевой протокол для этого запроса. Допустимые значения: tcp и udp.

    • -port portnum

      Задаёт альтернативный порт.

    • -search domainlist

    • -timeout milliseconds

      Переопределяет время ожидания по умолчанию.

    • -type TYPE

      Задаёт тип интересующей вас DNS-записи. Допустимые значения: A, NS, MD, MF, CNAME, SOA, MB, MG, MR, NULL, WKS, PTR, HINFO, MINFO, MX, TXT, SPF, SRV, AAAA, AXFR, MAILB, MAILA и *. Сведения о возвращаемых значениях см. в RFC1035. Информацию о SPF см. по адресу http://spf.pobox.com/. Сведения о записях AAAA см. в (3), а о записях SRV — в RFC2782.

    • -class CLASS

      Задаёт класс доменного имени. Обычно это IN, но допустимы также IN для доменных имён Интернета, CS, CH, HS или * для любого класса.

    • -recurse boolean

      Установите значение false, если сервер имён не должен рекурсивно обрабатывать ваш запрос. Обычно используется значение true.

    • -command procname

      Задаёт процедуру, вызываемую по завершении запроса. Процедуре передаётся токен в качестве единственного аргумента.

    • -usetls boolean

      Установите значение true, чтобы использовать DNS через TLS. Это принудительно включает TCP и меняет порт по умолчанию на 853. Требуется проверка сертификата, поэтому необходимо указать источник доверенных сертификатов центров сертификации с помощью -cafile или -cadir.

    • -cafile filepath

      Задаёт файл, содержащий набор доверенных сертификатов центров сертификации. Подробности см. на странице руководства команды update-ca-certificates или в справке по параметру -CAfile команды openssl.

    • -cadir dirpath

      Задаёт каталог, содержащий доверенные сертификаты центров сертификации. Если параметр -cafile не задан, этот каталог необходимо указать, чтобы проверка сертификатов работала при включённом параметре -usetls. Требования к структуре этого каталога см. в документации openssl.

  • ::dns::configure ?options?

    Команда ::dns::configure используется для настройки пакета dns. С помощью этой команды задаются сервер для запросов, протокол и список поиска доменов. Если аргументы не указаны, возвращается список всех текущих настроек. Если указан только один аргумент, это должно быть имя параметра; команда возвращает его значение.

    • -nameserver hostname

      Задаёт сервер имён по умолчанию для всех запросов. По умолчанию используется localhost.

    • -protocol tcp|udp

      Задаёт сетевой протокол по умолчанию. По умолчанию используется tcp.

    • -port portnum

      Задаёт порт по умолчанию для сервера имён. По умолчанию используется порт 53.

    • -search domainlist

      Задаёт список поиска доменов. В настоящее время он не используется.

    • -timeout milliseconds

      Задаёт время ожидания по умолчанию для DNS-запросов. По умолчанию — 30 секунд.

    • -loglevel level

      Задаёт уровень журнала для диагностических сообщений этого пакета. По умолчанию используется warn. Сведения о доступных уровнях см. в документации пакета log.

    • -cafile filepath

      Задаёт путь к файлу, используемому по умолчанию для параметра -cafile команды dns::resolve.

    • -cadir dirpath

      Задаёт путь к каталогу, используемому по умолчанию для параметра -cadir команды dns::resolve.

  • ::dns::name token

    Возвращает список всех доменных имён, полученных в ответ на запрос.

  • ::dns::address token

    Возвращает список записей адресов, соответствующих запросу.

  • ::dns::cname token

    Возвращает список канонических имён (обычно одно), соответствующих запросу.

  • ::dns::result token

    Возвращает список всех декодированных записей ответа, полученных для запроса. Это позволяет извлекать результаты запросов более редких типов.

  • ::dns::status token

    Возвращает флаг состояния. Для успешно завершённого запроса это будет ok. Возможны также значения error, timeout или eof. См. также ::dns::error.

  • ::dns::error token

    Возвращает сообщение об ошибке для запросов со статусом error. Если сообщения об ошибке нет, возвращается пустая строка.

  • ::dns::reset token

    Сбрасывает или отменяет DNS-запрос.

  • ::dns::wait token

    Ожидает завершения DNS-запроса и возвращает его статус после завершения.

  • ::dns::cleanup token

    Удаляет все переменные состояния, связанные с запросом.

  • ::dns::nameservers

    Пытается вернуть список серверов имён, настроенных в системе пользователя. В Unix эта команда анализирует файл /etc/resolv.conf и извлекает серверы имён (если файл существует), а в Windows проверяет определённые разделы реестра. Если сервер имён найти не удаётся, по умолчанию используется адрес обратной петли (127.0.0.1).

ПРИМЕРЫ

% set tok [dns::resolve www.tcl.tk]
::dns::1
% dns::status $tok
ok
% dns::address $tok
199.175.6.239
% dns::name $tok
www.tcl.tk
% dns::cleanup $tok

Использование DNS URI в качестве запросов:

% set tok [dns::resolve "dns:tcl.tk;type=MX"]
% set tok [dns::resolve "dns://l.root-servers.net/www.tcl.tk"]

Обратный поиск адреса:

% set tok [dns::resolve 127.0.0.1]
::dns::1
% dns::name $tok
localhost
% dns::cleanup $tok

Использование DNS через TLS (RFC 7858):

% set tok [dns::resolve www.tcl.tk -nameserver dns-tls.bitwiseshift.net  -usetls 1 -cafile /etc/ssl/certs/ca-certificates.crt]
::dns::12
% dns::wait $tok
ok
% dns::address $tok
104.25.119.118 104.25.120.118

ССЫЛКИ

  1. Mockapetris, P., «Доменные имена — понятия и средства», RFC 1034, ноябрь 1987 г. (http://www.ietf.org/rfc/rfc1034.txt)

  2. Mockapetris, P., «Доменные имена — реализация и спецификация», RFC 1035, ноябрь 1087 г. (http://www.ietf.org/rfc/rfc1035.txt)

  3. Thompson, S. и Huitema, C., «Расширения DNS для поддержки IP версии 6», RFC 1886, декабрь 1995 г. (http://www.ietf.org/rfc/rfc1886.txt)

  4. Josefsson, S., «Унифицированные идентификаторы ресурсов для системы доменных имён», Internet-Draft, октябрь 2003 г. (http://www.ietf.org/internet-drafts/draft-josefsson-dns-url-09.txt)

  5. Gulbrandsen, A., Vixie, P. и Esibov, L., «Запись DNS RR для указания местоположения служб (DNS SRV)», RFC 2782, февраль 2000 г. (http://www.ietf.org/rfc/rfc2782.txt)

  6. Ohta, M., «Инкрементальная передача зоны в DNS», RFC 1995, август 1996 г. (http://www.ietf.org/rfc/rfc1995.txt)

  7. Hu, Z. и др., «Спецификация DNS через TLS (Transport Layer Security)», RFC 7858, май 2016 г. (http://www.ietf.org/rfc/rfc7858.txt)

АВТОРЫ

Pat Thoyts

Ошибки, идеи и отзывы

В этом документе и описываемом в нём пакете наверняка есть ошибки и другие проблемы. Сообщайте о них в категории dns на сайте системы отслеживания ошибок Tcllib. Также сообщайте о любых идеях по улучшению пакета и/или документации.

Предлагая изменения кода, пожалуйста, присылайте унифицированные различия, то есть вывод команды diff -u.

Обратите внимание: настоятельно рекомендуется прикладывать файлы, а не вставлять исправления в текст. Чтобы приложить файл, откройте форму Edit соответствующей заявки сразу после её создания и нажмите крайнюю левую кнопку на дополнительной панели навигации.

СМ. ТАКЖЕ

resolver(5)

КАТЕГОРИЯ

Сетевые технологии

АВТОРСКИЕ ПРАВА

Авторские права © 2002, Pat Thoyts

Licensed under the BSD license
https://core.tcl-lang.org/tcllib/doc/trunk/embedded/md/tcllib/files/modules/dns/tcllib_dns.md

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API