Giter Site home page Giter Site logo

slimdns's Introduction

slimDNS

A simple DNS server written in vanilla Python.

Installation

pip install slimDNS

or simply git clone this repository.

Minimal example

import slimDNS

dns = slimDNS.server(slimDNS.UDP)

dns.run()

This would host a DNS server without any records.
There's two ways you can add records:

Swap out all records via annotation

@dns.records
def records(server):
	return {
		"example.com" : {
			"A" : {"target" : "264.30.198.2", "ttl" : 60},
			"SOA" : {"target" : "example.com", "ttl" : 60},
			"NS" : {"target" : "example.com", "ttl" : 60, "priority" : 10}
		},
		"nas.example.com" : {
			"A" : {"target" : "264.30.198.2", "type" : "A", "ttl" : 60}
		},
		"_matrix._tcp.riot.example.com" : {
			"SRV" : {"ttl" : 60, "priority" : 10, "port" : 8448, "target" : "nas.example.com"}
		}

	}

Which would swap out all current records for the defined set of records.

Add, delete and update records

dns.remove('example.com', 'A')
dns.add('example.com', 'A', '264.30.198.1')
dns.update('example.com', 'A', '264.30.198.5')

Which would remove the A record example.com,
Then add a new similar one with a new IP.
Finally, update that new record with a new IP.

Note

Requires Python 3.8+ & Linux (not tested on other platforms).

slimdns's People

Contributors

torxed avatar

Stargazers

 avatar  avatar  avatar

Watchers

 avatar  avatar

Forkers

simhaonline

slimdns's Issues

Might not fully support MX records etc yet.

Gotta investigate.

Currently, the priority of a MX record probably ends up in the content column, if that automatically works. Great. If not. Handle the additional parameters of all record types neatly.

Multiple records with same type not supported in v1.0.0rc1

Take NS records for instance, which can have multiple entries for one domain. Currently as it stands, because we're using dict for the storage facility, there can't be multiple keys.

The solution will be to add multiple dict values in a list like this:

@dns.records
def records(server):
	return {
		"example.com" : {
			"A" : {"target" : "264.30.198.2", "ttl" : 60},
			"SOA" : {"target" : "example.com", "ttl" : 60},
			"NS" : [{"target" : "ns1.example.com", "priority" : 10}, {"target" : "ns2.example.com", "priority" : 10}]
		}
	}

Some glue magic will have to be implemented in the slimDNS.lib.abstracts.dns.NS() abstract function.

Slow responses from nslookup in windows

PS C:\Users\anton> nslookup.exe -q=soa hvornum.se 127.0.0.1
DNS request timed out.
    timeout was 2 seconds.
Server:  UnKnown
Address:  127.0.0.1

hvornum.se
        primary name server = hvornum.se
        responsible mail addr = root.hvornum.se
        serial  = 1
        refresh = 360 (6 mins)
        retry   = 360 (6 mins)
        expire  = 360 (6 mins)
        default TTL = 360 (6 mins)

I think the server times out because the reverse lookup of the IP is off.
But I'll have to investigate.

TCP socket stops responding after zonemaster test

After running a undelegated test on zonemaster.
The TCP socket stops responding for some reason where as the UDP still remains un-harmed.

Test server:

  • Domain Name: scientist.cloud
  • Name Server: ns1.scientist.cloud
  • IP: [ping ns1.scientist.cloud]

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.