---
layout: page
title: Vorbereitungen, um dem CRXN Netzwerk beizutreten
permalink: /blog/crxn-vorbereitungen/
keywords: crxn,netzwerk,ipv6,routing,babel,join,joining,blog
description: Welche Vorbereitungen muss man treffen, um dem CRXN-Netzwerk beizutreten? Hier liste ich ein paar auf - von der Anmeldung bis zu den benötigten Geräten.
lang: de
feed: true
date: 2023-01-24 00:00:00 +0100
---

Um dem CRXN Netzwerk beizutreten, sind grundsätzlich drei Dinge erforderlich:

- Spaß am Lernen und Motivation
- Ein netzwerkfähiges Gerät, welches Internetzugriff hat
- Eine Registrierung in der EntityDB

## Vorwissen

Für diesen Blogeintrag setze ich folgendes Vorwissen voraus:
- Git
  - Clone, Pull, Push, Fork, PR
- JSON

## Geduld und Motivation

IP Routing kann sehr schwierig sein. Einmal sind es teilweise recht schwere Konzepte, welche dahinter sind - andererseits ist die praktische Umsetzung häufig mit Problemen verbunden. Daher kann es vorkommen, dass einige aufgeben. Man sollte sich daher im Vorhinein überlegen, ob man dem Netzwerk wirklich beitreten möchte.

## Ein Gerät

Des Weiteren braucht man ein Gerät, welches Zugriff auf das Internet / Clearnet hat und am besten 24/7 läuft. Dafür eignet sich zum Beispiel ein alter Rechner, welchen man noch herumstehen hat (Achtung: Stromverbrauch) oder ein Einplatinencomputer wie ein Pi. Das Gerät sollte via Kabel an das Internet angebunden sein. Bei WiFi / WLAN kann es zu langsameren Geschwindigkeiten und hohen Latenzen führen.
Alternativ kann man sich online eine virtuelle Maschine mieten. Meine Provider kann man auf [byeob.de](https://byeob.de/) sehen. Eine kleine virtuelle Maschine mit einem CPU-Kern und einem Gigabyte Arbeitsspeicher ist im Normalfall ausreichend. Wenn man sich eine VM mietet, sollte man darauf achten, dass es sich um eine VM und keinen Container handelt. Bei virtuellen Maschinen installiert man selber einen Kernel und kann entsprechend das Routing und die Kernel Parameter genau steuern. Ein Container teilt sich den Kernel mit dem Host und "erbt" dabei auch die Einstellungen und Module. Sollte der Host beispielsweise kein WireGuard Modul haben, so kann man WireGuard im Container nicht ohne Umwege benutzten. Container werden häufig mit "LXC", "Docker" oder "OpenVZ" beworben. Virtuelle Maschinen dagegen mit "KVM", "WMware" und "Hyper-V".

Auf diesem Gerät kann man nun ein Betriebssystem installieren. Im Allgemeinen funktioniert **kein** Windows und **kein** Apple.

General ist es nicht relevant, ob man das Gerät IPv4, IPv6 oder beides hat. Da über das Internet lediglich die Verbindung zu anderen CRXN Teilnehmern aufgebaut wird. In CRXN selber wird nur IPv6 verwendet.

## Die Registrierung

Um im CRXN Netzwerk teilnehmen zu können, braucht man eine Entity in der EntityDB kurz edb. Diese kann man auf [Codeberg](https://codeberg.org/CRXN/entitydb) finden. Um sich zu registrieren, kann man dies "forken". In dem Fork erstellt man eine neue JSON Datei mit dem Namen `<entity>.json`. Dabei ersetzt man `<entity>` durch einen Namen. Dies kann zum Beispiel ein Nickname sein.
Folgendes kann man als Beispiel nehmen:
```json
{
  "person": {
    "name": "Marek Küthe",
    "email": "crxn@mk16.de",
    "gpg": "9AA28159FCEB3CD83BC212017E869146699108C7"
  },
  "route": {
    "fd92:58b6:2b2::/48": {
      "description": "Bandura Communications",
      "max-len": "48",
      "device": {
        "fd92:58b6:2b2::1": {
          "type": "router",
          "description": "My first router"
        }
      }
    }
  }
}
```
Es wird eine Einrückung von zwei Leertasten verwendet.
Die Angaben unter Personen sind **freiwillig**. Wenn man keine Angaben machen möchte, kann man den Teil mit den Personen weglassen. Man kann bei dem Personen-Teil auch andere Attribute verwenden. Ich habe dort beispielsweise meinen Namen, meine E-Mail-Adresse und den Fingerabdruck meines GPG Schlüssel angegeben.

Unter `route` gibt man nun die eigentlich relevanten Informationen an.
Es gelten folgende Regeln:
- Es muss mindestens ein Präfix geben
- Je Präfix muss mindestens ein Gerät vorhanden sein

Bei mir wäre das Präfix `fd92:58b6:2b2::/48`. Man kann ein zufälliges Präfix aus dem ULA-Bereich `fd00::/8` verwenden. Auf [www.unique-local-ipv6.com](https://www.unique-local-ipv6.com/) kann man sich beispielsweise ULA-Präfixe generieren lassen. Man kann **freiwillig** eine Beschreibung angeben. Wenn man eine angibt, muss diese mindestens ein Zeichen lang sein und darf (aktuell) höchstens 2048 Zeichen lang sein.

`max-len` muss man **nicht** angeben. Ich **empfehle** es jedoch stark. Wenn man später mehr als ein Gerät im CRXN Netzwerk hat, welches routet, muss man nicht für jedes Gerät ein neues Präfix anfragen, sondern kann sein Präfix in kleine Stücke aufteilen - beispielsweise /56 oder /60. `max-len` gibt dabei die Länge des kleinsten Präfixes an. Das Minimum ist 64. Wenn man `max-len` nicht angibt, kann es sein, dass man anfällig für Route Hjacking ist. Weitere Informationen dazu kann man auf [crxn.de - max-len filter](https://crxn.de/docs/entitydb/maxlen) finden.

`device` muss mindestens ein (im Optimalfall erreichbares) Gerät angeben. Dabei unterscheidet man zwischen `generic`, `router` oder `server`. Wird der Type weggelassen, wird `generic` angenommen. Die Beschreibung ist **freiwillig**. Im Normalfall hat ein Netzwerk mindestens ein Gerät - den Router. Dieser bekommt häufig die Adresse `xxxx::1` zugewiesen. Man kann dem Router jedoch auch eine beliebige andere Adresse aus deinem Präfix geben.

Nachdem man die JSON Datei erstellt hat, kann man die JSON validieren. Dafür kann man beispielsweise `jq` oder [JSONLint](https://jsonlint.com/) verwenden. Danach kann man mithilfe der Schema-Datei `schema.json` deine Attribute überprüfen. Dafür kann man ein Tool wie `check-jsonschema` (Python) benutzten: `check-jsonschema --schemafile schema.json <entity>.json`

Danach kann man eine Pull Request erstellen. Normalerweise überprüft ein EntityDB Administrator die Anfrage innerhalb von einer Woche und merget diese. Danach ist man registriert.

Wenn man längere inaktiv ist, das Netzwerk nicht erreichbar und die Entity auch nicht, kann es passieren, dass die Entity in der EntityDB gelöscht wird.

## Hilfe

Es kann immer wieder Stellen geben, wo man selber nicht mehr weiterweiß. In diesem Fall kann man andere Mitglieder des CRXN Netzwerkes fragen. Diese findet man auf Matrix im Raum [`#crxn:matrix.org`](https://matrix.to/#/#crxn:matrix.org)

