Repolode
miekg

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. 1

    使用 Go 工具安装该库

    go get github.com/miekg/dns
  2. 2

    阅读 doc.go 开头的 API 概述,或运行 godoc 查看该包文档

使用前须知

  • 开发已转移到位于 codeberg.org/miekg/dns 的 DNS 第 2 版,本仓库只接收特定修复。
  • 本仓库将来某个时候会被归档。

标签

#dns#go#dnssec#dns-library#networking#protocol

常见问题

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 数据每日更新。

相关项目