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 126.96.36.199 nameserver 188.8.131.52
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
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:
An easy way to check if it works is to issue
for european users/#MeshnetEurope
An experimental DNS cache server is available:
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).
# 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'
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
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
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)
- 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