c-ares 是一個用 C 語言編寫的現代 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 問題頁面。
關於 c-ares 及其使用的討論在 GitHub 討論或郵件列表中進行。郵件清單存檔在這裡。請不要私下向志工郵寄有關 c-ares 的資訊。
安全漏洞根據我們的安全程序進行處理,如果您懷疑有安全漏洞,請發送電子郵件至 haxx.se 的 c-ares-security。
c-ares 發行者的主 GPG 金鑰(某些發行者使用子金鑰簽署):
27EDEAF22F3ABCEB50DB9A125CC908FDB71E12C2
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-XYZtar.gz
都有一個相應的c-ares-XYZtar.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 " [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
查看功能
AAAA
記錄。SRV
記錄。NAPTR
記錄。TLSA
記錄。SVCB
和HTTPS
記錄。URI
記錄。CAA
記錄。SIG0
記錄。只有基本的解析器,沒有完整的實作。NXDOMAIN
拒絕對.onion
網域的查詢。localhost
/ .localhost
的特殊情況處理。ares_getaddrinfo()
使用的 IPv6 位址排序。