使用 Twisted Python 实现 DNS APL 服务器

问题描述 投票:0回答:0

我一直在尝试使用 Twisted 实现自定义 APL 记录查询来创建 DNS 服务器。

我已经创建了一个自定义记录类来实现

IEncodableRecord
来对 APL 记录进行编码、解码和字符串化。我还在处理 APL 记录 (42) 的查询类型并返回响应。当我使用像
dig
这样的
dig -p [port] @127.0.0.1 [domain] APL
命令时,我得到一个错误消息末尾有x个额外的字节。

dig
命令返回如下内容:

;; Warning: Message parser reports malformed message packet.

; <<>> DiG 9.16.39 <<>> -p [port] @127.0.0.1 [domain] APL
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 47319
;; flags: qr ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0
;; WARNING: Message has 4 extra bytes at end

;; QUESTION SECTION:
;[domain].                   IN      APL

;; Query time: 4886 msec
;; SERVER: [server + port]
;; WHEN: [datetime]
;; MSG SIZE  rcvd: 45

此代码生成要发回的答案:

address = b"172.0.2.100" #Just a dummy response address.
payload: apl.IEncodableRecord = dns.Record_APL(address=address)
answer = dns.RRHeader(
    type=dns.APL,
    name=name,
    ttl=0,
    cls=dns.IN,  # IN
    payload=payload,
)
answers = [answer]
authority = []
additional = []
print('Answers:')
print(answers)
return answers, authority, additional

我从服务器返回的答案是这样的:

<RR name=[domain] type=APL class=IN ttl=0s auth=False>

我对服务器中 RRHeader 的有效负载看起来像这样:

<APL afi=1 address=172.0.2.100 prefix=23 ttl=0> #All this info is just dummy data I return at the moment.

我不认为有效负载是问题所在?

我该如何调试它,或者是否有一些在线资源(我找不到)可以为我指明正确的方向?

python networking dns twisted
© www.soinside.com 2019 - 2024. All rights reserved.