Merge pull request 'update site' (#6) from mark22k/docs:master into master

Reviewed-on: https://codeberg.org/CRXN/docs/pulls/6
This commit is contained in:
Marek Küthe 2022-12-20 15:51:02 +00:00
commit 36d659433a
44 changed files with 583 additions and 260 deletions

71
.gitignore vendored Normal file
View File

@ -0,0 +1,71 @@
# Byte-compiled / optimized / DLL files
__pycache__/
*.py[cod]
*$py.class
# C extensions
*.so
# Distribution / packaging
.Python
env/
build/
develop-eggs/
dist/
downloads/
eggs/
.eggs/
lib/
lib64/
node_modules/
parts/
sdist/
var/
package*.json
*.egg-info/
.installed.cfg
*.egg
# PyInstaller
# Usually these files are written by a python script from a template
# before PyInstaller builds the exe, so as to inject date/other infos into it.
*.manifest
*.spec
# Installer logs
pip-log.txt
pip-delete-this-directory.txt
# Unit test / coverage reports
htmlcov/
.tox/
.coverage
.coverage.*
.cache
nosetests.xml
coverage.xml
*,cover
.hypothesis/
# Translations
*.mo
# Scrapy stuff:
.scrapy
# PyBuilder
target/
# IPython Notebook
.ipynb_checkpoints
# pyenv
.python-version
# virtualenv
venv/
ENV/
# MkDocs documentation
site*/

126
docs/additional/dns.md Normal file
View File

@ -0,0 +1,126 @@
# Servers
HINT: This is currently a work in progress by @mark22k
## Rekursiv
| DNS | IP address |
| --- | --- |
| recur1.bandura.crxn | fd92:58b6:2b2::5353 |
## Authoritiv
# Resolve CRXN domains only
Advantage:
- Very simple configuration
Disadvantage:
- No more access to Clearnet domains
- Dependence on one server
You can enter a recursive CRXN server as your DNS server in the operating system.
The configuration of this differs depending on the operating system. For example, in Debian without NetworkManager, you can add the following to `/etc/resolv.conf`:
```
nameserver fd92:58b6:2b2::5353
```
# Run your own forwarder
Advantage:
- Simple configuration
Disadvantage:
- Dependence on one server
With this method, you run a small DNS server of your own, which receives and forwards requests. This is suitable for one computer or very small networks.
There are several software you can use for this.
## Coredns
This guide is for Debian based systems.
First you need to download Coredns. You can find the software at https://coredns.io/. As a download package you get a compressed file. Extract it and make the file `coredns` executable and copy it into the directory `/usr/local/bin`.
```
$tar xvf coredns_1.10.0_linux_amd64.tgz
$chmod +x coredns
$sudo cp coredns /usr/local/bin/
```
To start Coredns automatically you can create a Systemd unit:
```
$ editor /etc/systemd/system/coredns.service
```
Paste the following:
```
[Unit]
Description=CoreDNS DNS server
Documentation=https://coredns.io/
After=network.target
After=alfis.service
After=meshnamed.service
[Service]
PermissionsStartOnly=true
LimitNOFILE=1048576
LimitNPROC=512
CapabilityBoundingSet=CAP_NET_BIND_SERVICE
AmbientCapabilities=CAP_NET_BIND_SERVICE
NoNewPrivileges=true
User=coredns
ExecStart=/usr/local/bin/coredns -conf=/etc/coredns/Corefile
ExecReload=/bin/kill -SIGUSR1 $MAINPID
Restart=on-failure
[Install]
WantedBy=multi-user.target
```
After that reload systemd:
```
$sudo systemctl daemon-reload
```
To isolate Coredns, you create a new user:
```
$sudo adduser --home /etc/coredns/ --disabled-password --disabled-login coredns
```
After that you can create and edit the Coredns configuration file `Corefile`:
```
editor /etc/coredns/Corefile
```
Paste the following:
```
crxn., d.f.ip6.arpa. {
loop
bind 127.0.0.1 ::1
forward . fd92:58b6:2b2::5353
}
```
Replace `fd92:58b6:2b2::5353` with your preferred recursive server.
With `bind 127.0.0.1 ::1` you bind Coredns to your local machine only, so no one else can access it. If you want to create a network forwarder, you have to remove this line. If you want to restrict the forwarder access only to a specific network, you can use the [ACL Plugin](https://coredns.io/plugins/acl/).
To resolve Clearnet domains, insert the following:
```
. {
loop
bind 127.0.0.1 ::1
forward . tls://1.1.1.1 tls://1.0.0.1 tls://2606:4700:4700::1111 tls://2606:4700:4700::1001 {
tls_servername 1dot1dot1dot1.cloudflare-dns.com
}
}
```

6
docs/additional/index.md Normal file
View File

@ -0,0 +1,6 @@
# Additional
- [DNS](dns)
- [DN42 interconnection](dn42_interconnection)
- [OTG](otg)

View File

@ -5,4 +5,4 @@ CRXN _On-the-go_ are a collection of services run by a few people on CRXN that h
So far we have two people offering such services:
1. [Deavmi's OTG](deavmi.md)
1. [Deavmi's OTG](deavmi)

124
docs/dns/home.md Normal file
View File

@ -0,0 +1,124 @@
# Servers
## Rekursiv
| DNS | IP address |
| --- | --- |
| recur1.bandura.crxn | fd92:58b6:2b2::5353 |
## Authoritiv
# Resolve CRXN domains only
Advantage:
- Very simple configuration
Disadvantage:
- No more access to Clearnet domains
- Dependence on one server
You can enter a recursive CRXN server as your DNS server in the operating system.
The configuration of this differs depending on the operating system. For example, in Debian without NetworkManager, you can add the following to `/etc/resolv.conf`:
```
nameserver fd92:58b6:2b2::5353
```
# Run your own forwarder
Advantage:
- Simple configuration
Disadvantage:
- Dependence on one server
With this method, you run a small DNS server of your own, which receives and forwards requests. This is suitable for one computer or very small networks.
There are several software you can use for this.
## Coredns
This guide is for Debian based systems.
First you need to download Coredns. You can find the software at https://coredns.io/. As a download package you get a compressed file. Extract it and make the file `coredns` executable and copy it into the directory `/usr/local/bin`.
```
$tar xvf coredns_1.10.0_linux_amd64.tgz
$chmod +x coredns
$sudo cp coredns /usr/local/bin/
```
To start Coredns automatically you can create a Systemd unit:
```
$ editor /etc/systemd/system/coredns.service
```
Paste the following:
```
[Unit]
Description=CoreDNS DNS server
Documentation=https://coredns.io/
After=network.target
After=alfis.service
After=meshnamed.service
[Service]
PermissionsStartOnly=true
LimitNOFILE=1048576
LimitNPROC=512
CapabilityBoundingSet=CAP_NET_BIND_SERVICE
AmbientCapabilities=CAP_NET_BIND_SERVICE
NoNewPrivileges=true
User=coredns
ExecStart=/usr/local/bin/coredns -conf=/etc/coredns/Corefile
ExecReload=/bin/kill -SIGUSR1 $MAINPID
Restart=on-failure
[Install]
WantedBy=multi-user.target
```
After that reload systemd:
```
$sudo systemctl daemon-reload
```
To isolate Coredns, you create a new user:
```
$sudo adduser --home /etc/coredns/ --disabled-password --disabled-login coredns
```
After that you can create and edit the Coredns configuration file `Corefile`:
```
editor /etc/coredns/Corefile
```
Paste the following:
```
crxn., d.f.ip6.arpa. {
loop
bind 127.0.0.1 ::1
forward . fd92:58b6:2b2::5353
}
```
Replace `fd92:58b6:2b2::5353` with your preferred recursive server.
With `bind 127.0.0.1 ::1` you bind Coredns to your local machine only, so no one else can access it. If you want to create a network forwarder, you have to remove this line. If you want to restrict the forwarder access only to a specific network, you can use the [ACL Plugin](https://coredns.io/plugins/acl/).
To resolve Clearnet domains, insert the following:
```
. {
loop
bind 127.0.0.1 ::1
forward . tls://1.1.1.1 tls://1.0.0.1 tls://2606:4700:4700::1111 tls://2606:4700:4700::1001 {
tls_servername 1dot1dot1dot1.cloudflare-dns.com
}
}
```

124
docs/dns/server.md Normal file
View File

@ -0,0 +1,124 @@
# Servers
## Rekursiv
| DNS | IP address |
| --- | --- |
| recur1.bandura.crxn | fd92:58b6:2b2::5353 |
## Authoritiv
# Resolve CRXN domains only
Advantage:
- Very simple configuration
Disadvantage:
- No more access to Clearnet domains
- Dependence on one server
You can enter a recursive CRXN server as your DNS server in the operating system.
The configuration of this differs depending on the operating system. For example, in Debian without NetworkManager, you can add the following to `/etc/resolv.conf`:
```
nameserver fd92:58b6:2b2::5353
```
# Run your own forwarder
Advantage:
- Simple configuration
Disadvantage:
- Dependence on one server
With this method, you run a small DNS server of your own, which receives and forwards requests. This is suitable for one computer or very small networks.
There are several software you can use for this.
## Coredns
This guide is for Debian based systems.
First you need to download Coredns. You can find the software at https://coredns.io/. As a download package you get a compressed file. Extract it and make the file `coredns` executable and copy it into the directory `/usr/local/bin`.
```
$tar xvf coredns_1.10.0_linux_amd64.tgz
$chmod +x coredns
$sudo cp coredns /usr/local/bin/
```
To start Coredns automatically you can create a Systemd unit:
```
$ editor /etc/systemd/system/coredns.service
```
Paste the following:
```
[Unit]
Description=CoreDNS DNS server
Documentation=https://coredns.io/
After=network.target
After=alfis.service
After=meshnamed.service
[Service]
PermissionsStartOnly=true
LimitNOFILE=1048576
LimitNPROC=512
CapabilityBoundingSet=CAP_NET_BIND_SERVICE
AmbientCapabilities=CAP_NET_BIND_SERVICE
NoNewPrivileges=true
User=coredns
ExecStart=/usr/local/bin/coredns -conf=/etc/coredns/Corefile
ExecReload=/bin/kill -SIGUSR1 $MAINPID
Restart=on-failure
[Install]
WantedBy=multi-user.target
```
After that reload systemd:
```
$sudo systemctl daemon-reload
```
To isolate Coredns, you create a new user:
```
$sudo adduser --home /etc/coredns/ --disabled-password --disabled-login coredns
```
After that you can create and edit the Coredns configuration file `Corefile`:
```
editor /etc/coredns/Corefile
```
Paste the following:
```
crxn., d.f.ip6.arpa. {
loop
bind 127.0.0.1 ::1
forward . fd92:58b6:2b2::5353
}
```
Replace `fd92:58b6:2b2::5353` with your preferred recursive server.
With `bind 127.0.0.1 ::1` you bind Coredns to your local machine only, so no one else can access it. If you want to create a network forwarder, you have to remove this line. If you want to restrict the forwarder access only to a specific network, you can use the [ACL Plugin](https://coredns.io/plugins/acl/).
To resolve Clearnet domains, insert the following:
```
. {
loop
bind 127.0.0.1 ::1
forward . tls://1.1.1.1 tls://1.0.0.1 tls://2606:4700:4700::1111 tls://2606:4700:4700::1001 {
tls_servername 1dot1dot1dot1.cloudflare-dns.com
}
}
```

16
docs/extra.css Normal file
View File

@ -0,0 +1,16 @@
@charset "UTF-8";
.floating_right {
float: right;
margin-left: 20px;
width: 30%;
max-height: 30%;
}
.center {
text-align: center;
}
.crxn_logo {
width: 300px;
}

View File

@ -1,5 +1,4 @@
Getting started
===============
# Getting started
Firstly we'd like to say that we're glad you'd like to join our network and
greater community! This document will provide you with the directions you
@ -11,24 +10,24 @@ Below you can follow the steps one-by-one to get yourself familiar with our
practices and inner-workings and by the end you should have all the information
and configuration details needed to get connected!
1. [Rules](rules.md)
1. [Rules](rules)
* We have **few** but **strict** rules nonetheless
* Zero-tolerance for breaking them
2. [Requirements](requirements.md)
3. Registration
* [Adding your prefix to EntityDB](registration/entitydb.md)
2. [Requirements](requirements)
3. [Registration](registration)
4. Setting up routing
1. [Forwarding](routing/bird/forwarding.md)
2. [Setting up Bird](routing/bird/bird.md)
1. [Forwarding](../routing/forwarding)
2. [Setting up Bird](../routing/bird)
5. Tunneling
* [Fastd tunneling](tunneling/fastd.md)
* [Fastd tunneling](../tunneling/fastd)
* [WireGuard tunneling](../tunneling/wireguard)
6. Setting up your home network
* Configuring your hosts
1. Automatically with SLAAC and radv
1. [Setting up radv (router)](radv/index.md)
2. [Setting up SLAAC (hosts)](slaac/slaac.md)
* [CRXN DNS](dns/dns.md)
1. [Setting up radv (router)](../home_network/radv)
2. [Setting up SLAAC (hosts)](../home_network/slaac)
* [DNS](../home_network/dns)
## What's next?
Once you're connected there are various things you can do on the network, take a look at [some of he things](services/) you can do.
Once you're connected there are various things you can do on the network, take a look at [some of the things](../services/) you can do.

View File

@ -1,5 +1,4 @@
Prefix allocation and registration
==================================
# Prefix allocation and registration
To simply forward IPv6 traffic on CRXN one only needs an IPv6 link-local address which is always guaranteed to be assigned (most of the time), however normally people join CRXN so that they can _also_ host services (and access others) on the inter-network. Therefore, one needs to allocate a prefix and register it to be able to make use of the network in such a manner.
@ -15,4 +14,4 @@ You can generate your ULA you would like to use for CRXN using a tool such as [U
Once you have your prefix generated you then are required to register the prefix. This entails adding your prefix to a database known as _EntityDB_ which holds all such entries. This is done in order to ensure there are no clashes with addresses and also doubles as a source of truth in terms of what networks _should_ be available on CRXN along with some information about available services.
To register your prefix on EntityDB please visit the repository [here](https://codeberg.org/CRXN/entitydb), fork the repository, then follow the [`README.md`](https://codeberg.org/CRXN/entitydb/src/branch/master/README.md) on how to format your entry, create a pull request and wait for approval from a network administrator. Only then will you be allowed to continue with this tutorial.
To register your prefix on EntityDB please visit the repository [here](https://codeberg.org/CRXN/entitydb), fork the repository, then follow the [`README.md`](https://codeberg.org/CRXN/entitydb/src/branch/master/README.md) on how to format your entry, create a pull request and wait for approval from a network administrator. Only then will you be allowed to continue with this tutorial.

View File

@ -31,4 +31,4 @@ We really don't want the scum of internet degeneracy on here (see first subpoint
You break the rules, you're going to get removed. We don't take shit here.
**You will be reported to the authorities**
**You will be reported to the authorities**

3
docs/home_network/dns.md Normal file
View File

@ -0,0 +1,3 @@
# DNS
TODO: Add documentation @mark22k

View File

@ -0,0 +1,6 @@
# Setting up your home network
- [Setting up radv (router)](radv)
- [Setting up SLAAC (hosts)](slaac)
- [DNS](dns)

View File

@ -9,36 +9,36 @@ Configuring your hosts for automatic IP network and address assignment, DNS and
For NetworkManager-based systems do the following. Open up `nm-connection-editor` and you should have a screen appear like this:
![](nm-connection-editor.png)
![](../img/slaac/nm-connection-editor.png)
Then double click on the wifi or ethernet connection you have active of which connects you to the same LAN as your router and you should see a window like this popup:
![](nm-connection-window.png)
![](../img/slaac/nm-connection-window.png)
Then go to the `IPv6` tab and you should see this:
![](ipv6-nm-connection.png)
![](../img/slaac/ipv6-nm-connection.png)
Now make sure that this part is set to `Automatic`:
![](address_acquisition_automatic.png)
![](../img/slaac/address_acquisition_automatic.png)
And then for the bottom two parts you can choose whatever option you want in these dropdowns:
![](whatever_you_want.png)
![](../img/slaac/whatever_you_want.png)
Once you have configured that, then hit save and close all those windows:
![](save_connection.png)
![](../img/slaac/save_connection.png)
What you want to do now is to open `nmtui` (in your terminal) and reactivate that connection, first go to _Activate a connection_:
![](nmtui_main_menu.png)
![](../img/slaac/nmtui_main_menu.png)
Now reactivate the connection. You can do this by deactivating it and activating it again (unplugging and replugging won't reactivate it - it doesn't reload the profile).
![](connection_reactivate.png)
![](../img/slaac/connection_reactivate.png)
---
And that is it, now you should be connected to CRXN on your laptop via your router.
And that is it, now you should be connected to CRXN on your laptop via your router.

View File

Before

Width:  |  Height:  |  Size: 14 KiB

After

Width:  |  Height:  |  Size: 14 KiB

View File

Before

Width:  |  Height:  |  Size: 38 KiB

After

Width:  |  Height:  |  Size: 38 KiB

View File

Before

Width:  |  Height:  |  Size: 31 KiB

After

Width:  |  Height:  |  Size: 31 KiB

View File

Before

Width:  |  Height:  |  Size: 12 KiB

After

Width:  |  Height:  |  Size: 12 KiB

View File

Before

Width:  |  Height:  |  Size: 221 KiB

After

Width:  |  Height:  |  Size: 221 KiB

View File

Before

Width:  |  Height:  |  Size: 49 KiB

After

Width:  |  Height:  |  Size: 49 KiB

View File

Before

Width:  |  Height:  |  Size: 48 KiB

After

Width:  |  Height:  |  Size: 48 KiB

View File

Before

Width:  |  Height:  |  Size: 8.5 KiB

After

Width:  |  Height:  |  Size: 8.5 KiB

View File

Before

Width:  |  Height:  |  Size: 27 KiB

After

Width:  |  Height:  |  Size: 27 KiB

View File

Before

Width:  |  Height:  |  Size: 44 KiB

After

Width:  |  Height:  |  Size: 44 KiB

View File

Before

Width:  |  Height:  |  Size: 48 KiB

After

Width:  |  Height:  |  Size: 48 KiB

View File

Before

Width:  |  Height:  |  Size: 38 KiB

After

Width:  |  Height:  |  Size: 38 KiB

View File

Before

Width:  |  Height:  |  Size: 21 KiB

After

Width:  |  Height:  |  Size: 21 KiB

View File

Before

Width:  |  Height:  |  Size: 8.0 KiB

After

Width:  |  Height:  |  Size: 8.0 KiB

View File

Before

Width:  |  Height:  |  Size: 16 KiB

After

Width:  |  Height:  |  Size: 16 KiB

View File

@ -1,16 +1,15 @@
<center>
<img src="logo.png" width="300">
</center>
<br>
<div class="center">
<img src="./img/logo.png" class="crxn_logo" alt="CRXN logo">
</div>
<center>
<h1>CRXN</h1>
</center>
<div class="center mark22k_hide">
<h1>CRXN</h1>
</div>
## What is it?
# What is it?
<img src="map.png" width=30% height=30% style="float:right;gap;margin-left:20px">
<img src="./img/map.png" class="floating_right" alt="CRXN logo">
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 provide an IPv6 (that's the freshest Internet Protocol out there to date) and on CRXN anything that can speak IPv6
@ -110,4 +109,4 @@ Some important links to remember.
* The CRXN homepage is: [http://deavmi.assigned.network/projects/crxn](http://deavmi.assigned.network/projects/crxn)
* The **EntityDB** repository is: [https://codeberg.org/CRXN/entitydb](https://codeberg.org/CRXN/entitydb)
* This documentation is at: [https://github.com/Community-Run-eXperimental-Network/docs](https://github.com/Community-Run-eXperimental-Network/docs)
* This documentation is at: [https://github.com/Community-Run-eXperimental-Network/docs](https://github.com/Community-Run-eXperimental-Network/docs)

View File

@ -1,36 +0,0 @@
Network configuration
=====================
Before we start configuring tunnels and routing we first need to make sure the network of the machine you wish to configure as a CRXN router is configured correctly.
## Assigning addresses and a subnet
TODO: Add subnet assignment
## Enabling forwarding
We will be setting up the machine that runs bird as a router so therefore
we need to make your Linux kernel's network stack not drop IPv6 packets
that it receives (addressed to it via Ethernet) but are not addressed to
it via IPv6 address - in other words it must try do something with these packets,
namely attempt to forward them one hop closer to their initial destination.
Enabling forwarding on all interfaces can be achieved as follows (you will need
to be root):
```bash
echo 1 > /proc/sys/net/ipv6/conf/all/forwarding
```
However, after reboot it won't be saved and will go back to its defaults. Therefore
what you need to do is to enable forwarding on boot-up, this can be done by
adding an additional line to your `/etc/sysctl.conf` (which holds a bunch of
these statements), it should look like this:
```bash
net.ipv6.conf.all.forwarding=1
```
TODO: Weird experience with me, only doing `all` made it work
TODO: Forwarding settings should be placed here

View File

@ -1,4 +1,14 @@
Peers
=====
# Peers
This aims to be a public directory of all known peers willing to publically accept connections for tunnels.
This aims to be a public directory of all known peers willing to publically accept connections for tunnels.
### Peering with Bandura Communications
- Name: Bandura Communications
- Peering policy: open
- Tunneling protocols: WireGuard, fastd, OpenVPN, GRE and others
- Nodes: [https://byeob.de/crxn/](https://byeob.de/crxn/)
- Website: [https://byeob.de/](https://byeob.de/)
> Hello,
I am Marek Küthe and I operate Bandura Communications. We have a few servers, which are distributed around the world. We are happy to peer! We support WireGuard, fastd, OpenVPN, GRE and some other tunnel protocols. Just write us at: [crxn@mk16.de](mailto:crxn@mk16.de)

View File

@ -1,11 +1,10 @@
People
======
# People
Get to know some familiar faces!
# Current administration
## Current administration
## Tristan B. Kildaire `~deavmi`
### Tristan B. Kildaire `~deavmi`
<!-- <img src="http://deavmi.assigned.network/profile_pic.jpg"> -->
@ -19,14 +18,14 @@ E-mail: `deavmi@redxen.eu`
BNET IRC: `deavmi` (preferred)
Matrix: `deavmi@envs.net`
## Christian Rühringer
### Christian Rühringer
Amazing German dude.
Roles: Network services, Routing
BNET IRC: `chris2001` on `#crxn`
## Ty3r0X `~ty3r0x`
### Ty3r0X `~ty3r0x`
> Follow The Eye!
@ -37,7 +36,7 @@ Roles: Network services, Routing, CRXNxDN42 inter-connect maintenance
E-mail: `ty3r0x@chaox.ro`
BNET IRC: `ty3r0x`
## Marek Küthe `~mark22k`
### Marek Küthe `~mark22k`
> The hero of CRXN
@ -50,9 +49,9 @@ Hackint IRC: `mark22k`
---
# Previous administration
## Previous administration
## Rany `~rany`
### Rany `~rany`
<!-- <img src="people/rany.png"> -->
@ -64,7 +63,7 @@ E-mail: `ranycrxn@riseup.net`
BNET IRC: `rany`
Matrix: `@rany:fairydust.space`
## Alex Denes `~caskd`
### Alex Denes `~caskd`
<!-- <img src="people/caskd.png"> -->
@ -73,4 +72,4 @@ European CRXN adminstration, runs the CRXN DNS root name server.
Roles: Network services, CRXN DNS
E-mail: `caskd@redxen.eu`
BNET IRC: `caskd`
BNET IRC: `caskd`

View File

@ -1,141 +0,0 @@
Configuring Bird 2
==================
This document aims to provide the configuration file template required
for CRXN and along with a description of what parameters need to be set
for your node specifically.
## Configuration
The configuration template is constructed out of the following files:
1. `filters.conf`
* Filter functions and the filter itself
2. `networks.conf`
* Advertisement of ULA
3. `tables.conf`
* The table definitions
4. `router.conf`
* This contains the needed protocol definition for discovering
your interface's prefixes and generating routes form them
* It also contains the needed protocol definitions to sync bird
routes into the Linux kernel's routing table (so you cna forward
packets based on the routes from Bird)
5. `protocols.conf`
* Depending on what protocol you want to use this will contains
configurations for each
All of these will be included in a file saved at `/etc/bird/bird.conf` like so:
```
router id <ipv4>;
include "/etc/bird/crxn/tables.conf";
include "/etc/bird/crxn/filters.conf";
include "/etc/bird/crxn/router.conf";
include "/etc/bird/crxn/networks.conf";
```
Additionally, add the files for the route distribution protocol which we configure in the next steps.
```
include "/etc/bird/crxn/babel.conf"; # For babel routing
include "/etc/bird/crxn/ospfv3.conf"; # For OSPFv3 routing
```
Remember to set a unique router ID in `<ipv4>`, make it anything - it doesn't have to even be an address you own.
#### `filters.conf`
This file holds all the required functions for subnet matching and also
filters that match to the specific prefix aggregates (regional subnets)
that CRXN uses.
```
filter crxnFilter
{
if (net ~ fd00::/8) then accept;
reject;
}
```
#### `tables.conf`
This file holds all table definitions. There are only two actually.
The table `crxn` is the one we actually use, `master` is optional
and is only present because if one uses `bird-lg-go` (the looking glass
we use) then it, by default, only shows routes in the `master` table.
It is meant to have the same routes as the `crxn` table.
```
# CRXN table
ipv6 table crxn;
```
#### `router.conf`
This contains an instance of the `direct` protocol which reads the address
and prefix assigned to your AF_INET6 interfaces and generates routes from
those that represent routes to directly atrtached networks those interfaces
are on. The reason for this is that the `kernel` protocol never learns routes
in the Linux kernel's routing table that have the `kernel` protocol which
is what you get when you assign interfaces addresses and prefixes. This
doesn't even need those, it gets them from the interface.
```
# The kernel protocol doesn't grab kernel routes that are added by you when you assign an
# address and prefix. So instead of reading this from all routes with `proto kernel` this just
# yeets the routes off of the interface structure itself (even if you didn't have a route for your
# directly attached networks - i.e. nexthop = 0.0.0.0)
protocol direct crxnDirect
{
ipv6
{
table crxn;
import filter crxnFilter;
};
# Interfaces to find neighbours on
interface "eth*";
}
protocol device {
}
```
The second part is for syncing routes from Bird to the Linux kernel's routing
table such that you can forward traffic based on the routes in Bird.
TODO: Check, defualt `learn` should learn non `kernel` and non-`bird` routes
```
# CRXN Kernel protocol
# We import any routes from the kernel table other than `proto bird` and `proto kernel`,
# could be `proto static` for example. By default it will learn these.
# Of course we also then export all routes from our Bird tables into the kernel so you can actually forward packets
protocol kernel crxnKernel
{
ipv6 {
# bird's crxn table -> kernel
table crxn;
export filter crxnFilter;
};
}
```
#### `networks.conf`
This is just something we normally add. Usually you would assign a `/64` within your ULA `/48` but you also want to claim the whole `/48` by advertising a blackhole for it. Here our `/48`/ULA is `fd40:ec65:5b4c::/48`.
```
protocol static crxnStatic
{
# Advertise your /48 with a blackhole
route fd40:ec65:5b4c::/48 blackhole;
ipv6 {
import filter crxn6;
table crxn;
}
}
```

View File

@ -1,7 +1,4 @@
IPv6 forwarding
===============
TODO: Move this to another page
# IPv6 forwarding
## Enabling forwarding

5
docs/routing/index.md Normal file
View File

@ -0,0 +1,5 @@
# Routing
- [Forwarding](forwarding)
- [Setting up Bird](bird)

View File

@ -1,5 +1,4 @@
Fastd tunneling
===============
# Fastd tunneling
This document will help you get peered over a layer-2 VPN using `fastd`.
@ -28,23 +27,26 @@ Create a file with the template and instructions below in `/etc/fastd/crxn/fastd
```
# The interface that will connect to the virtual ethernet network fastd connects us to
interface "crxn%n";
mode multitap;
# 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 <ip>:<port>;
bind [::]:<port>;
# Secret key (you generate this)
secret "<secret key>";
# Do not forward traffic for others
forward no;
# Setup a peer to allow incoming connections from or initiate a connection too
peer "<peerName>"
{
remote <type> "<ip>" port <port>;
key "<peer's public key>";
interface "<interface>";
}
```
@ -52,14 +54,14 @@ peer "<peerName>"
If your system uses ifconfig append
```
# On interface rise run
on up "ifconfig $INTERFACE up";
on down "ifconfig $INTERFACE down";
on up "ifconfig <interface> up";
on down "ifconfig <interface> down";
```
If your system uses ip append
```
on up "ip link set dev $INTERFACE up";
on down "ip link set dev $INTERFACE down";
on up "ip link set dev <interface> up";
on down "ip link set dev <interface> down";
```
The template needs to have the following filled in:

5
docs/tunneling/index.md Normal file
View File

@ -0,0 +1,5 @@
# Tunneling
- [fastd](fastd)
- [WireGuard](wireguard)

View File

@ -0,0 +1,3 @@
# WireGuard
TODO: Add documentation

View File

@ -1,32 +1,38 @@
site_name: CRXN
theme: readthedocs
extra_css: [extra.css]
nav:
- Home: index.md
- Home: .
- Getting started:
- Guide: getting-started.md
- Rules: rules.md
- Requirements: requirements.md
- Registration:
- Registering and adding your prefix to EntityDB: registration/entitydb.md
- Network configuration: network/setup.md
- Guide: getting-started
- Rules: getting-started/rules
- Requirements: getting-started/requirements
- Registration: getting-started/registration
- Routing:
- Fowarding: routing/bird/forwarding.md
- Setting up Bird: routing/bird/bird.md
- Fowarding: routing/forwarding
- Setting up Bird: routing/bird
- Tunneling:
- Fastd: tunneling/fastd.md
- Fastd: tunneling/fastd
- WireGuard: tunneling/wireguard
- Setting up your home network:
- Configuring your hosts:
- Automatically with SLAAC and radv:
- Setting up radv (router): radv/index.md
- Setting up SLAAC (hosts): slaac/slaac.md
- Using the network: usage/index.md
- Setting up radv (router): home_network/radv
- Setting up SLAAC (hosts): home_network/slaac
- DNS: home_network/dns
- Additional:
- CRXN DNS: dns/dns.md
- DN42 interconnection: dn42.md
- DNS: additional/dns
- DN42 interconnection: additional/dn42_interconnection
- On-the-go CRXN:
- What is it?: otg/index.md
- Deavmi's OTG: otg/deavmi.md
- Peers: peers.md
- Services: services.md
- People: people/people.md
- What is it?: additional/otg/
- Deavmi's OTG: additional/otg/deavmi
- Peers: peers
- Services: services
- People: people