A simple non-recursive DNS server written in Go.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
Brett Langdon f18e7b566e add ability to profile application 10 years ago
cmd/realm add ability to profile application 10 years ago
vendor/github.com Add "profile" from "git://github.com/pkg/profile@v1.0.0" 10 years ago
.gitignore initial prototype 10 years ago
LICENSE add license and docs 10 years ago
Makefile add registry.go to makefile 10 years ago
README.md update docs 10 years ago
doc.go update docs 10 years ago
registry.go always lowercase domain names when looking up 10 years ago
server.go handle requests in a goroutine 10 years ago
zone.go update docs 10 years ago

README.md

Realm

GoDoc

A simple non-recursive DNS server written in go.

Installation

Go get

go get -u github.com/brettlangdon/realm/cmd/...

Build

git clone https://github.com/brettlangdon/realm
cd ./realm
make

Usage

$ realm --help
usage: realm [--bind BIND] [ZONE [ZONE ...]]

positional arguments:
  zone                   DNS zone files to serve from this server

options:
  --bind BIND            [<host>]:<port> to bind too [default: :53]
  --help, -h             display this help and exit

Zone file

To run a server you must have a DNS zone file.

A simple example looks like the following:

$ORIGIN example.com.     ; designates the start of this zone file in the namespace
$TTL 1h                  ; default expiration time of all resource records without their own TTL value
example.com.  IN  SOA   ns.example.com. username.example.com. ( 2007120710 1d 2h 4w 1h )
example.com.  IN  NS    ns                    ; ns.example.com is a nameserver for example.com
example.com.  IN  NS    ns.somewhere.example. ; ns.somewhere.example is a backup nameserver for example.com
example.com.  IN  MX    10 mail.example.com.  ; mail.example.com is the mailserver for example.com
@             IN  MX    20 mail2.example.com. ; equivalent to above line, "@" represents zone origin
@             IN  MX    50 mail3              ; equivalent to above line, but using a relative host name
example.com.  IN  A     192.0.2.1             ; IPv4 address for example.com
              IN  AAAA  2001:db8:10::1        ; IPv6 address for example.com
ns            IN  A     192.0.2.2             ; IPv4 address for ns.example.com
              IN  AAAA  2001:db8:10::2        ; IPv6 address for ns.example.com
www           IN  CNAME example.com.          ; www.example.com is an alias for example.com
wwwtest       IN  CNAME www                   ; wwwtest.example.com is another alias for www.example.com
mail          IN  A     192.0.2.3             ; IPv4 address for mail.example.com
mail2         IN  A     192.0.2.4             ; IPv4 address for mail2.example.com
mail3         IN  A     192.0.2.5             ; IPv4 address for mail3.example.com

Example taken from here.

Starting the server

realm ./domain.zone

By default realm binds to port 53, which usually requires root, so you may need to run sudo realm ./domain.zone.

You can also specify any number of zone files by providing multiple zone files.

realm ./first.domain.zone ./second.domain.zone