#!/usr/bin/env python3 # Nico Schottelius, 2020-01-07 # Detect the DNS64 prefix # Based on https://tools.ietf.org/html/draft-ietf-behave-nat64-discovery-heuristic-05 # # How it works: # - ipv4only.arpa only has A records. # - a DNS64 server will add AAAA records # - we take this response (if any) and derive the IPv6 prefix from it # import dns.resolver import ipaddress if __name__ == '__main__': dns64_prefix = None answers = dns.resolver.query('ipv4only.arpa', 'AAAA') for rdata in answers: address = str(rdata) network = ipaddress.IPv6Network("{}/96".format(address), strict=False) # print("{}: {}".format(rdata, network)) print("{}".format(network))