我正在尝试将CAA记录添加到使用dnsmasq但尚未成功的DNS服务器中。CAA帮助站点告诉我使用"--dns-rr=sitename“-option,但是我不知道把它们放在哪里。我尝试将它添加到/etc/dnsmasq.conf中,这给了我一个语法错误。我还尝试在命令行中使用它,但这只是尝试启动dnsmasq守护进程本身。
所以,问题是,我如何在dnsmasq中添加CAA记录?
发布于 2018-06-03 23:21:52
您需要在配置文件中使用dns-rr关键字,或者在命令行上使用--dns-rr。dns-rr|--dns-rr确实是将任意的DNS内容放入诸如A、MX、PTR等类型之外的方式。
注意它在手册中的使用:
- DNS -RR=,,undefined返回任意的DNS资源记录。数字是记录的类型(总是在C_IN类中)。该记录的值由十六进制数据提供,其形式可以是01: 23 :45或01 23 45或012345,也可以是这些数据的任何混合物。
当然,name是容易的部分,它将是典型的您的域名。
因此,您首先需要为CAA记录找到"RR类型编号“。如果你去DNS R类型上的IANA注册中心搜索CAA,你会发现它是257号。所以257个进入了上面的RR-number部分。
至于hex-data部分,您需要获取要发布的内容,并将其编码为十六进制数据。很多工具都可以帮助你做到这一点。
或者,如果您只是进入https://sslmate.com/caa/,在填写完所有详细信息后,您将看到它为您完成了一切,并给出了您在dnsmasq中所需使用的确切内容,如下面的示例:
--dns-rr=example.com,257,000569737375653B
发布于 2018-08-09 00:20:23
添加Patrick的答案,主要是为了澄清如何在不依赖第三方服务的情况下实际生成必要的dnsmasq配置条目。
如果您想让dnsmasq提供某些本机不支持的记录类型,您需要给出它应该放在线路上的准确的记录数据。
请注意,DNS是一种二进制协议,因此dnsmasq需要与所需记录数据对应的确切字节序列,而不是您习惯处理的友好的文本表示形式,但却不知道如何将其解释为在线路上发送的实际二进制DNS格式。
--dns-rr配置选项需要以下值:
--dns-rr=<name>,<RR-number>,[<hex data>]返回任意的DNS资源记录。数字是记录的类型(总是在C_IN类中)。该记录的值由十六进制数据提供,其形式可以是01: 23 :45或01 23 45或012345,也可以是这些数据的任何混合物。
例如,您知道域名(您的域名),并且可以查找RR-号( 记录类型的数字表示,还是dnsmasq不知道CAA是什么)值,但是需要以某种方式生成有线数据格式,并以十六进制的方式对其进行编码,以获得对十六进制数据有效的东西。
示例:
example.com. IN CAA 0 issue "letsencrypt.org"名称= example.com
RR-number = 257 (这是什么与CAA相对应?)
十六进制数据= 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发布于 2020-08-10 16:15:47
DNSMASQ在2.80版中增加了一个caa-record选项,于2018年10月发布(在最初接受的答案之后)。我加入这个答案,因为这仍然是我在Google上的"dnsmasq“的最高结果。请注意,前面的答案仍然很好,对于较早版本的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.comhttps://serverfault.com/questions/914108
复制相似问题