From 23c2143d694f585adafd5c7d28aa190247a4e1f0 Mon Sep 17 00:00:00 2001 From: "Tristan B. Kildaire" Date: Wed, 17 Feb 2021 20:12:54 +0200 Subject: [PATCH] Add files via upload --- docs/index.md | 46 +++++++++++ docs/ipam.md | 7 ++ docs/logo.png | Bin 0 -> 14520 bytes docs/map.png | Bin 0 -> 38568 bytes docs/peering.md | 204 +++++++++++++++++++++++++++++++++++++++++++++++ docs/peers.md | 4 + docs/services.md | 20 +++++ 7 files changed, 281 insertions(+) create mode 100644 docs/index.md create mode 100644 docs/ipam.md create mode 100644 docs/logo.png create mode 100644 docs/map.png create mode 100644 docs/peering.md create mode 100644 docs/peers.md create mode 100644 docs/services.md diff --git a/docs/index.md b/docs/index.md new file mode 100644 index 0000000..90b67ca --- /dev/null +++ b/docs/index.md @@ -0,0 +1,46 @@ + + +
+ +CRXN stands for **C**ommunity **R**un e**X**pansive **N**etwork. It's a computer network run by the _community for the community_. +We are a dual-stack IP-based network supporting both IPv4 and IPv6. We are focused on having a network that is accessible to all, +reliable in terms of having redundant links and diverse. The first part means that we are welcome to anyone who wants to join, the +second part means that we focus on having a lot of links between adjacent routers such that if one is to fail there exists a fallback +(in the case where the route is only available through said router - if there are more routers then this is mitigated). We also strive +to have diverse links - this means linking over the Internet whether it be clearnet or via an overlay network such as Yggdrasil or CJDNS +or in the best case creating physical links. + +We aim to create a more open Internet available to everyone and a place to learn about IP routing and networking in general. + +We don't use any particular tooling, the only thing that is standard is the IPv4 and IPv6 part. What tunnelling software, physical +mediums or routing daemon you choose to use is up to you - this falls in line with our _open_ ethos. + +--- + +## About the network + +### Ranges + +The subnets that we use so far are the below private ranges. + +* For **IPv4** we are running on the `10.0.0.0/8` range. +* For **IPv6** we are running on the `fd00::/8` range. + +IPv4 note: If we run out we will simply use more private ranges but we will keep out the `192.168.0.0/16` range such that home networks (sane ones) will not have any clashes. + +### The state of the network + +![CRXN babelweb map](map.png) + +The network is currently at a mere ~10 nodes with a few services being run over the network such as Mumble and NFS. The only routing +daemon being used at this moment is babel and for tunnelling we are using fastd to establish VPN connections at an L2 layer between sites. + +In terms of transit we run fastd over clearnet, Yggdrasil and CJDNS. + +You can view the babel part of the network on the [live router map](http://deavmi.assigned.network:4444). + +## Getting started + +### Joining the network + +There is a tutorial (which is done for the most part) [here](peering.md) which will help you get connected onto the inter-network. diff --git a/docs/ipam.md b/docs/ipam.md new file mode 100644 index 0000000..a303aaf --- /dev/null +++ b/docs/ipam.md @@ -0,0 +1,7 @@ +IP Address Management +===================== + +IP Address management or _IPAM_ for short is done all through our Netbox instance. + +* [CRXN Netbox](https://crxn.chrisnew.de/netbox) (login required) +* [View all allocations](https://crxn.chrisnew.de/netbox/ipam/prefixes/) (no login required) \ No newline at end of file diff --git a/docs/logo.png b/docs/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..12707ee1984d5a2246dc0c6783beedbeff0ff6ab GIT binary patch literal 14520 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 DA16s9 literal 0 HcmV?d00001 diff --git a/docs/map.png b/docs/map.png new file mode 100644 index 0000000000000000000000000000000000000000..87b8ec8ffdf9d9b6de3cc41d36894cedfd527c8a GIT binary patch literal 38568 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 RyA=4J3Q1itSK+GP{{vg6OXmOp literal 0 HcmV?d00001 diff --git a/docs/peering.md b/docs/peering.md new file mode 100644 index 0000000..3ac384b --- /dev/null +++ b/docs/peering.md @@ -0,0 +1,204 @@ +# Tutorial + +This document will help you get connected to the CRXN IPv4-IPv6 inter-network. + +## Installing dependencies + +This document assumes that you are using a Linux system (as one should) and a systemd-based system, the latter part is not really a requirement but it just for having things start on system startup. + +The following need to be installed: + +1. `fastd` + * This is the layer 2 tunnelling daemon we use to link up machines essentially providing a virtual ethernet network between the two nodes we want to link. +2. `babeld` + * This is the dynamic mesh routing daemon. Dynamic in the sense it adds and distributes routes for us such that we don't have to do it by hand (i.e. static routing) and mesh in the sense the routing daemons automatically discover each other +3. Optional: `yggdrasil`, `cjdns` + * These are both overlay networks that can be used if clear-net access is not possible. + * We recommend you still use them as they can run without internet access too and redundancy is a goal of CRXN and having a diverse peering setup + +## Setting up a tunnel + +The next step is to setup a tunnel. You will have to contact someone to get the following: + +1. `ip:port` pairing details + * The endpoint of their *fastd* instance +2. `public key` + * You will need their public key which will be used to secure the connection to them such that traffic is encrypted (CRXN traffic and babeld router messages) + +Once we have this information we can begin the setup with the below as the template: + +``` +# The interface that will connect to the virtual ethernet network fastd connects us to +interface ""; + +# The encryption method (don't change this unless you need to) +method "salsa2012+umac"; + +# Bind to and listen for incoming connections on this address and port +bind :; + +# Secret key (you generate this) +secret ""; + +# Setup a peer to allow incoming connections from or initiate a connection too +peer "" +{ + remote "" port ; + key ""; +} + +# On interface rise run +on up " +ifconfig up +ifconfig /32 +"; +``` + +So the above needs to have the following filled in: + +1. `""` + * This is of your choosing and will need to be remembered for later steps +2. `` and `` + * The IP address and port to bind to and listen on for incoming connections from your peer's daemon (if his daemon initiates the connection first) + +Now you must run the following: + +``` +fastd --generate-key +``` + +Then save the *public key* and the *private key*. **Note:** You must give your peer your *public key*. + +3. `""` + * This must be the *private key* you generated earlier + + +Now we need to fill in the peer details of the node you are connecting to: + +1. `""` + * Set this to the name of the peer (can be anything really) +2. `` + * Set this to either `ipv4` or `ipv6` depending of the address being used to connect to the remote peer +3. `""` + * Set this to the remote peer's fastd address +4. `"port` + * Set this to the remote peer's fastd port +5. `""` + * Set this to your peer's public key + +The last thing to configure now is to rise the interface up when fastd starts (as it normally doesn't rise it for you), all occurences of `` here should match the one in the `interface ;` declaration as shown earlier. + +The next thing to fill in is `` - the reason for this is two fold, babel will only run if an interface has an IP assigned to the interface it is running on (it uses this as the next-hop to distribute to remote routers). The second is because we want packets destined to this router (as a host) to be accepted and on Linux that means the destination IP in the packet must match an IP address assigned to any interface, assigning it to this one will do - as they say + +*Hitting two birds with one stone (no pun intended, don't kill your routing daemon twice)* + +### Starting and maintaining the daemon + +You can then start the daemon as follows: + +``` +sudo fastd -c /etc/fastd/path/to/config.conf +``` + +**TODO: Sosytemd-unit** + +--- + +## Configuring the routing daemon + +Babeld will allow your machine to distribute subnets it has directly attached as well as remote ones it has learnt from other babeld nodes - to other babeld nodes on it is directly linked to. This helps build up its routing table to know where to forward packets to (forwarding will be enabled on all interfaces when babeld runs, and disabled when it stops). + +You will want to add the following lines to your `/etc/babeld.conf`: + +``` +# Redistribute all CRXN (10/8) routes +redistribute ip 10.0.0.0/8 ge 8 + +# Redistribute all CRXN (IPv6 - fd00/8) +redistribute ip fd00::/8 ge 8 +``` + +This will redistribute routes from your kernel's routing table that match the subnets described (CRXN IPv4 `10/8` and IPv6 `fd00::/8`) into babel's internal routing table which will then be exported to neighbouring babel routers. Babel will learn any routes that are distributed into it (**TODO**: We could filter here too, with `in`). + +The next line you will add is to not redistribute your own host address as a route (because a subnet being redistributed would catch that), therefore add the following line: + +``` +redistribute local deny +``` + +Idk if this makes shit more statistically acuurate for link quality, but I enabled it: +**TODO** I mean it is not needed + +``` +diversity true +``` + +Now run babeld on the interface we just setup via the *fastd* tunnel (this is where that `` will be used: + +``` +# Send and receive router updates only on +# Babel will enable forwarding on all interfaces (and disable on exit) +interface enable-timestamps true link-quality true +``` + +The `enable-timestamps` enables transferring of timestamps in messagessuch that an RTT (round-trip time) can be calculated for the babel messages + +**TODO:** I guess link quality was to check quality + +### Starting and maintaining the daemon + +You can then start the daemon as follows: + +``` +sudo babeld -g 33123 -c /etc/babeld.conf +``` + +**TODO: Sosytemd-unit** + +--- + +## Configuring the subnet + +Your router is now on the network but we are not yet distributing a route to it or the subnet it will be responsible for (since it is a router after all). + +Choose a subnet not already taken and within the `10/8` range and then set this route in your routing table to forward to the local network via one of your interfaces, such as via ethernet on `eth0`: + +``` +sudo ip route add 10.x.x.x/p proto static dev eth0 +``` + +**TODO:** For the sake of using the router as a host possible set a source hint on the route above + +### Setting up CRXN on your laptop + +Add a network route for your subnet `10.x.x.x/p` with: + +``` +sudo ip addr add 10.x.x.x/p dev eth0 +``` + +And then add a route to the rest of CRXN (`10.0.0.0/8`) via your router (where `` is the IP address of your router chosen earlier): + +``` +sudo ip route add 10.0.0.0/8 dev eth0 via +``` + +### Testing it all + +From your router and laptop try ping `10.5.0.1` or `10.0.0.2` for example with: + +``` +ping 10.5.0.1 +ping 10.0.0.2 +``` + +You should see some pongs come back. + +To see what route your packets are taking with somewhat accuracy run: + +``` +traceroute 10.5.0.1 +traceroute 10.0.0.2 +``` + +You should see some responses coming back from the intermediary routers. diff --git a/docs/peers.md b/docs/peers.md new file mode 100644 index 0000000..074903c --- /dev/null +++ b/docs/peers.md @@ -0,0 +1,4 @@ +Peers +===== + +This aims to be a public directory of all known peers willing to publically accept connections for tunnels. \ No newline at end of file diff --git a/docs/services.md b/docs/services.md new file mode 100644 index 0000000..5a13312 --- /dev/null +++ b/docs/services.md @@ -0,0 +1,20 @@ +Services +======== + +This is a public directory of all known public services made available through the CRXN inter-network. + +## Forums + +* [bruh forum](http://10.6.2.1/bruh) + - This is a 4chan-like imageboard (sans the images part) + - IP and Port: `10.6.2.1:80` +* [crxn forum](http://10.6.2.1/crxn) + - This is the official CRXN forum + - IP and Port: `10.6.2.1:80` + +## VoIP + +* Deavmi's MumbleShack + - Vanilla mumble server + - IP: `10.0.0.2` + - Port: default \ No newline at end of file