Рекурсивный DNS-резолвер с проверкой DNSSEC и кэшированием, созданный для высокой скорости и экономного использования ресурсов.
miekg/dns
Библиотека Go для создания DNS-клиентов и серверов с поддержкой всех типов ресурсных записей, включая DNSSEC.
- Звёзды
- 8,803
- Форки
- 1,220
- Открытые issues
- 3
- Последний коммит
- 3 дня назад
Что это?
miekg/dns — библиотека DNS на Go для разработчиков, которым нужно работать с DNS на уровне протокола. Она поддерживает все типы ресурсных записей, включая типы DNSSEC, и подходит для создания серверов и резолверов. API намеренно сделан небольшим: библиотека предоставляет базовые строительные блоки, а не множество функций для удобства.
Библиотека поддерживает запросы по UDP и TCP через IPv4 и IPv6, разбор файлов зон и программирование серверной части по образцу пакета net/http. Для защиты она умеет подписывать и проверять DNSSEC, а также генерировать ключи для DSA, RSA, ECDSA и Ed25519; кроме того, поддерживаются TSIG, SIG(0) и DNS over TLS. Библиотека также реализует передачу зон AXFR/IXFR и опции EDNS0, такие как NSID, Cookies и Client Subnet.
В проекте отмечено, что его преемник, DNS version 2, размещён на Codeberg, а этот репозиторий будет получать только отдельные исправления, прежде чем его архивируют.
Ключевые возможности
- 01Поддержка всех типов ресурсных записей DNS, включая типы DNSSEC
- 02Создание DNS-серверов и клиентских резолверов
- 03Подписание и проверка DNSSEC, а также генерация ключей для нескольких алгоритмов
- 04Разбор файлов зон с директивами $INCLUDE, $ORIGIN, $TTL и $GENERATE
- 05Передача зон AXFR/IXFR и аутентификация с помощью TSIG/SIG(0)
- 06DNS over TLS и опции EDNS0, такие как NSID и Cookies
Сценарии использования
- Разработка собственного авторитетного DNS-сервера на Go
- Создание DNS-резолвера или форвардера с точным контролем над запросами
- Реализация подписания или проверки DNSSEC в приложении на Go
- Создание диагностических инструментов для отправки DNS-запросов в исходном виде и анализа ответов
Быстрый старт
- 1
Установите библиотеку с помощью инструмента Go
go get github.com/miekg/dns - 2
Прочитайте обзор API в начале файла doc.go или запустите godoc для пакета
Что важно знать
- Разработка перенесена на DNS version 2 по адресу codeberg.org/miekg/dns; в этом репозитории будут появляться только отдельные исправления.
- В какой-то момент этот репозиторий будет архивирован.
Темы
Частые вопросы
- Что такое dns?
- Библиотека Go для создания DNS-клиентов и серверов с поддержкой всех типов ресурсных записей, включая DNSSEC. miekg/dns — библиотека DNS на Go для разработчиков, которым нужно работать с DNS на уровне протокола. Она поддерживает все типы ресурсных записей, включая типы DNSSEC, и подходит для создания серверов и резолверов. API намеренно сделан небольшим: библиотека предоставляет базовые строительные блоки, а не множество функций для удобства.
- dns можно использовать бесплатно? Какая у него лицензия?
- dns распространяется с открытым исходным кодом под лицензией BSD-3-Clause. Перед использованием в коммерческих продуктах проверьте условия лицензии.
- dns всё ещё поддерживается?
- Активно поддерживается. Последний коммит в dns — 3 нояб. 2026 г..
- Для чего можно использовать dns?
- Разработка собственного авторитетного DNS-сервера на Go Создание DNS-резолвера или форвардера с точным контролем над запросами Реализация подписания или проверки DNSSEC в приложении на Go Создание диагностических инструментов для отправки DNS-запросов в исходном виде и анализа ответов
- Как установить dns?
- Установите библиотеку с помощью инструмента Go: go get github.com/miekg/dns Прочитайте обзор API в начале файла doc.go или запустите godoc для пакета
- Где скачать dns?
- Исходный код и инструкции по установке — на GitHub: https://github.com/miekg/dns
Описание создано ИИ на основе README проекта. Статистика GitHub обновляется ежедневно.
Похожие проекты
Гибкий DNS-сервер на Go с цепочкой плагинов, каждый из которых выполняет отдельную DNS-функцию.
Асинхронный событийный Java-фреймворк для создания удобных в сопровождении и высокопроизводительных серверов и клиентов сетевых протоколов.
Открытый authoritative- и recursive-DNS-сервер с веб-консолью, блокировкой рекламы и вредоносного ПО и поддержкой шифрованного DNS.
Портативный DNS-резолвер на Rust: блокирует рекламу, назначает локальным сервисам домены .numa и может защищать запросы с помощью ODoH.
Реализация протокола SSHv2 на чистом Python с поддержкой клиентской и серверной функциональности для Python-программ.