# Dn42

Das dn42 (Abkürzung für „Decentralized network 42“, deutsch: „dezentrales Netzwerk 42“) ist ein dezentrales Peer-to-Peer Netzwerk, welches mit VPNs und Software- bzw. Hardware BGP-Routern aufgebaut ist.
Während andere Darknets die Anonymität ihrer Teilnehmer in den Vordergrund stellen, ist dn42 primär eine experimentelle Lernumgebung, in welcher Technologien (wie sie auch im Internet angewendet werden) ausprobiert werden können.
Das Netz ist nicht vollständig vermaschend. Das dn42 benutzt meistens virtuelle Tunnel anstatt physischer Verbindungen zwischen den individuellen Netzwerken. Jeder Teilnehmer verbindet sich zu einem oder mehreren anderen Teilnehmern. Über das VPN bzw. die physischen Verbindungen wird dann inter AS Routing mit BGP betrieben. Während OSPF das meistverbreitete Protokoll für intra AS Routing ist, steht es jedem Teilnehmer frei, ein anderes IGP wie Babel in seinem AS zu verwenden.

## Geschichte

Das dn42 ist ein Neustart des diac24. Zu dieser Zeit bestand das diac24 lediglich aus etwa ein Dutzend Teilnehmern. Im diac24 wurde der IPv4-Adressbereich 172.22.0/23 sowie der IPv6-Adressbereich 3ffe:400:c00::/48 verwendet. Das dn42 hatte in seiner Anfangszeit den IPv4-Adressbereich 172.22.0.0/16 sowie teilweise IPv6-Adressbereiche aus dem Clearnet wie etwa 2001:6f8: verwendet. Für die AS-Nummern verwendete es den Bereich 65000 bis 65999.
Man kann davon ausgehen, dass das diac24 bzw. auch das dn42 sich im Anfangsstadium primär an ein deutschsprachiges Publikum richtete, da ein Großteil der Dokumentation auf Deutsch war. Das diac24 verwendete hauptsächlich GRE als Tunnelprotokoll zwischen den Teilnehmern, welches allerdings nicht verschlüsselt ist. Im den frühen Tagen des dn42 wurde wiederum OpenVPN als Tunnelprotokoll verwendet. Über die Zeit hin wurde immer häufiger WireGuard verwendet, unter anderem, da es schnell ist und recht einfach zu konfigurieren. Die Registry, in welcher alle Teilnehmer ihre IP-Adressbereiche und ihre AS-Nummern registrieren, wurde anfänglich in einer Wiki-Seite verwaltet; später wurde auf Git umgestellt. Jeder Teilnehmer konnte sich also einen IP-Adressbereich sowie eine AS-Nummer aussuchen und die Wiki-Seite entsprechend ergänzen.

## Technische Details
### Adressbereich

Der im dn42 verwendet Adressbereich besteht aus dem privaten IPv4-Bereich 172.20.0.0/14 sowie für IPv6 den ULA-Bereich fd00::/8. Es kann allerdings damit gerechnet werden, dass im dn42 auch andere Adressbereich propagiert werden, da das dn42 mit dem NeoNetwork, dem ChaosVPN, dem IC-VPN und dem CRXN verbunden ist. Das NeoNetwork verwendet 10.127.0.0/16 und fd10:127::/32, das ChaosVPN verwendet 172.31.0.0/16, sowie Teile von 10.0.0.0/8 und fd00::/8, das IC-VPN verwendet 10.0.0.0/8 sowie auch Teile von fd00::/8 und das CRXN ist IPv6-only und verwendet auch Teile von fd00::/8.

### AS-Nummern

Um BGP in einer privaten Umgebung zu nutzen, werden AS-Nummern benötigt. Dafür verwendet das dn42 verschiedene private oder sonstig reservierte AS-Nummern einschließlich 64512 bis 64855 und 76100 bis 76199. Seit Juni 2014 wird auch der neue private Bereich von 4242420000 bis 4242429999 verwendet, welches Teil eines größeren Bereiches definiert in RFC 6996 ist.

### BGP Router

Während einige Teilnehmer Hardware-Router verwenden, verwenden die meisten Server oder virtuelle Maschinen, um ihre Kosten günstig zu halten. Die überwiegend verwendeten BGP-Implementierungen sind BIRD und FRR, einige verwenden allerdings auch OpenBGPD, XORP, GoBGP oder eine Implementierung wie JunOS, Cisco IOS, MikroTik's RouterOS oder VyOS (welches FRR im Hintergrund als Routing Daemon verwendet).

### Tunneln

Im dn42 werden verschiedene Verbindungen verwendet – hauptsächlich allerdings virtuelle Verbindungen, also Tunnel. WireGuard ist das am häufigsten verwendete Tunnelprotokoll, unter anderem da es einfach zu konfigurieren ist und als sicher gilt (mit Perfect Forward Secrecy). Des Weiteren unterstützten die meisten automatischen Peering-Systeme nur WireGuard als einzige Option. Für Peerings mit dem IC-VPN wird häufig fastd auf github.com verwendet. In seltenen Fällen wird auch OpenVPN oder IPsec verwendet.

### DN42 TLD

Webseiten und Dienste, welche im dn42 gehostet sind verwendet oft die Top-Level-Domain dn42. Diese wird nicht offiziell von der IANA zugewiesen, sondern durch die dn42 Registry verwaltet.

### Registry

Um die Administration von IP-Adressen, AS-Nummern und Domain zu vereinfachen und zu vereinheitlichen gibt es das dn42 Registry. Dieses basiert auf Git, wodurch auch eine dezentrale Speicherung ermöglicht wird. Des Weiteren können dadurch alle Änderungen auf einen eindeutigen Urheber zurückgeführt werden. Um Änderungen in der Registry vorzunehmen (beispielsweise eine Registrierung), wird eine Pull Request mit den entsprechenden Änderungen erstellt. Einer der Registry Betreuer schaut sich diese dann an, validiert diese (unter anderem syntaktisch) und verifiziert auch die Authentifizierung (beispielsweise in Form einer Signatur). Der entsprechende Autor muss autorisiert sein, die Änderung durchzuführen. Dies wird beispielsweise mit Signaturen durch GPG- oder SSH-Schlüssel sichergestellt.

### Interconnections

Das dn42 ist mit einigen anderen ähnlichen Projekten verbunden:
| Name | v4 | v6 | TLD |
| NeoNetwork | X | X | .neo |
| Freifunk IC-VPN | X | X | Verschiedene |
| ChaosVPN | X | X | .hack |
| CRXN | | X | .crxn |

### Zertifizierungsstelle

Das dn42 hat seine eigene (inoffizielle) Zertifizierungsstelle (CA). Diese wird verwendet, um TLS-Zertifikate (beispielsweise für HTTPS) auszustellen. Die Inhaberschaft kann dabei wie im Fall von Let’s Encrypt mit ACME verifiziert werden.
Zusätzlich betreibt das NeoNetwork auch eine eigene CA für ihre .neo TLD und entsprechende IP-Adressbereiche. Das ChaosVPN, das IC-VPN und das CRXN haben keine CA. Um sicherzustellen, dass die CA keine Zertifikate für Clearnet-Adressen ausstellt, werden name constraints verwendet, welche die Bereiche einschränken, für welche die CA Zertifikate ausstellen kann. Dies bedeutet, dass die CA nicht für Clearnet Adressen verwendet werden kann.

## Dienste

Das folgende ist eine Auswahl von Diensten, welche im dn42 angeboten werden:
| Service | v4 | v6 | DNS |
| Recursive Anycast DNS | 172.20.0.53 | fd42:d42:d42:54::1 | a0.recursive-servers.dn42 |
| Recursive Anycast DNS | 172.23.0.53 | fd42:d42:d42:53::1 | a3.recursive-servers.dn42 |
| Basic “What is my IP service”-Service | 172.20.0.81 | fd42:d42:d42:81::1 | http://myip.dn42/ |
| dn42 wiki | 172.23.0.80 | fd42:d42:d42:80::1 | https://wiki.dn42/ / https://internal.dn42/ |
| Global Route Collector | 172.20.129.4 | fd42:4242:2601:ac12::1 | collector.dn42 |