1

DNS から Recursion Available (RA) フラグを具体的に取得しようとしています。RFC 1035 によると、再帰がない場合はゼロを返し、それ以外の場合はゼロ以外を返す必要があります。DNS 応答が Quad9 DNS サービスによってブロックされた場合、「RA:0」を含む「NXDOMAIN」が返されます。

ただし、DNSPython を使用すると、常に非ゼロ (128) が返されます。これはライブラリにハードコーディングできますか?

import dns
import dns.resolver

# Allowed Domain
# should return an IP address with "RA" non-zero
domain = "google.com"

# Blocked domain 
# Should return NXDOMAIN with "RA" to 0
#domain = "takelady.net" ---> UNCOMMENT

# Set Resolver to Quad9 (quad9.net)
my_resolver = dns.resolver.Resolver()
my_resolver.nameservers = ['9.9.9.9']

try:
    dns_response = dns.resolver.query(domain, "A")

    for resp in dns_response:
        print("[+]", resp.to_text())

    print("RA flag:", dns.flags.RA)
    
except dns.resolver.NXDOMAIN:
    print("[+] NXDOMAIN")
    print("RA flag:", dns.flags.RA)
    pass

except dns.resolver.NoAnswer:
    print("[+] NoAnswer")
    pass

except dns.resolver.Timeout:
    print("[+] Timeout")
    pass

許可された応答:

[+] 172.217.214.100
[+] 172.217.214.101
[+] 172.217.214.138
[+] 172.217.214.139
[+] 172.217.214.113
[+] 172.217.214.102
RA flag: 128

ブロックされた応答:

[+] NXDOMAIN
RA flag: 128
4

1 に答える 1