Vorbereitungen, um dem CRXN Netzwerk beizutreten

mk16.de

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

Vorwissen

Für diesen Blogeintrag setze ich folgendes Vorwissen voraus:

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 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 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:

{
  "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:

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 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 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 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