2016-07-14 60 views
0

我正在使用boto3和dnspython库为路由53托管区域生成区域文件。我成功地使用dnspython库(1.14.0)生成了A/CNAME/MX/TXT记录集。 但是,由于它不具有ALIAS TARGET(A记录)。我正在此错误的任何实现:如何使用dnspython在区域文件中添加别名目标?

**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.testdomain.com”,这是不是一个支持IPV4 。 我能够通过编辑python库来生成它。是否有其他解决方法?

在此先感谢

回答

0

你是正确的,AWS的“别名”记录是不是一个标准的DNS记录类型。

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

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

+0

是的,目前我正在处理的是 - 如果记录集类型是ALIAS,那么我将追加到一个数组中,最后以标准方式将它附加到该文件(ALIAS)。 – tom

相关问题