c-ares は、C で書かれた最新の DNS (スタブ) リゾルバー ライブラリです。基盤となる DNS プロトコルの複雑さを抽象化しながら、非同期クエリ用のインターフェイスを提供します。これは元々、ブロックせずに DNS クエリを実行する必要があるアプリケーション、または複数の DNS クエリを並行して実行する必要があるアプリケーションを対象としていました。
c-ares の目標の 1 つは、使用しているシステムに関係なく、システムが提供する DNS リゾルバーよりも優れた 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 について個人的にボランティアにメールを送らないでください。
セキュリティの脆弱性は、当社のセキュリティ手順に従って処理されます。疑わしい場合は、c-ares-security (haxx.se) に電子メールを送信してください。
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 <[email protected]> " [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 アドレスのソート。