我正在测试google cloud dns,并尝试使用gcloud命令创建TXT记录。但是,创建的记录意外地被转义。
这就是我所做的:
%gcloud dns记录--zone =“myzonename”编辑
在“添加”部分,我添加了这样的TXT记录:
{
"kind": "dns#resourceRecordSet",
"name": "example.com.",
"rrdatas": [
"v=spf1 include:_spf.google.com ~all",
],
"ttl": 84600,
"type": "TXT"
},
gcloud命令退出且没有错误,并且在我的区域中创建了TXT记录。但是,创建的记录如下所示:
{
"kind": "dns#resourceRecordSet",
"name": "example.com.",
"rrdatas": [
"\"v=spf1\" \"include:_spf.google.com\" \"~all\"",
],
"ttl": 84600,
"type": "TXT"
},
如您所见,双引号保存在数据中。我验证了DNS服务器的响应还包括双引号和空格。
% nslookup -type=TXT example.com. ns-cloud-e1.googledomains.com.
Server: ns-cloud-e1.googledomains.com.
Address: 216.239.32.110#53
example.com text = "v=spf1" "include:_spf.google.com" "~all"
预期输出为example.com text = "v=spf1 include:_spf.google.com ~all"
如何阻止这种不必要的逃避?
答案 0 :(得分:3)
DNS TXT记录由"字符串"的列表组成,每个字符串少于255个八位字节(参见RFC 1035)。在区域文件格式中,您将其表示为一系列以空格分隔的字符串。每个字符串都可以引用或不引用。如果您的一个字符串包含嵌入的空白区域,则需要使用引用的表单。
系统将您的输入解释为三个字符串的列表,但听起来您正在尝试使用单个字符串创建TXT记录。尝试:
{
"kind": "dns#resourceRecordSet",
"name": "example.com.",
"rrdatas": [
"\"v=spf1 include:_spf.google.com ~all\"",
],
"ttl": 84600,
"type": "TXT"
},
外部引号用于JSON字符串。内部转义为JSON的内容是区域文件格式的一部分。希望这会有所帮助。
答案 1 :(得分:0)
这里的问题......
这似乎是gcloud SDK的一个错误。
我通过逃避空间来解决这个问题:
{
"kind": "dns#resourceRecordSet",
"name": "example.com.",
"rrdatas": [ "v=spf1\\ mx\\ include:_spf.google.com\\ ~all" ],
"ttl": 21600,
"type": "TXT"
}
你必须用两个反斜杠来逃避空间。
一切顺利!