RAINS, Another Internet Naming Service
This repository contains a reference implementation of a RAINS server,
supporting authority, intermediary, and query service, as well as associated
tools for managing the server. It has the following executables:
rainsd
: A configurable RAINS server
rdig
: A command-line tool for querying RAINS servers
zonepub
: A command-line tool for a naming authority to publish information
about its zone(s) to its authoritative RAINS servers
keyManager
: A command-line tool for a naming authority to manage its
key pairs
In addition to this there is a resolver in libresolve
which either forwards
a query to a RAINS server to resolve it or performs a recursive lookup itself
on the callers behalf before sending the received answer back to the caller.
Understanding RAINS
The RAINS implementation is based on the RAINS protocol specified in the
Internet draft.
The different components necessary to run
a RAINS infrastructure are described here.
The design of this RAINS server is explained here and
the cache folder contains design decisions for all caches. The
zonefile format, designed to be conveniently readable by a human, is defined in
backus normal form here. Each command line tool has a help
page which explains all commands and flags that are supported.
Installing and using RAINS
On your machine
- Make sure that you are using a clean and recently updated Ubuntu 16.04.
- Download the repo e.g.
git clone https://github.com/netsec-ethz/rains
- Create the necessary binaries by calling make
- Use the binaries created in the cmd folder
In SCION lab
TODO
Issues and Test coverage
The RAINS server and tools are under active development. An up to date
list of issues and bugs can be found here.
The server and all tools are tested using unit and integration tests.
A description of the integration test can be found in this readme
To inspect the test coverage of all unit tests together with the integration test,
perform the following steps:
- go test -coverprofile=coverage.out -coverpkg=./internal/pkg/... ./...
- go tool cover -html=coverage.out -o coverage.html
- firefox coverage.html