Getting started

From meshwiki
Revision as of 05:52, 6 June 2012 by Derp (Talk | contribs)

Jump to: navigation, search

Welcome to the Getting Involved Guide.

Project Meshnet aims to build a sustainable decentralized alternative internet. You can help in several ways from spreading the word, starting up your first CJDNS node, or starting a local meshnet group.

About Project Meshnet

Project Meshnet was created out of the /r/darknetplan community in order to fight back against Internet censorship by Corporations and Governments around the world. It aims to use a combination of software and hardware to achieve the goal of a censorship free Internet. The software component, called CJDNS, is being used right now to create a network called hyperboria. Hyperboria is a network that operates securely over the current Internet infrastructure. Along with this network, Project Meshnet is also working on helping set up hardware in communities around the globe, creating mesh "islands" which will then tie into Hyperboria. These Mesh Islands are completely immune to any form of censorship.

Project Meshnet can mostly be helped right now by those with some level of skill with technology. Both the software and hardware packages are in the very early Alpha stages and need as much assistance as possible to get off the ground. However, if you are not tech-savvy, if you can find a tech savvy user to work with you should still be able to contribute a lot to the project. Below you will find a guide on how to best assist the project and further our goals right now. It should help you find both hardware and instruct you in installing CJDNS.


What this guide is not

  • A place to find peers, you find them on the IRC, or search for public peers
  • A Ubuntu install guide (virtual nor standalone)
  • A Linux quick start guide
  • A networking guide
  • A explanation of difficult terms, see the glossary

Get on IRC

This is the most important part, we are social people and like to talk, helping people and discussing the latest topics is way easier on the IRC then telling in a wiki. Don't be shy and introduce yourself. You can find the IRC at IRC Server or use the Webchat.

What is CJDNS

It is a routing engine designed for security, scalability, speed and ease of use. The dream: You type ./cjdns and give it an interface which connects another node and it gives you an IPv6 address generated from a public encryption key and a virtual network card (TUN device) which you can use to send packets to anyone in the cjdns network to which you are connected.

How CJDNS works

In order to understand how cjdns works, it is important to understand how the existing internet works when you send a packet, at each "intersection in the road" the router reads the address on the packet and decides which turn it should take. In the cjdns net, a packet goes to a router and the router labels the packet with directions to a router which will be able to best handle it. That is, a router which is near by in physical space and has an address which is numerically close to the destination address of the packet. The directions which are added to the packet allow it to go through a number of routers without much handling, they just read the label and bounce the packet wherever the next bits in the label tell them to. Routers have a responsibility to "keep in touch" with other routers that are numerically close to their address and also routers which are physically close to them.

The router engine is a modified implementation of the Kademlia DHT design.

Please read the whitepaper for more information.

Install it

Follow one of these guides to setup CJDNS. Make sure you've read the whitepaper.

Note Note: These guides require some knowledge of linux. If you don't understand linux and basic networking. There is nothing for you to do. CJDNS is alpha software meaning it is unstable. The IRC is friendly and willing to help, but we won't teach you Linux just so you can use CJDNS. We want you to test CJDNS.

How to build and configure

Install packages

Install using dust-deploy (especially useful if you maintain cjdns on multiple machines)

Automatically start at boot

Debian/Ubuntu

The cleanest way to start cjdroute on boot time I found is this: add the following lines to your /etc/network/interfaces

auto cjdroute0
iface cjdroute0 inet6 manual
        up     /bin/sh -c "nohup /usr/local/bin/cjdroute < /etc/cjdns/cjdroute.conf &> /dev/null &"
        down   /usr/bin/killall cjdroute

Find peers

We have a list of public nodes open to the public. We recommend adding more than 1 peer.

Maintaining CJDNS

Update CJDNS

Go to the directory where you have your cjdroute file. If you've followed this tutorial before it is probably in /opt/cjdns. A other common place is your home folder ~/cjdns

cd /opt/cjdns

Pull the new changes from github

git pull origin master

Release the magic

sudo ./do

Now kill cjdroute and restart it. (This should be run from the build directory)

sudo killall cjdroute && ./cjdroute < /etc/cjdroute.conf &

Secure you node

Once your node is running, you're now a newly minted IPv6 host. Your operating system may automatically reconfigure network services to use this new address. If this is not what you intend, you should check to see that you are not offering more services then you intended to.

First find your ip address ip addr | egrep 'fc[a-f0-9:]{20,}' -o. Then run nmap. (Not installed by default everywhere)

   nmap -6 -n -r -v -p1-65535 -sT <your-ip-address>

If you see anything open, fix it.

Optional

If you want to use HypeDNS add the nameserver fc5d:baa5:61fc:6ffd:9554:67f0:e290:7535 to the top of the /etc/resolv.conf file.

echo 'nameserver fc5d:baa5:61fc:6ffd:9554:67f0:e290:7535' >> /etc/resolv.conf

You might need to run this in a startup script because some distro's create a new resolv.conf on startup. See HypeDNS and DNS for more info about DNS on Hyperboria

If you want to host something on Hyperboria but don't know what the people want, head on over to the Service Requests page for some inspiration, and pick a project that matches your skill level. Remember, the people on IRC will probably be really helpful for this kind of voluntary stuff, so if you get stuck, ask around in there.

Local Meshnet

To get involved with or start a Meshlocal group you'll need a pair of radios, preferrably ones that are directional. Below are supported radios that can handle the firmware that we'd recommend you to load on them. If your running short of cash & need a radio, look on Project Meshnet's Forums, eBay, Craigslist & wispswap.com for radios & other hardware.


- Any OpenWRT compatible router, List Here.


- Any Ubiquiti Nanostation, including:

  • Nanostation M2
  • Nanostation M5
  • Nanostation 2
  • Nanostation 5
  • Nanostation M2 Loco
  • Nanostation M5 Loco
  • Nanostation 2 Loco
  • Nanostation 5 Loco


- All OpenWRT supported radios & routers, inlcuding:

  • Most of the Linksys WRT54G series
  • A fair number of Dlink, Buffalo, and most ASUS routers
  • Most TP-Link routers, including the TL-MR3020, as used for pirateboxes.

Neccesary Software

Each radio & router needs to be loaded with OpenWRT + cjdns, and then configured to connect to other cjdns nodes.

For Nanostation 2 and 5, and loco 2 and 5 *only*, the images from http://meshnet.jercos.dyndns.org/tor/ will contain cjdns+LuCI preinstalled.

See Also