cjdns is the name of a new network protocol that implements a secure, scalable and fast network with minimal configuration.
cjdns was born out of a need to solve inherent problems in the standard TCP/IP stack, like running out of addressable space and vulnerability to DDoS attacks. It also implements end-to-end encryption out of the box, so any communication in a cjdns network is meddle-proof.
The cjdns project is currently in alpha, and a test network called Hyperboria with services like mail, social network and irc chat servers, exist with hundreds of nodes spread across the world.
This document will help you setup and connect to the Hyperboria network, to get a taste of what its like.
Pick your OS and follow the instructions. Its not hard, but does involve some compiling.
Generate a configuration file with the write permissions by doing
(umask 077 && ./cjdroute --genconf > cjdroute.conf)
Warning: skipping the umask part leaves your configuration file inssecure. If someone steals your configuration, they can impersonate you.
Note: Backup your configuration file to somewhere safe locally to prevent an embarassing loss of peer connectivity in case you delete the file by accident.
cjdns's network operates on a friend-of-a-friend model. This means, that to connect to the network you need to find nodes called peers which allow you to connect to the network.
But luckily, you don't have to go around hunting for peers just to get a taste of Hyperboria, you can peer with public peers to get into the network right away.
To do that, first get on the #cjdns channel on the Efnet IRC Network
Once in the channel, type ? public and you'll get links to public peers.
Follow any link and get to the peer info or "creds", which look something like this.
"<ip-address:<port>":{
"password":"<some-password>",
"publicKey":"<some-key>.k",
"user":"<username>",
"contact":"<email>",
"location":"<location>"
}
Copy this info and paste it into the cjdroute.conf you generated. The peer info
goes into the "connectTo" section under the "UDPInterface" section.
Note: Under UDPInterface there are separate sections for IPv4 and IPv6 based peers, make sure you don't mix them up.
Thats it, you're done! Fire up cjdns with
sudo ./cjdroute < cjdroute.conf
If all goes well, cjdroute starts up a daemon in the background, and lets you know. You should see
1443702359 DEBUG Configurator.c:635 Cjdns started in the background
If not, you probably have something wrong with the configuration file.
Once cjdns starts up correctly, you're ready to start diving in.
Open your browser and open this link. If it works, then congratulations! You just opened your first Hyperboria link. You can verify this by killed the cjdns daemon and trying the link again.
If it didn't work, your problem could be one of the following
First, check that your tunnel device exists and is working fine.
cat /dev/net/tun
If it says: cat: /dev/net/tun: File descriptor in bad state Good!
If it says: cat: /dev/net/tun: No such file or directory, create it using:
sudo mkdir -p /dev/net &&
sudo mknod /dev/net/tun c 10 200 &&
sudo chmod 0666 /dev/net/tun
Then cat /dev/net/tun again.
If it says: cat: /dev/net/tun: Permission denied and you're on MacOSX, Dont bother.
If you're probably using a VPS based on the OpenVZ virtualization platform. Ask your provider to enable the TUN/TAP device - this is standard protocol so they should know exactly what you need.
Open your terminal, go to the cjdns folder and do
./tools/peerStats
You should get something like
v16.0000.0000.0000.0015.<some-key>.k ESTABLISHED in 1kb/s out 1kb/s LOS 142
The ESTABLISHED state indicates a peer that is connected and working. If you don't get this then the peer is probably down, and you'll need to connect to another peer.
if peerStats was successful, try pinging a server with
ping6 h.cjdns.ca
If this works as well, then you probably have a browser issue. If it doesn't, it indicates that something is wrong with the ipv6 setup of your OS. Please check the OS docs and try to resolve the issue.
Browser support issues are mostly related to disabled or wrong ipv6 handling. If Chrome doesn't work, try firefox, and vice-versa.
To get Chrome to support IPv6, you need to compile it with the --enable-ipv6 flag.
In Firefox, you'll need to make a few settings changes, navigate to about:config
browser.fixup.alternate.enable to false
network.dns.disableIPv6 to false
If nothing works, tell us whats wrong at #cjdns
Note that Hyperboria and cjdns is run by a group of volunteers so be patient with us if you don't get immediate responses
There are two notable IRC networks in Hype:
- irc.hypeirc.net — general-purpose network with not a lot of rules.
- irc.fc00.io — a more development-focused moderated IRC server.
Ensure that your IRC client has IPv6 support.
Web based IRC clients will likely not work since their servers are not (yet) connected to the Hyperboria network.
To setup your mail on Hyperboria, head over to Hyperboria.name
Head over to Social Node if you want a facebook-like social network.
Reddit fan? Uppit
...and more, but we'll tell you about them when you join us ;) tease tease
See you on Hyperboria!