HypeDNS

From meshwiki
Jump to: navigation, search

To keep us from having to type in IPv6 numbers all of the time while we wait for a wonderful P2P based DNS system to emerge, Mikey threw together HypeDNS. It's a Domain Name Server powered by the NodeInfo application database.


How it works

The HypeDNS server was painstakingly hand crafted by artisan programmers to provide you with the kind of refinements you'd expect from a modern day domain name server. The server first looks for names stored in the NodeInfo database, and if found, returns the address (or name if reversing!) post haste! If the domain is not found, or it is a request for an A record (IPv4), the query is forwarded on to ns03.mg2.org, or ns04.mg2.org, Mikey´s local name servers.

How to use HypeDNS

In order to use HypeDNS, it should be prepended[Note 1]. to the list of nameservers to /etc/resolv.conf. The IPv6 address of the HypeDNS nameserver is fc5d:baa5:61fc:6ffd:9554:67f0:e290:7535. The resulting files will look like this

nameserver fc5d:baa5:61fc:6ffd:9554:67f0:e290:7535
nameserver 216.150.225.242
nameserver 216.150.225.243

On resolvconf Distributions (Ubuntu and Similar)

Your /etc/resolv.conf might start like this:

# Dynamic resolv.conf(5) file for glibc resolver(3) generated by resolvconf(8)
#     DO NOT EDIT THIS FILE BY HAND -- YOUR CHANGES WILL BE OVERWRITTEN

In that case, your distribution has a program called "resolvconf" that re-writes resolv.conf when you connect to or disconnect from networks. Ubuntu and derived distributions generally have this setup. In that case, you need to place the "nameserver fc5d:baa5:61fc:6ffd:9554:67f0:e290:7535" line at the end of /etc/resolvconf/resolv.conf.d/head, so resolvconf will automatically prepend it to the resolv.conf files it generates. Once this is done, you can regenerate your resolv.conf by running:

sudo service resolvconf restart

On Arch Linux

Create /etc/resolv.conf.head, containing:

nameserver fc5d:baa5:61fc:6ffd:9554:67f0:e290:7535

Then, update using resolvconf:

sudo resolvconf -u


On OSX

OSX generates the /etc/resolve.conf so you shouldn't edit it directly. Instead, you can configure a specific name server for just the *.hype domains by creating /etc/resolver/hype with just this content:

nameserver fc5d:baa5:61fc:6ffd:9554:67f0:e290:7535


An easy way to check if it works is to issue

ping6 nodeinfo.hype

for european users/#MeshnetEurope

An experimental DNS cache server is available:

nameserver fc2e:c472:43cc:b887:c0c1:625d:3124:b980

Unbound

Add the following to /etc/unbound/unbound.conf to forward lookups to HypeDNS:

 stub-zone:
 	name: "c.f.ip6.arpa."
 	stub-addr: fc5d:baa5:61fc:6ffd:9554:67f0:e290:7535
 forward-zone:
 	name: "."
 	forward-addr: # Add forward-addr entries for your preferred DNS servers here 
 	forward-addr: fc5d:baa5:61fc:6ffd:9554:67f0:e290:7535

Clients that use an unbound instance configured this way should have the benefit of resolving CJDNS address to NodeInfo.

Set Your HypeDNS Host Name

Once you have HypeDNS set up, you probably want to configure the DNS name for your node. You can do this either through the nodeinfo.hype web interface, or via a command-line script as described below.

Install Hypehost script

Download the script from: http://[fc5d:baa5:61fc:6ffd:9554:67f0:e290:7535]/files/hypehost.tar.gz. Untar it tar -xzvf hypehost.tar.gz and cd into the hypehost directory. This program is inspired by the default, no-options behavior of hostname(1).

Usage

Running the command with no arguments, will simply print your hyperboria hostname. Running it with an argument will set your hyperboria hostname.

 # get the current hypehost of this node.
 $ ./hypehost 
 nodeinfo.hype
 # set a new hypehost!
 $ ./hypehost something.else
 something.else
 # mmhm.  it resolves!
 $ ping6 something.else
 PING something.else(something.else) 56 data bytes
 64 bytes from something.else: icmp_seq=1 ttl=64 time=0.020 ms
 # keeping hyperboria safe since 2012.
 $ ./hypehost google.com
 [hypehost/err] hostname google.com conflicts with ICANN/IANA domain '.com'

Advanced usage

If you have multiple nodes on one machine, you can use the hypehost command to set the values of all of them. Just specify which IPv6 address you want to set the HypeDNS host name for as the first argument.

 # another node on this box, the hyperboria's premiere git server
 $ ./hypehost fcd5:c432:affb:7e77:a754:74e0:5e98:12d3
 git.hype
 # we can change its hostname thusly
 $ ./hypehost fcd5:c432:affb:7e77:a754:74e0:5e98:12d3 git.lost
 git.lost

Dependencies

Hypehost script requires the Perl module IO::Socket::INET6 which comes with newer versions of Perl, but not with some of the older ones. If you are running a dpkg-based OS, run the following:

  sudo apt-get install libio-socket-inet6-perl

If you are running CentOS or Amazon Basic Linux, run the following:

  sudo yum install perl-IO-Socket-INET6

For Arch users, run the following:

  pacman -S perl-io-socket-inet6

Alternate Method

thefinn93 also made a script to update your HypeDNS records from the command line. It will allow you to configure all of the things that that are configurable from the HypeDNS site. It can be found here. The only dependencies are python and the python httplib2 library (debian package python-httplib2)

Notes

  1. The HypeDNS nameserver should be placed above other nameservers. When resolving a domain name to IP address, the nameservers are querried starting from the first in the list. The non-HypeDNS nameservers will return error when trying to resolve a HypeDNS name