67 lines
2.2 KiB
Markdown
67 lines
2.2 KiB
Markdown
# Racket DNS resolver and server
|
|
|
|
This is a [Racket](http://racket-lang.org/) implementation of a DNS
|
|
server and iterative resolver. It's written to work with
|
|
[Marketplace](https://github.com/tonyg/marketplace), but could readily
|
|
be adapted to work with other I/O substrates. (It originally used
|
|
Racket's `sync` and events directly.)
|
|
|
|
The code is not quite fully separated into a reusable library (or even
|
|
a configurable service) yet. Changing this is straightforward, but
|
|
low-priority right now. Patches welcome!
|
|
|
|
## How to compile and run the code
|
|
|
|
You will need the latest **prerelease** version of Racket. Any version
|
|
newer than or equal to Racket 5.3.4.10 should work. Nightly-build
|
|
installers for Racket can be downloaded
|
|
[here](http://pre.racket-lang.org/installers/).
|
|
|
|
Once you have Racket installed,
|
|
|
|
raco pkg install marketplace
|
|
|
|
to install Marketplace (note: will take a long time), and then
|
|
|
|
raco make driver.rkt proxy.rkt
|
|
|
|
to compile the DNS code. Once it has compiled successfully,
|
|
|
|
DNSPORT=5444 racket driver.rkt
|
|
|
|
will start a DNS leaf zone server on port 5444 holding records from
|
|
`test-rrs.rkt`'s `test-rrs` variable, and
|
|
|
|
DNSPORT=5444 racket proxy.rkt
|
|
|
|
will start an iterative DNS resolver service on port 5444 offering
|
|
regular DNS service to all comers.
|
|
|
|
You can try out the service with
|
|
|
|
dig @localhost -p 5444 localhost.example
|
|
|
|
To enable debug output, try
|
|
|
|
MATRIX_LOG=info DNSPORT=5444 racket driver.rkt
|
|
|
|
## Copyright and License
|
|
|
|
Copyright 2010, 2011, 2012, 2013 Tony Garnock-Jones <tonyg@ccs.neu.edu>
|
|
|
|
This file is part of marketplace-dns.
|
|
|
|
marketplace-dns is free software: you can redistribute it and/or
|
|
modify it under the terms of the GNU General Public License as
|
|
published by the Free Software Foundation, either version 3 of the
|
|
License, or (at your option) any later version.
|
|
|
|
marketplace-dns is distributed in the hope that it will be useful, but
|
|
WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
General Public License for more details.
|
|
|
|
You should have received a copy of the GNU General Public License
|
|
along with marketplace-dns. If not, see
|
|
<http://www.gnu.org/licenses/>.
|