如何使用dnspython在区域文件中添加别名目标?

时间:2016-07-14 12:51:33

标签: python dns amazon-route53 boto3 dnspython

我使用boto3和dnspython库为route-53托管区域生成区域文件。我成功地使用 dnspython库(1.14.0)生成A / CNAME / MX / TXT记录集。 但是,因为它没有ALIAS TARGET(A Record)的任何实现。我收到此错误:

**Traceback (most recent call last):
  File "/home/work/dns_check.py", line 156, in <module>
  rdataset = add_record_type_A(zone, name, address)
  File "/home/work/dns_check.py", line 28, in add_record_type_A
  rdata = rd_A.A(IN, A, address=address)
  File "/usr/local/lib/python2.7/dist-packages/dns/rdtypes/IN/A.py", line 34, in __init__
  dns.ipv4.inet_aton(address)
  File "/usr/local/lib/python2.7/dist-packages/dns/ipv4.py", line 51, in inet_aton
  raise dns.exception.SyntaxError
  dns.exception.SyntaxError: Text input is malformed.**

这是因为ALIAS就像“alias.testdomain.com”,它不支持IPV4。 我可以通过编辑python库来生成它。还有其他方法吗?

提前致谢

1 个答案:

答案 0 :(得分:0)

您认为AWS“别名”记录不是标准DNS记录类型。

如果您尝试使用Route53托管区域中的记录生成普通标准DNS区域文件,则最接近的标准记录类型将是CNAME记录。但是,生成的区域文件的行为与Route53区域的行为完全不同,因为“Alias”记录在实时查询时返回目标的A记录,而生成的区域文件则提供CNAME记录,解析器将关闭做另一轮查询,最终获得A记录。

还有一个警告,根据RFC1033,CNAME记录不能与其他记录类型一起使用。如果您拥有域根的别名记录(即testdomain.com),这通常会导致麻烦,该记录不应包含CNAME记录,因为它已经包含SOA,NS以及可能的MX和其他记录。