Git Product home page Git Product logo

tacodns's Introduction

TacoDNS

Developer-friendly authoritative DNS server written in Rust.

Original repository: https://gitlab.com/chris13524/tacodns/-/tree/master

Example

Docker Compose

version: "3.7"
services:
  tacodns:
    restart: always
    image: handz/tacodns
    ports:
      - 53:53/udp
      - 53:53/tcp
    command: --config-env TACODNS
    environment:
      TACODNS: |
        ttl: 30m
        zones:
          example.com:
            A: 10.10.10.10

Cargo

cat >tacodns.yml <<EOF
ttl: 30m
zones:
  example.com:
    A: 10.10.10.10
EOF

cargo run -- --config tacodns.yml

Usage

See config.example.yml and tacodns --help.

Features

  • Configuration is done via YAML format. No more of those ugly BIND-style zone files!
  • Supports ANAME/ALIAS records.
  • Supports more advanced matching than regular DNS wildcards such as single, double, and triple wildcards, regular expressions, and fall-though zones.
  • RNS (Recursive NS) record: TacoDNS queries another DNS server for the results. Supports record types that TacoDNS does not.
  • TRPP (TacoDNS Record Provider Protocol) record: TacoDNS will query a JSON HTTP server for the results (e.g. TacoDNS ACME). Only supports A, AAAA, MX, and TXT records.

Supported record types

  • A
  • AAAA
  • MX
  • TXT
  • NS
  • CNAME & ANAME

Unsupported types can be provided by an upstream DNS server connected via RNS.

Planned features

  • SRV records
  • CAA records
  • DNSSEC
  • environment variables in config
  • URL records (resolves address records to itself and does HTTP redirect)

Spec compliance

This server is mostly spec compliant. There are some semantic cases where this server isn't fully compliant, but I haven't encountered any actual real-world problems with them. TacoDNS has production usage at chris.smith.xyz and fathomstudio.com.

Known incompatibilities:

  • does not support BIND-style zone files
  • does not support zone transfers or master/slave
  • never returns NXDOMAIN, only empty NOERROR's (functional requirement due to powerful fall-though nature of TacoDNS zones)
  • SOA record is generated for every request, and may not be accurate
  • EDNS compliance: https://ednscomp.isc.org/ednscomp/cf51805c31

tacodns's People

Contributors

chris13524 avatar handzcz avatar

Watchers

James Cloos avatar  avatar

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.