Назад | Перейти на главную страницу

Как добавить запись CAA в dnsmasq?

Я пытаюсь добавить CAA записи на мой DNS-сервер, который использует dnsmasq, но безуспешно. Вспомогательный сайт CAA говорит мне использовать "--dns-rr =Название сайта"- вариант, но я понятия не имею, куда их поместить. Я попытался добавить его в /etc/dnsmasq.conf, что дало мне синтаксическую ошибку. Я также пробовал использовать его в командной строке, но он просто пытается запустить сам демон dnsmasq.

Итак, вопрос в том, как добавить запись CAA в dnsmasq?

Добавляем к ответу Патрика, прежде всего, чтобы прояснить, как на самом деле можно создать необходимую запись конфигурации dnsmasq, не полагаясь на стороннюю службу, которая создаст ее для вас.

Если вы хотите указать dnsmasq для обслуживания некоторого типа записи, который он изначально не поддерживает, вам необходимо предоставить ему точные данные записи, которые он должен передать в сеть.
Обратите внимание, что DNS является двоичным протоколом, поэтому dnsmasq требует точной последовательности байтов, которая соответствует вашим желаемым данным записи, а не дружественному текстовому представлению, с которым вы привыкли иметь дело, но которое dnsmasq не знает, как интерпретировать в фактический двоичный формат DNS который отправляется по телеграфу.

В --dns-rr Для параметра config требуются следующие значения:

--dns-rr=<name>,<RR-number>,[<hex data>]
Вернуть произвольную запись ресурса DNS. Число - это тип записи (всегда находится в классе C_IN). Значение записи задается шестнадцатеричными данными, которые могут иметь форму 01:23:45 или 01 23 45 или 012345 или любую их смесь.

Т.е. вы знаете название (ваше доменное имя) и можете легко найти RR-номерчисловое представление типа записи, опять dnsmasq понятия не имеет, что CAA is), но необходимо каким-то образом создать форматирование данных проводов и закодировать их в шестнадцатеричном формате, чтобы иметь что-то, что работает для шестнадцатеричные данные.

Пример:

example.com. IN CAA 0 issue "letsencrypt.org"

название знак равно example.com
RR-номер знак равно 257 (это что соответствует CAA)
шестнадцатеричные данные = the двоичный формат, описанный в спецификации CAA, затем кодируется как шестнадцатеричная строка

Очевидно, вы могли бы выполнить эту работу вручную (на основе спецификации), но для более удобного создания данных в формате проводов, как указано выше, вот пример сценария python (требуется dnspython пакет, обычно устанавливаемый с pip):

#!/usr/bin/env python
import dns.rdata
import io
import binascii

name = "example.com"
rclass = dns.rdataclass.IN
rtype = dns.rdatatype.CAA
rdata = '0 issue "letsencrypt.org"'


rd = dns.rdata.from_text(rclass, rtype, rdata)
f = io.BytesIO()
rd.to_wire(f)
wire_data = f.getvalue()
print "dnsmasq option: --dns-rr=" + name + "," + str(rtype) + "," + binascii.hexlify(wire_data)

Он выводит:

dnsmasq option: --dns-rr=example.com,257,000569737375656c657473656e63727970742e6f7267

Вам нужно использовать dns-rr ключевое слово в файле конфигурации или --dns-rr в командной строке. dns-rr|--dns-rr действительно способ поместить любое произвольное содержимое DNS, кроме того типа, о котором dnsmasq знает, например A, MX, PTR, и т.д.

Обратите внимание на его использование в руководстве:

--dns-rr = <имя>, <RR-номер>, [<шестнадцатеричные данные>]

Вернуть произвольную запись ресурса DNS. Число - это тип записи (всегда находится в классе C_IN). Значение записи задается шестнадцатеричными данными, которые могут иметь форму 01:23:45 или 01 23 45 или 012345 или любую их смесь.

Конечно name это простая часть, обычно это будет ваше доменное имя.

Итак, сначала вам нужно найти «номер типа RR» для записей CAA. Если вы пойдете в Реестр IANA на DNS RRtypes, и найдите CAA, вы увидите, что это номер 257. Итак, 257 входит в вышеприведенное RR-number часть.

Для hex-data Вам нужно взять контент, который вы хотите опубликовать, и закодировать его как шестнадцатеричные данные. В этом вам могут помочь многие инструменты.

В качестве альтернативы, если вы просто зайдете в https://sslmate.com/caa/после заполнения формы со всеми вашими данными вы увидите внизу, что он делает все за вас и дает вам именно то, что вам нужно использовать в dnsmasq, например, в этом примере:

--dns-rr=example.com,257,000569737375653B

DNSMASQ добавил caa-record вариант в версии 2,80, выпущенный в октябре 2018 года (после принятого исходного ответа). Я добавляю этот ответ, поскольку для меня это лучший результат для "dnsmasq caa" в Google. Обратите внимание, что предыдущий ответ по-прежнему работает нормально и полезен для старых версий DNSMASQ!

Ручной ввод для caa-record

--caa-record=<name>,<flags>,<tag>,<value>
    Return a CAA DNS record, as specified in RFC6844.

Пример файла конфигурации

caa-record=example.com,0,issue,digicert.com

Ссылка