c-ares — это современная библиотека преобразователя DNS (заглушки), написанная на 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.
Уязвимости безопасности обрабатываются в соответствии с нашей Процедурой обеспечения безопасности. Если вы подозреваете наличие уязвимостей, отправьте электронное письмо c-ares-security по адресу haxx.se.
Первичные ключи GPG для релизеров c-ares (некоторые релизеры подписываются с помощью дополнительных ключей):
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
. Только базовый парсер, а не полная реализация..onion
с помощью NXDOMAIN
.localhost
/ .localhost
.ares_getaddrinfo()
.