2016-07-14 57 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

相關問題