記錄update TLSA時遇到的位元組錯位和delete 問題

來源:互聯網
上載者:User

記錄一下自己在使用dnspython來update TLSA時遇到的問題

1。在填充好TLSA對象,update對象後,列印update對象,發現報文正確,但是使用tcp發送後查詢新添加的記錄發現位元組錯位了,如

待添加記錄為:_443._tcp.www.test.com  IN TLSA 1 2 3 XXXX 

添加成功後查詢該記錄得到

 _443._tcp.www.test.com IN TLSA 0  1 0  0203XXXX

很奇怪的是發生了位元組錯位,一開始是懷疑不會是bind9不遵守RFC吧?後來想想可能性幾乎為0。。。。

然後又試圖通過截取報文,驗證是否是自己發送的報文存在問題,最後發現問題出現在dns.query.tcp()處

使用pdb調試後未發現問題,只知道最後是由於to_wire()函數導致,從Update.to_wire()到Message.to_wire(),然後又追蹤到到Render.get_wire()(發現這個函數是列印報文頭的) 最後不知道怎麼調用了TLSA.to_wire函數

好吧……嗯。。。。反正最後問題是通過我更新dnspython的編譯莫名其妙的解決了,似乎是沒什麼借鑒意義……

2 。 有關delete時候的rdataclass問題

在TLSA delete 時,列印update對象發現構造update時指定的dns.rdataclass.IN 變成了NONE 雖然未影響最後update結果,但是還是不太明白為什麼要這麼做。

我傳入delete函數的參數是 TLSA對象,

  149          args = list(args)  150             if isinstance(args[0], dns.rdata.Rdata):#傳回值True,進入該分支  151                 for rd in args:  152                     self._add_rr(name, 0, rd, dns.rdataclass.NONE)#設定rdataclass 為NONE,  153             else:#如果是依次傳入的args  154                 rdtype = args.pop(0) #pop出RR TYPE  155                 if isinstance(rdtype, (str, unicode)):  156                     rdtype = dns.rdatatype.from_text(rdtype)#如果是type字串表示,則轉化成相應Type的對象  157                 if len(args) == 0:  158                     rrset = self.find_rrset(self.authority, name,  159                                             self.zone_rdclass, rdtype,  160                                             dns.rdatatype.NONE,  161                                             dns.rdataclass.ANY,   162                                             True, True)  163                 else:  164                     for s in args:  165                         rd = dns.rdata.from_text(self.zone_rdclass, rdtype, s,  166                                                  self.origin)#產生TLSA 對象  167                         self._add_rr(name, 0, rd, dns.rdataclass.NONE)#還是設定成NONE?

為啥呢?難道刪除的時候不用匹配rdataclass嗎?


聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.