summaryrefslogtreecommitdiff
path: root/README
diff options
context:
space:
mode:
Diffstat (limited to 'README')
-rw-r--r--README142
1 files changed, 142 insertions, 0 deletions
diff --git a/README b/README
new file mode 100644
index 0000000..1496a5e
--- /dev/null
+++ b/README
@@ -0,0 +1,142 @@
+Installation
+============
+
+The following steps should work (verified in VirtualBox only)
+on the distribution/architecture/release combinations as listed bellow.
+
+----------------------------------------------
+Debian (AMD64, I386) 6.0.2.1 (squeeze)
+Ubuntu Server (AMD64, I386) 10.04 LTS
+Ubuntu Desktop (AMD64, I386) 10.04 LTS
+----------------------------------------------
+
+$ # make the system up-to-date
+$
+$ sudo apt-get update
+$ sudo apt-get upgrade
+$
+$ # ensure all prerequisites are installed
+$
+$ sudo apt-get install git-core autoconf libtool flex bison libssl-dev
+$
+$ # the required version of liburcu is not available in the default package sources.
+$
+$ wget http://bd.archive.ubuntu.com/ubuntu/pool/universe/libu/liburcu/liburcu0_0.5.4-1_amd64.deb
+$ wget http://bd.archive.ubuntu.com/ubuntu/pool/universe/libu/liburcu/liburcu-dev_0.5.4-1_amd64.deb
+$ sudo dpkg -i liburcu0_0.5.4-1_amd64.deb
+$ sudo dpkg -i liburcu-dev_0.5.4-1_amd64.deb
+$
+$ # go for the real thing
+$
+$ git clone git://git.nic.cz/knot
+$ cd knot
+$ autoreconf -if
+$ ./configure
+$ make
+$ sudo make install
+$ sudo ldconfig
+
+Alternative packages for I386:
+
+$ # the required version of liburcu is not available in the default package sources.
+$
+$ wget http://bd.archive.ubuntu.com/ubuntu/pool/universe/libu/liburcu/liburcu0_0.5.4-1_i386.deb
+$ wget http://bd.archive.ubuntu.com/ubuntu/pool/universe/libu/liburcu/liburcu-dev_0.5.4-1_i386.deb
+$ sudo dpkg -i liburcu0_0.5.4-1_i386.deb
+$ sudo dpkg -i liburcu-dev_0.5.4-1_i386.deb
+
+Installation on BSD
+===================
+
+Not all prerequisites are available as ports on BSD.
+
+- liburcu must be compiled from sources
+ - version 0.6.4 compiles on BSD without any source code modifications
+ - in case of x86_64 build, CFLAGS nad build type has to be set appropriately.
+ $ CFLAGS=-fPIC ./configure --build amd64
+- flex must be newer version from ports that support reentrant parsers
+
+Knot DNS requires more recent version of flex from ports, to prevent name clash, specify flex destination.
+$ cd <knot sources>
+$ autoreconf -if
+$ ./configure
+$ make && sudo make install
+
+Installation on OS X
+====================
+
+Not all prerequisites are preinstalled for OS X.
+
+- liburcu must be compiled from sources
+ - liburcu requires gcc-4.6 from MacPorts, as it depends on __thread keyword
+ $ CC=gcc-mp-4.6 ARCH=x86_64 ./configure
+ $ make && sudo make install
+
+Compiling Knot DNS with gcc-mp-4.6 is recommended, but not necessary.
+
+Running
+=======
+
+First, each server needs configuration file. Please see samples/knot.sample.conf
+for reference. Minimal configuration can be found in samples/knot.min.conf
+Configuration zone has to specify:
+* storage for PID files, compiled zones etc.
+* network interfaces
+* served zones
+
+$ cp samples/knot.min.conf myserver.conf
+$ vim myserver.conf # or your favourite text editor
+
+Second, zone files have to be compiled to binary form in order for server to
+load them. Binary 'knotc' (controller) offers functionality for everything from zone file
+management to controlling server instance. Most important parameter is '-c' that
+specifies config file for our server. Compiled zones are saved to storage
+defined in 'storage' variable in configuration.
+
+$ knotc -h # see what it can do
+$ knotc -c myserver.conf compile # compile zone files to binary format
+
+Third, lets load server. You can do this by running 'knotd' directly, or with
+'knotc' as well. Server is able to run in daemonized or interactive mode.
+Lets start our server in interactive mode (parameter '-i') to see if it runs.
+
+$ knotc -c myserver.conf -i start # start server in interactive mode
+
+Running as daemon
+=================
+
+Controller runs server in daemonized mode as default. Disadvantage is, that
+it closes stdout/stderr so you need to set up either syslog or logging to
+own files in the configuration. Controller parameter '-w' waits for the operation
+to finish. Let's test server functionality.
+
+$ knotc -c myserver.conf -w start # start server
+$ dig @$ADDR -p $PORT example.com # issue a query and see result
+$ ...
+$ knotc -c myserver.conf -w stop # stop server
+
+Also, keep in mind that zone files have to be compiled before they are loaded
+to server. Workflow is as follows:
+
+$ knotc -c myserver.conf -w start
+$ <edit zonefile>
+$ knotc -c myserver.conf compile # compile zones to binary format
+$ knotc -c myserver.conf reload # reconfigures server on-the-fly
+$ dig @$ADDR -p $PORT example.com # issue a query and see result
+$ ...
+$ knotc -c myserver.conf stop
+
+Supported features
+==================
+
+DNS functions:
+* AXFR (master)
+* EDNS0
+* DNSSEC
+* NSEC3
+
+Server features:
+* Adding/removing zones on-the-fly
+* Reconfiguring server instance on-the-fly
+* IPv6 support
+* Semantic checks of loaded zone