Added initial documentation.

This commit is contained in:
Tristan B. Kildaire 2020-05-26 21:42:18 +02:00 committed by GitHub
parent 64eccad367
commit a0d8d9229d
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 273 additions and 0 deletions

117
allocations.asciidoc Normal file
View File

@ -0,0 +1,117 @@
Subnet allocations
==================
Subnet assignments in `10/8` subnet (CRXN inter-network)
== Deavmi's subnet allocations ==
****
*IRC:* _deavmi_ on BonoboNET/Freenode
*E-mail:* _deavmi@disroot.org_
****
=== Subnet (A) ===
****
This is my network services subnet where all my servers for
Git, IRC, sshchat, redmine and more live.
****
*Subnet:* `10.0.0.0`
*Subnet mask/prefix:* `255.255.0.0` or `/16`
*Known devices:*
-------------------------------
10.0.0.1 is my Pi router
10.0.0.4 is my home laptop
-------------------------------
=== Subnet (B) ===
****
This is the subnet for my personal devices.
****
*Subnet:* `10.1.0.0`
*Subnet mask/prefix:* `255.255.0.0` or `/16`
*Known devices:*
------------------------------------------
10.1.0.1 is my Pi router
10.1.0.2 is my Pi personal
10.1.0.3 is my Lockdown.BNET IRC server
10.1.0.4 is my laptop
10.1.0.7 is my desktop
10.1.0.11 is my x86 server
10.1.0.12 is my other x86 server
------------------------------------------
=== Subnet (D) ===
****
This subnet is for personal devices in Stellenbosch (as I go to
university there) along with some network services I run from there
too.
****
*Subnet:* `10.4.0.0`
*Subnet mask/prefix:* `255.255.0.0` or `/16`
*Known devices:*
---------------------------------
10.4.0.1 is my Pi router
10.4.0.2 is my University Desktop
10.4.0.3 is my University Laptop
---------------------------------
== Skippy's subnet allocations ==
****
*IRC:* _skippy_ on BonoboNET, _ohmyskippy_ on Freenode
****
=== Subnet (A) ===
****
No description
****
*Subnet:* `10.2.0.0`
*Subnet mask/prefix:* `255.255.0.0` or `/16`
*Known devices:*
---------------
10.2.0.1 router
10.2.0.2 laptop
---------------
== Chris's subnet allocations ==
****
*IRC:* _chris_ on BonoboNET
****
=== Subnet (A) ===
****
No description
****
*Subnet:* `10.5.0.1`
*Subnet mask/prefix:* `255.255.255.255` or `/32`
*Known devices:*
-------------------------------
10.5.0.1 Router for IPv6 NETMAP-NAT
-------------------------------

94
crxn.asciidoc Normal file
View File

@ -0,0 +1,94 @@
CRXN
====
== What is CRXN? ==
CRXN stands for *Community Run eXperimental Network* and is a computer network created by Tristan B. Kildaire during April 2020 to experiment with
networking and have fun building a large scaled network with like-minded people. The network is an IP-only network running, so far, only IPv4.
Other than creating a network to learn about networking it is also a fun way to connect distant network services that would otherwise be impossible
through NAT or simply cumbersome with NAT in the real world and then again also because of the lack of consumer IPv6 in the real world (or maybe just
in South Africa.... or Worcester).
However, a sticking point for me is the independance, free of some corporation telling me how to run and setup my
network is admirable to me atleast and I think many can identify with such a project and their want to join it on the basis that _they_ can use and
setup their part of the network how they want - *more freedom!*
That is at a surface level what CRXN is, the sections below will get into the more technical details for those who are interested for learning more
or who want to join the network.
=== Links ===
1. link:allocations.html[Subnet allocations]
* Allocations of subnets to people and their uses
2. link:network.html[Network services]
* List of publically available network services on CRXN
3. link:things.html[Other things]
* Any interesting exprimental things being done with or on CRXN
== Getting started ==
The next sections describe the workings of CRXN on a technical level and administrative level.
=== Network specification and administration ===
The address space being used is the `10.0.0.0/8` block which is reserved for private use and provides us with more than enough IP addresses for the network
we are building.
[WARNING]
There is not necessarily an end of the world situation if you are already using a portion of this subnet, just make sure the subnets you want to route to
on CRXN and not your other network are not conflicting in what you want to be able to access on both network or come up with some route switching-out
system that you personally can make use of to switch between networks.
The assignment of subnets is adminstrated by me, _deavmi_, in the sense that I want to know how the network topology looks at all times with regards to
allocating subnets out of `10.x.0.0/16` blocks as that is the standard distribution size. However, when further subnetting your own `/16` that is entirely
up to you as they will be reachable via the transitive nature of the `/16` consuming any smaller subnets within. *However*, it would still *be nice* to know
how you have further subnetted the network for the sake of building a better view of the network.
The only reason I care about the `/16`'s is due to needing to know what routes to install on my main router and perhaps those who also have backbone routers
too.
=== Peering ===
This section goes about explaining how to join the network using several different tchnologies out there. Regardless of which method you decide to use
you need to have a subnet allocated, see the *subnet allocation* section for information regarding how to get a subnet assigned.
As for how you do your peerings, I couldn't care less. As long as I have some interface I can dump a packet on and it ends up at another host or router
(for further routing) then it is fine - the packets just need to _get to their eventual destination_.
==== Physical peering ====
Haha! That's a good joke, what do I look like to you? A bank? I can't afford to lay cables, wait but I do have a huge antenna in my garage that does 2.4GHz
so that could be used but I have nobody to peer with where I live so that's a little bit hard.
But if you're in anyone's area and want to peer with them then you are going to have to get a physical-layer link up along with the associated link-layer
link up and then decide how you're going to do IPv4 ontop of that, as long as it works then it is fine. There are so many ways to setup these types of things.
==== Yggdrasil-based crypto-key routing ====
Yggdrasil is a experimental network that uses a globally-agreed upon spanning tree for moving data on it (IPv6 is just an application of it) and also
"quick links" if the peer wanting to send to has a direct link. Other than the mentioned IPv6 support that runs ontop of Yggdrasil as an exmaple use
case to showcase the network technology, another application is the mapping of subnets to the Yggdrasil IDs on the network to transfer IPv6 *or* IPv4
(which applies here).
This method let's one map a subnet via CIDR notation to an Yggdrasil ID such that any IPv4 packet that is put on the `tun0` (or whatever your Yggdrasil
tunnel interface is) and which matches the allowed source-IPs CIDR will then pop out the `tun0` interface on the other end (of the before-mapped Yggdrasil
node matching that Yggdrasil ID). Then from here standard packet acceptance applies, either gets accepted with a matching address on any interface
or dropped (unless forwarding is enabled and in that case can be further forwarded by any methods that are setup).
This is my favourite method for peering as I know it well because it is very simple and it just works. One can say also that, other than the ease of
the configuration of Yggdrasil's CKR system, peering your Yggdrasil node with a piblic peer to get free access to this transit network is a big-up
as compared to using something like Wireguard or OpenVPN which you will have to host or connect to a friend hosting it which requires credentials
and all.
==== Other methods ====
As I said, if it works, then use it. I am just an Yggdrasil shill because of the benefits mentioned above (which I will reiterate):
1. Free access to a transit network
2. Easily configured tunneling
=== Subnet assignnment ===
If you want to get assigned a subnet then the easiest way is joining the `#crxn` channel on BonoboNET and asking `deavmi`. From there I can assign you
a subnet and then I or someone else can sort out peering with you and then we can all update our routing tables.

50
network.asciidoc Normal file
View File

@ -0,0 +1,50 @@
Network services
================
This page aims at being a one-stop shop for finding available network
services for public use on the CRXN inter-network.
== IRC-related services ==
=== BonoboNET WebIRC ===
An instance of the KiwiIRC web IRC client is available
for users wanting to connect to the BonoboNET IRC
network.
*HTTP Address:* link:http://10.0.0.5:81[]
=== BonoboNET IRC network ===
*BonoboNET* is an IRC network that is available on CRXN,
amongst other networks (cjdns, yggdrasil, clear-net).
So far there are only two BNET nodes available over CRXN:
1. *lockdown.bnet:* `irc://10.1.0.3:6667`
2. *shitpoes.bnet:* `irc://10.1.0.12:6667`
More information regarding BonoboNET can be found
link:http://10.1.0.2/projects/bonobonet[here].
== SSHChat ==
SSHChat is a custom ssh server that provides a chat interface rather
than the default, normally a shell, to the user. Anything sent via
this interface appears on the screens of the other users' chat interfaces
and you end up with a chat program that requires only ssh to be installed!
=== Deavmi's sshchat server ===
Deavmi's sshchat server can be accessed via the given parameters:
* *Server address:* `10.0.0.5`
* *Server port:* `2227`
Use it like so:
****
ssh <username>@10.0.0.5 -p 2227
****
Where `<username>` is your screen name.

12
things.asciidoc Normal file
View File

@ -0,0 +1,12 @@
Other things
============
Any inventive uses of CRXN.
=== Chris's IPv6 NETMAP ===
Chris has setup a netmapping of IPv6 addresses to the CRXN IPv4 `10.0.0.0/8` range. What this means is that
any IPv6 packets sent to the IPv6 addresses in the range he has setup will have their packets transformed into
IPv4 packets with a source IP of `10.5.0.1` and a destination determined by a mapping of `(IPv6 clear-net) -> (IPv4 crxn)`.
This means CRXN can actually be accessed over the clear-net as well!