miekg/dns
Go 语言 DNS 库,可用于构建 DNS 客户端和服务端,支持包括 DNSSEC 在内的全部资源记录类型。
- Star
- 8,804
- Fork
- 1,220
- 未关闭 Issue
- 3
- 最近提交
- 4天前
这是什么?
miekg/dns 是一个用 Go 编写的 DNS 库,面向需要在协议层面处理 DNS 的开发者。它支持全部资源记录类型,包括 DNSSEC 相关类型,可用于构建 DNS 服务端和解析器。API 刻意保持精简,只提供基础构件,不做过多便捷封装。
该库支持基于 IPv4 和 IPv6 的 UDP/TCP 查询、RFC 1035 区域文件解析,并提供参照 net/http 设计的服务端编程接口。安全方面,它支持 DSA、RSA、ECDSA 和 Ed25519 的 DNSSEC 签名、验证与密钥生成,同时实现 TSIG、SIG(0) 以及 DNS over TLS。此外还支持 AXFR/IXFR 区域传输,以及 NSID、Cookies、Client Subnet 等 EDNS0 选项。
项目的下一代版本 DNS v2 已迁移至 Codeberg,本仓库之后仅接收特定修复,最终将被归档。
核心功能
- 01支持全部 DNS 资源记录类型,包括 DNSSEC 相关类型
- 02可同时构建 DNS 服务端和客户端解析器
- 03支持多种算法的 DNSSEC 签名、验证与密钥生成
- 04支持解析区域文件,包括 $INCLUDE、$ORIGIN、$TTL 和 $GENERATE
- 05支持 AXFR/IXFR 区域传输以及 TSIG、SIG(0) 认证
- 06支持 DNS over TLS 及 NSID、Cookies 等 EDNS0 选项
适用场景
- 用 Go 编写自定义的权威 DNS 服务器
- 构建对查询过程有细粒度控制的 DNS 解析器或转发器
- 在 Go 应用中实现 DNSSEC 签名或验证
- 开发发送原始 DNS 查询并分析响应的诊断工具
快速上手
- 1
使用 Go 工具安装该库
go get github.com/miekg/dns - 2
阅读 doc.go 开头的 API 概述,或运行 godoc 查看该包文档
使用前须知
- 开发已转移到位于 codeberg.org/miekg/dns 的 DNS 第 2 版,本仓库只接收特定修复。
- 本仓库将来某个时候会被归档。
标签
常见问题
- dns 是什么?
- Go 语言 DNS 库,可用于构建 DNS 客户端和服务端,支持包括 DNSSEC 在内的全部资源记录类型。 miekg/dns 是一个用 Go 编写的 DNS 库,面向需要在协议层面处理 DNS 的开发者。它支持全部资源记录类型,包括 DNSSEC 相关类型,可用于构建 DNS 服务端和解析器。API 刻意保持精简,只提供基础构件,不做过多便捷封装。
- dns 可以免费使用吗?用的什么许可证?
- dns 以 BSD-3-Clause 许可证开源。用于商业产品前,请先确认许可证条款。
- dns 还在维护吗?
- 活跃维护中。dns 最近一次提交是在 2026年11月3日。
- dns 适合用来做什么?
- 用 Go 编写自定义的权威 DNS 服务器 构建对查询过程有细粒度控制的 DNS 解析器或转发器 在 Go 应用中实现 DNSSEC 签名或验证 开发发送原始 DNS 查询并分析响应的诊断工具
- dns 怎么安装和运行?
- 使用 Go 工具安装该库: go get github.com/miekg/dns 阅读 doc.go 开头的 API 概述,或运行 godoc 查看该包文档
- 在哪里获取 dns?
- 源代码和安装说明在 GitHub 上:https://github.com/miekg/dns
概要由 AI 根据项目 README 生成;GitHub 数据每日更新。
相关项目
用 Go 编写的灵活 DNS 服务器,通过串联插件实现各种 DNS 功能。
基于事件驱动的异步 Java 网络框架,用于快速开发高性能、易维护的协议服务端与客户端。
开源的权威与递归 DNS 服务器,自带 Web 控制台,支持网络级广告与恶意域名拦截及加密 DNS。
用 Rust 编写的便携式 DNS 解析器,可拦截广告、为本地服务分配 .numa 域名,并支持 ODoH 加密查询。
纯 Python 实现的 SSHv2 协议库,同时提供客户端和服务端功能。