暂无描述
| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
| 1 年前 | ||
| 1 年前 | ||
| 1 年前 | ||
| 4 个月前 | ||
| 1 年前 | ||
| 1 个月前 | ||
| 5 个月前 | ||
| 5 年前 | ||
| 1 年前 | ||
| 2 个月前 | ||
| 1 年前 | ||
| 1 年前 | ||
| 1 年前 | ||
| 1 年前 | ||
| 1 年前 | ||
| 1 年前 | ||
| 1 年前 | ||
| 1 年前 | ||
| 1 年前 | ||
| 1 年前 | ||
| 1 年前 | ||
| 1 年前 | ||
| 2 年前 | ||
| 1 年前 | ||
| 1 年前 | ||
| 1 年前 | ||
| 1 年前 | ||
| 1 年前 | ||
| 1 年前 | ||
| 1 年前 | ||
| 1 年前 | ||
| 1 年前 | ||
| 1 年前 | ||
| 1 年前 | ||
| 1 年前 | ||
| 1 年前 | ||
| 1 年前 | ||
| 1 年前 | ||
| 1 年前 |
概述
c-ares 是一个用 C 语言编写的现代 DNS(存根)解析库。它提供了异步查询接口,同时尝试抽象底层 DNS 协议的复杂性。最初设计用于需要非阻塞执行 DNS 查询或需要并行执行多个 DNS 查询的应用程序。
c-ares 的目标之一是成为比您系统提供的更好的 DNS 解析器,无论您使用哪种系统。我们建议在所有网络应用程序中使用 c-ares 库,即使异步解析的初始目标对您的应用程序来说并非必需。
c-ares 可以使用任何 C89 编译器构建,并采用 MIT 许可证,这使得它既适用于自由软件也适用于商业软件。c-ares 可在 Linux、FreeBSD、OpenBSD、MacOS、Solaris、AIX、Windows、Android、iOS 以及更多操作系统上运行。
c-ares 高度重视安全性,实现了贯穿整个代码的安全解析器和数据构建器,从而避免了其他 C 库中常见的许多陷阱。通过我们广泛的测试框架进行自动化测试,c-ares 不断通过一系列静态和动态分析工具进行验证,同时由 OSS Fuzz 持续进行模糊测试。
尽管 c-ares 已有超过 20 年的历史,但它一直在积极维护,不仅遵循最新的 DNS RFC,还更新以符合最新的 C 编码标准最佳实践。
代码
完整的源代码和修订历史可在我们的 GitHub 仓库 中找到。我们签名的发布版本可在 发布存档 中获取。
构建信息请参阅 INSTALL.md 文件。
交流
问题 和 功能请求 应报告到我们的 GitHub Issues 页面。
关于 c-ares 及其使用的讨论,可在 GitHub Discussions 或 邮件列表 上进行。邮件列表存档在此。请不要私下联系志愿者关于 c-ares 的问题。
安全漏洞 将按照我们的 安全流程 处理,如果您怀疑存在漏洞,请发送邮件至 c-ares-security at haxx.se。
发布密钥
c-ares 发布者的主要 GPG 密钥(部分发布者使用子密钥签名):
- Daniel Stenberg <daniel@haxx.se>
27EDEAF22F3ABCEB50DB9A125CC908FDB71E12C2 - Brad House <brad@brad-house.com>
DA7D64E4C82C6294CB73A20E22E3D13B5411B7CA
要导入完整的受信任发布密钥集(包括可能用于签名的子密钥):
gpg --keyserver hkps://keyserver.ubuntu.com --recv-keys 27EDEAF22F3ABCEB50DB9A125CC908FDB71E12C2 # Daniel Stenberg
gpg --keyserver hkps://keyserver.ubuntu.com --recv-keys DA7D64E4C82C6294CB73A20E22E3D13B5411B7CA # Brad House
验证签名
对于每个 c-ares-X.Y.Z.tar.gz 版本文件,都会有一个对应的 c-ares-X.Y.Z.tar.gz.asc 文件,其中包含该版本的独立签名。
按照前文所述获取所有可能有效的签名密钥并加载到您的密钥链后,只需在下载的软件包和独立签名文件上运行以下命令即可进行验证:
% gpg -v --verify c-ares-1.29.0.tar.gz.asc c-ares-1.29.0.tar.gz
gpg: enabled compatibility flags:
gpg: Signature made Fri May 24 02:50:38 2024 EDT
gpg: using RSA key 27EDEAF22F3ABCEB50DB9A125CC908FDB71E12C2
gpg: using pgp trust model
gpg: Good signature from "Daniel Stenberg <daniel@haxx.se>" [unknown]
gpg: WARNING: This key is not certified with a trusted signature!
gpg: There is no indication that the signature belongs to the owner.
Primary key fingerprint: 27ED EAF2 2F3A BCEB 50DB 9A12 5CC9 08FD B71E 12C2
gpg: binary signature, digest algorithm SHA512, key algorithm rsa2048
特性
详见特性说明
支持的RFC标准与提案
- RFC1035. 初始/基础DNS规范
- RFC2671, RFC6891. EDNS0扩展机制(元资源记录)
- RFC3596.
IPv6地址解析。
AAAA记录类型。 - RFC2782.
服务选择机制。
SRV记录类型。 - RFC3403.
命名权威指针。
NAPTR记录类型。 - RFC6698.
基于DNS的命名实体认证(DANE)传输层安全协议。
TLSA记录类型。 - RFC9460.
通用服务绑定规范,HTTPS服务绑定类型。
SVCB与HTTPS记录类型。 - RFC7553.
统一资源标识符。
URI记录类型。 - RFC6844.
证书颁发机构授权。
CAA记录类型。 - RFC2535,
RFC2931.
SIG0记录类型。仅基础解析支持,未完整实现。 - RFC7873, RFC9018. DNS Cookie机制防御路径外DNS投毒与放大攻击。
- draft-vixie-dnsext-dns0x20-00. DNS 0x20查询名随机大小写防御缓存投毒攻击。
- RFC7686.
对
.onion域名查询返回NXDOMAIN响应。 - RFC2606,
RFC6761.
对
localhost/.localhost的特殊处理规则。 - RFC2308, RFC9520. DNS解析失败的否定缓存机制。
- RFC6724.
ares_getaddrinfo()使用的IPv6地址排序规则。 - RFC7413. 实现0-RTT连接的TCP快速打开(TFO)机制。
- RFC3986. 统一资源标识符(URI)。用于服务器配置。