避免在gcloud编辑中不必要的转义

时间:2014-04-08 06:19:03

标签: dns gcloud google-cloud-dns

我正在测试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"

如何阻止这种不必要的逃避?

2 个答案:

答案 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"
}

你必须用两个反斜杠来逃避空间。

一切顺利!