Giter VIP home page Giter VIP logo

docs's Introduction

Hyperboria/docs

What is Hyperboria?

Hyperboria is test network built of cjdns nodes.

What is cjdns?

Cjdns is an experimental, cryptographic mesh networking suite.

What is notable about cjdns? Why should I use it?

Cjdns builds an end-to-end encrypted IPv6 mesh network that utilizes the fc00::/8 address space.

Encryption

Cjdns provides an encrypted tunnel which utilizes a private/public keypair to encrypt everything that passes through it with the SALSA20 stream cypher, which affords the user perfect forward secrecy.

Address Allocation

The ipv6 assigned to the TUN interface is composed of the first 16 bytes of the SHA512 hash of the SHA512 hash of your public key. Keypairs are generated via a brute force method until a corresponding address is found with a starting byte FC. The FC00::/8 address space has been allocated as a Unique Local Address space, and so these addresses should not conflict with ICANN assigned IPv6 addresses or any other conventional internet operation.

Hybrid topology

Cjdns was designed to be used with a friend of a friend topology. It builds an overlay network which traverses NAT (Network Address Translation), exposing all ports of every node to every other node within the network. Those who are used to relying on NAT to protect their devices may find this troublesome.

At one point it was expected that each person who peered would do so with only trusted friends. You need not trust relaying nodes with the confidentiality or integrity of your packets, however, if you wish to restrict access to certain services, it is your responsibility to implement effective access control rules.

Links between nodes may be established over deliberate UDP links across the internet, or over deliberate or automatic connections across Ethernet, Wireless access points, Ad-hoc connections, or various system-specific transmission and addressing protocols.

Cryptographic verification and routing

Establishing a link between two nodes includes a cryptographic authorization process, after which other nodes within the network can establish a connection with the new node.

Due to the relationship between each node's public key and its ipv6, and the fact that this relationship is verified upon connecting to a node, a user can be sure that if it connects to an IPv6 address and receives a response then the node that responded possesses the requisite private key to decrypt the response.

If you are able to connect at all over cjdns, then you can be quite sure that the node you connected to possesses the private key that corresponds to the IPv6.

How can I get involved?

If you are totally new to cjdns, you'll want to start by installing it somewhere and familiarizing yourself with how it works. Take notes of anything that you find difficult, unintuitive, or poorly documented, and share your knowledge so the next person who installs cjdns after reading the documentation has an easier time.

Also, read our contributing document for notes on our policies for accepting contributions.

docs's People

Contributors

adamnovak avatar alexander-bauer avatar ansuz avatar arceliar avatar bringhurst avatar cjdelisle avatar clehner avatar cschmittiey avatar da2ce7 avatar dangowrt avatar hartzler avatar inhies avatar interfect avatar ishift avatar jercos avatar kpcyrd avatar kubuxu avatar lukevers avatar madafoo avatar maddiem4 avatar marcuswanner avatar mbsmith avatar norlin avatar pdc303 avatar prurigro avatar sdgathman avatar shnatsel avatar stbuehler avatar thefinn93 avatar wfleurant avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

docs's Issues

notes directory shouldn't exist

At the time it was created it was just a place to dump information that didn't have a home. It's about time we got it sorted out.

document admin API functions

scripts that utilize the admin interface for configuration or runtime inspection are critical for debugging cjdns effectively, yet knowledge of their use seems to be spread primarily by word of mouth.

Let's make their existence more prominent.

bash: syntax error near unexpected token `umask'

I'm trying to test CJDNS and see what is possible with it. But I recently started using another OS and it doesn't work.

Error Log:

@LINUX:/opt/cjdns$ sudo (umask 077 && ./cjdroute --genconf > /etc/cjdroute.conf)
bash: syntax error near unexpected token `umask'
@LINUX:/opt/cjdns$ cp contrib/systemd/cjdns.service /etc/systemd/system/
cp: cannot create regular file '/etc/systemd/system/cjdns.service': Permission denied
@LINUX:/opt/cjdns$ sudo cp contrib/systemd/cjdns.service /etc/systemd/system/
@LINUX:/opt/cjdns$ systemctl enable cjdns
Failed to execute operation: No such file or directory
@LINUX:/opt/cjdns$ systemctl start cjdns
@LINUX:/opt/cjdns$ 

Installation Steps: https://docs.meshwith.me/install/debian-jessie.html

Changes: I had to make some commands root/sudo

OS: Elementary OS

we need a 'quick-start' document

the front page should link to it from a conspicuous location. It should contain the following details:

  1. a list of system-specific install guides for various linux distros (including android and *WRT), OSX/BSDs, and Windows.
  2. A section or a link to another document on the syntax and semantics of cjdroute.conf
  3. An explanation of current peering procedures:
    • autopeering (generic)
    • Public peers (for hyperboria)
    • and manual UDP peering, with explanations for the difference between IPv4 and IPv6 configuration blocks.

location in nodeinfo.json

I'm going to add an object to the spec, and label it as an experimental part of the format. anyone who disagrees should voice their opinion in this thread, and we'll revise it as necessary.

Troubleshooting doc for common issues

This is enough to get us started:

  • specify how to ask for help on IRC
    • what OS/Distro are you using?
    • what installation instructions did you follow?
      • provide links or we can't help
    • don't post your privatekey!
    • what commands did you run (exactly)
    • what output leads you to think it didn't work?
  • list common issues
    • you used an unsupported installation method
      • outdated .debs or similar
    • you broke your config

New Fedora users confused by fedora.md

So fedora.md was reverted to instructions for building cjdns yourself, which is fine, but it should at least mention that cjdns is a system package in Fedora. New users hear about hyperboria, come here and try to follow the instructions (generally get stuck at the "edit cjdns.service" step), and give up.

If they aren't specifically setting out to build it themselves, the docs here are unhelpful. I suggest a brief mention at the top to that effect:

If you are not intending to build cjdns yourself, you are probably better off installing the Fedora system version. "dnf install cjdns cjdns-selinux cjdns-tools" and see README_Fedora.md in /usr/share/docs/cjdns

If you do want to build it yourself, proceed.

Document cjdroute.conf

Define all attributes used within the file, link to a JSON spec, and specify where cjdroute.conf differs from conventional JSON.

Add Debian Package

Feature: Add Debian Package. Preferably, in the official Debian Repo.
Why?: It currently takes a lot of work to get CJDNS up and running.
I think creating a "one-click-install" would enable access to many more users.

I wasn't sure if this was the place for feature requests, if this is incorrect please tell me.

Link changed.

The original content on this site: http://beattheblockade.org/ as linked in the docs. No longer points to where I believe it was intended to point. Just a heads up the site is NSFW, so please don't click on it with children around. - I had to do a quick "whoops!" "Panic close tabs.."

Reorganize docs

Users should be able to start at the front page with zero knowledge, and proceed sequentially, ending with enough knowledge to install, configure, and run cjdroute without assistance.

better strategy for handling translations

it's hard to find what you're looking for when a single file has a number of translation files listed in a flat namespace.

I propose we come up with a nested structure that makes it easier to look only at the files for a single language.

Update Documentation Software

The current documentation software looks very old. It looks 'scary' for new users and 'troubling'. I recommend switching to a more modern documentation software. Some alternatives that people have recommended to me include Read the Docs, GitBook, MkDocs, BananaDance, and MediaWiki. Our goal should be to create the easiest to use software, starting with the documentation.

Dead Links

I'm going through all the links in this repo and checking if they work with https (c2d7107). In the mean time i've been discovering number of broken links. I'm listing them here for future reference:

File Line URL Notes Fixed In
Whitepaper.md 916 http://www.verisigninc.com/assets/whitepaper-ddos-threat-forrester.pdf Redirects to some marketing page
tunnel.md 169 https://code.google.com/p/npd6/downloads/list Project has moved to github a079fdd
tunnel.md 172 http://npd6.googlecode.com/files/npd6-1.0.0.tar.gz Project has moved to github so this link will break when Google Code shuts down
nodes/media.md 27 http://www.sync-blog.com/sync/2012/08/would-a-censorship-free-internet-be-a-good-idea.html Returns an empty document
notes/docs.md 30 http://couch.syrinxist.org:9001/p/osx NXDOMAIN
notes/docs.md 35 http://couch.syrinxist.org:9001/p/howCjdnsWorks NXDOMAIN
notes/dns.md 11 http://couch.syrinxist.org:9001/p/docs NXDOMAIN
notes/dns.md 11 http://couch.syrinxist.org:9001/p/howCjdnsWorks NXDOMAIN
notes/dns.md 11 http://couch.syrinxist.org/faq NXDOMAIN
notes/dns.md 39 http://couch.syrinxist.org/dns NXDOMAIN
notes/dns.md 63 http://dot-p2p.org NXDOMAIN
notes/dns.md 65 http://couch.syrinxist.org/share/dns-idea.txt NXDOMAIN
notes/dns.md 117 http://couch.syrinxist.org/dns NXDOMAIN
notes/peering.md 95 http://beattheblockade.org/ Domain is owned by squatter
nat-gateway.md 44 http://ftp.us.debian.org/debian/pool/main/libn/libnfnetlink/libnfnetlink0_1.0.1-2_armhf.deb 404
nat-gateway.md 47 http://mirrors.kernel.org/debian/pool/main/i/iptables/libxtables10_1.4.18-1_armhf.deb 404
nate-gateway.md 50 http://mirrors.kernel.org/debian/pool/main/i/iptables/iptables_1.4.18-1_armhf.deb 404
notes/arc-workings.md 71 http://ansuz.syrinxist.org/share/ArceliarAMA/vanitygen.sh.txt NXDOMAIN
notes/arc-workings.md 81 http://ansuz.syrinxist.org/faq#architecture NXDOMAIN
notes/arc-workings.md 122 http://couch.syrinxist.org/share/fuck-yeah-l.png NXDOMAIN - but it's part of an IRC log so maybe that's okay
notes/links.md 12 http://oti.newamerica.net/blogposts/2013/case_study_red_hook_initiative_wifi_tidepools-78575 NXDOMAIN
notes/wanted.md 24 http://lars.meshnet.berlin/view/welcome-visitors/view/80211s-instead-of-adhoc 404

identify our target audience

who are we trying to reach? write for them.

At this point, I'm thinking mostly about alpha testers, but we shouldn't make anything to inaccessable.

Proposal: Using Blockchain on hyperboria network.

I mentioned this in irc.fc00.io chat a few days ago... Instead of developers fiddling with cjdns and other yit yat, I proposed a smooth transition and a real practical use of the Hyperboria network. By installing blockchains and Cryptocurrencies, (big one was the Ethereum Network + ipfs), we can run all the programs, tokens, digital assets on hyperboria. Peers automatically connect through P2P networking in cjdns. This would allow hyperboria to function as a seamless integration mesh network, and the blockchain to be more resistant to censorship. For example, users running solely on cjdns and hyperboria could still make digital transactions. Those using any one of the thousands of Dapps on the Ethereum Blockchain.

I really do see potential for blockchain, as it is now an industry worth over $157.7 Billion and with $5B in transactions every day. If hyperboria is to make a stand in the world as cjd and /r/darknetplan imagined, then it best start playing around with blockchain.

How can you help?
Please, run Major Cryptocurrencies such as Geth Ethereum, bitcoind, and other nodes along with the official go-lang implementation of the ipfs daemon along with anything else that will tickle your fancy. There are so many.... Do which ones you like. If you have mining rigs for any currency, please hook them up to hyperboria. Thanks.

remove references to gitboria.com

As far as I know gitboria has been down for a while, and reviving it isn't a leading priority.

While we don't have to remove all traces of it, we probably shouldn't list it as the canonical repo that users should push to if it isn't accessible.

fix naming schemes

Files have been named according to quite a few schemes:

  • tipsAndTricks.md
  • shorewall_and_vpn_gateway_howto.md
  • network-services.md

I'm not terribly attached to any of them, but I think they should match.

Once we decide, contributing.md should note which one we expect for pull requests.

.html or .md

Many links seem to use .html (which works on the website) and others use .md (which works on github).

I like that it works on github, which makes me wonder if the compiling script running somewhere should be changed to generate .md files instead of .html and have the server configured to serve them as html. Another option would be just redirecting back to github and only display it here.

Thoughts?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.