Um einen Tunnel zu [[Cthulhu|cthulhu.c3d2.de]] zu bauen, bitte mit [[toidinamai]] in Verbindung setzen
und die folgenden Schritte ausführen:

=== SSL-Zertifikat-Request erzeugen ===
 $ openssl req -new -out foo.csr -newkey rsa:4096 -keyout foo.key -nodes -sha1
Die Fragen von SSL beantworten, Felder können mit '.' leergelassen werden,
nur CN (=Hostname) und Email sind notwendig. 'Extra'-Attribute sollten alle leer gelassen
werden.

=== Den Request an toidinamai schicken ===
Aus dem Request generiert toidinamai dann das von der OpenVPN-CA unterschriebene Zertifikat.
Der Request selbst ist öffentlich und enthält keine kryptographischen Geheimnisse. Nur die Request-Datei (foo.csr)
schicken, der Key (foo.key) sollte geheim bleiben! Das erhaltene Zertifikat sollte in der Datei foo.crt
gespeichert werden. Es ist ebenfalls nicht geheim.

=== Konfiguration herunterladen ===
Unter [https://cthulhu.c3d2.de/~toidinamai/openvpn/cthulhu/ https://cthulhu.c3d2.de/~toidinamai/openvpn/cthulhu/] befinden sich das CA-Zertifikat für OpenVPN
und Konfiguationsdatei-Templates. Empfiehlt sich, den Fingerprint des Zertifikates zu überprüfen:
 $ openssl x509 -in cthulhu-OpenVPN-cacert.pem -noout -fingerprint 
 SHA1 Fingerprint=35:74:BE:E5:14:B1:79:79:3F:D3:34:9A:15:0A:6E:B2:FF:6E:07:BE
In der config.template müssen nur die Dateinamen für Zertifikat und Key angepasst werden. Die up.sh wird nur
gebraucht, wenn auch IPv6 verwendet werden soll. Weiterhin ist dafür eine OpenVPN älter als 2.0.6 oder neuer als 2.1-beta12
notwending, da die anderen Versionen dem Server nicht erlauben, Umgebungsvariablen an den Client zu schicken.
Dort fe80:foo in eine richtige, feste link-local-Adresse ändern. Am besten nimmt man eine von einer im gleichen Rechner eingebauten Netzwerkkarte. Diese Adresse dann toidinamai mitteilen.

=== Tunnel aufsetzen ===
Wo die Konfigurations-Dateien genau liegen müssen, ist von der verwendeten Distribution abhängig. Ein Beispiel bietet [[OpenVPN mit runit]]. Normalerweise müssen alle Dateien ins Verzeichnis /etc/openvpn oder ein Unterverzeichnis. Ein init-Skript sollte dann das Starten übernehmen. Wichtig: Log-Datei in der config angeben, falls nicht runit oder daemontools verwendet werden.

=== Quagga einrichten ===

Wenn der Tunnel steht, folgendes dem bgpd beibringen, z.B. mit vtysh:

 router bgp xxxxx
 
 neighbor 172.22.110.1 remote-as 64710
 neighbor 172.22.110.1 interface vpn110
 
 neighbor fe80::accb:c2ff:fe8e:9296 remote-as 64710
 neighbor fe80::accb:c2ff:fe8e:9296 description cthulhu.c3d2.de
 neighbor fe80::accb:c2ff:fe8e:9296 interface vpn110
 no neighbor fe80::accb:c2ff:fe8e:9296 activate
 
 address-family ipv6
 neighbor fe80::accb:c2ff:fe8e:9296 activate
 neighbor fe80::accb:c2ff:fe8e:9296 soft-reconfiguration inbound

Da das Tunnel-Interface von cthulhu im TAP-Modus (Ethernet) arbeitet, müssen beide Protokolle, IPv4 und IPv6,
getrennt konfiguriert werden, da sonst die Next-Hop-Berechnung nicht funktioniert.

= Server-Konfiguration =

Für die, die es interessiert, liegt die Konfiguration des Servers (ohne das SSL-Verzeichnis) unter [http://cthulhu.c3d2.de/~toidinamai/openvpn/cthulhu-server/ http://cthulhu.c3d2.de/~toidinamai/openvpn/cthulhu-server/].

Das SSL-Zertifikat wurde genau so, wie von den Peers erzeugt, die CA selber ist auf einem
anderen Rechner.

dh1024.pem wurde wie in der OpenVPN-Manpage angegeben mit
 openssl dhparam -out dh1024.pem 1024
erzeugt.

Für jeden Client muss eine eigene Datei im Unterverzeichnis '''clients/''' eine Datei erstellt werden, in die
üblicherweise die Anweisungen kommen, die ihm seine IPv4- und IPv6-Adresse zuweisen (siehe Beispiel). Der
Dateiname muss dabei dem Common-Name im SSL-Zertifikat des Clients entsprechen.
