from twisted.internet import reactor from twisted.protocols import dns from twisted.names import client, server, authority, common class NoFileAuthority(authority.FileAuthority): def __init__(self, soa, records): # Yes, skip FileAuthority common.ResolverBase.__init__(self) self.soa, self.records = soa, records soa_record = dns.Record_SOA( mname = 'i.poly9.com', rname = 'elephant.poly9.com', serial = 1, refresh = 1234, minimum = 7654, expire = 19283784, retry = 15, ttl=1 ) test_domain_com = NoFileAuthority( soa = ('i.poly9.com', soa_record), records = { 'i.poly9.com': [ soa_record, dns.Record_A('127.0.0.1')], 'test.i.poly9.com': [dns.Record_A('127.0.0.1') ] } ) factory = server.DNSServerFactory([test_domain_com], verbose=2) p = dns.DNSDatagramProtocol(factory) reactor.listenUDP(53, p) reactor.run()