Python Linux DNS别名和地址回复

时间:2016-10-27 05:34:14

标签: python linux python-2.7 dns

我一直试图弄清楚如何使用端口添加别名和IP地址作为对具有别名的DNS查询的响应。我正在运行一个用Python编写的简单DNS服务器,特别是https://gist.github.com/andreif/6069838

我已经读过别名和IP通常是从记录或区域文件中提取的,但是这个服务器没有任何所以我不清楚它们将添加到哪里我是手动指定别名和IP与一个港口。我试图手动编写我的DNS响应只是为了意识到我不确定从哪里检索别名和IP。另外我不确定为什么但是当我用nslookup查询服务器时,服务器似乎也没有传递别名查询,因为qn变量似乎只保存字符串'server'而没有别的。 qn变量部分在下面的示例中。

def dns_response(data):
    request = DNSRecord.parse(data)

    print request

    reply = DNSRecord(DNSHeader(id=request.header.id, qr=1, aa=1, ra=1), q=request.q)

    qname = request.q.qname
    qn = str(qname)
    qtype = request.q.qtype
    qt = QTYPE[qtype]

TL; DR 如何使用端口添加别名和IP地址作为对别名DNS查询的回复?

编辑:我已经修复了Python 2.7.12的简单DNS程序,如果你有问题没有收到QName,请删除UDP请求上的.strip()。同时确保您的域名以“。”结尾。就像在test.com中一样。否则它将找不到匹配,因为它将“test.com”与“test.com”进行比较。因为第一个函数不存在,所以使用reply.add_answer更改所有的reply.add_ns。如果您没有收到A作为查询的响应,请添加reply.add_answer(RR(rname = qname,rtype = 1,rclass = 1,ttl = TTL,rdata = rdata))此处的密钥更改是响应类型, rtype = 1表示它是A响应而不是SOA或NS响应。有关DNS数据包的详细制动,请访问www.zytrax.com/books/dns/ch15。

1 个答案:

答案 0 :(得分:2)

您不能 - 标准DNS AAAAA记录不包含端口号。