Opennet Domain-Proxy: Unterschied zwischen den Versionen
(→Überblick) |
(→Technische Umsetzung) |
||
Zeile 33: | Zeile 33: | ||
== Technische Umsetzung == | == Technische Umsetzung == | ||
Die Domain-Proxies ermöglichen Verkehr via http und https. Folgende Proxy-Werkzeuge kommen dabei zum Einsatz: | Die Domain-Proxies ermöglichen Verkehr via http und https. Folgende Proxy-Werkzeuge kommen dabei zum Einsatz: | ||
− | * http: | + | * http: Apache2 |
* https: [https://github.com/inconshreveable/slt slt] | * https: [https://github.com/inconshreveable/slt slt] | ||
Zeile 43: | Zeile 43: | ||
** Aktualisieren der nginx- und slt-Konfigurationsdateien | ** Aktualisieren der nginx- und slt-Konfigurationsdateien | ||
** Neustart von nginx und slt im Fall von Änderungen | ** Neustart von nginx und slt im Fall von Änderungen | ||
− | * | + | * Apache2: Proxy für http-Verbindungen |
* slt: Proxy für https-Verbindungen (SNI-basierte Verkehrslenkung ohne SSL-Terminierung) | * slt: Proxy für https-Verbindungen (SNI-basierte Verkehrslenkung ohne SSL-Terminierung) | ||
Version vom 31. Juli 2019, 07:08 Uhr
Inhaltsverzeichnis |
Überblick
Der Domain-Proxy im Opennet ermöglicht es den Teilnehmern im Opennet öffentliche Webseiten zu betreiben. Technisch wird dies durch vom Verein betriebene Proxy-Server umgesetzt, die externe Zugriffe an die jeweiligen Endknoten weiterreichen. Die Konfiguration der Proxy-Server erfolgt regelmäßig anhand von OLSR-Nameservice-Ankündigungen. Jeder Betreiber eines Knotens kann die von ihm betriebenen Domains also selbständig einrichten.
Der Zustand (Log-Daten sowie erzeugte Konfigurationen) sind unter https://domain-proxy.opennet-initiative.de erreichbar.
Einrichtung einer Domain-Weiterreichung
Achtung: diese Konfiguration dient dem Betrieb von Webseiten aus dem Opennet heraus. Sie ist jedoch nicht dazu geeignet, anonym Web-Dienste anzubieten, da die Zuordnung von Web-Domain und AP öffentlich einsehbar ist. Falls es dir um den anonymen Betrieb einer Webseite gehen sollte, dann dürfte TOR besser geeignet sein. |
- auf dem AP via Web-Interface oder uci beispielsweise folgende olsr-Nameservice-Einträge anlegen:
PlParam "service" "http://192.168.10.13:80|tcp|public-domain-http test.opennet-initiative.de" PlParam "service" "http://192.168.10.13:80|tcp|public-domain-http test.on-i.de" PlParam "service" "https://192.168.10.13:443|tcp|public-domain-https test.opennet-initiative.de" PlParam "service" "https://192.168.10.13:443|tcp|public-domain-https test.on-i.de"
- im obigen Beispiel wird die Domain test.opennet-initiative.de (sowie ihre Kurzform) sowohl per http als auch https zugänglich gemacht
- folgende Punkte sind dabei unbedingt zu beachten:
- die IP muss auf dem AP konfiguriert sein - andernfalls ignoriert der lokale olsrd den Eintrag
- https-Webseiten (nach außen) müssen vom AP via https angeboten sein
- http-Webseiten (nach außen) können sowohl via http als auch https bereitgestellt werden
- die Formatierung der nameservice-Zeile ist streng einzuhalten
- die Ports auf deinem AP kannst du frei wählen
- die DNS-Konfiguration für den Domainnamen anpassen auf CNAME domain-proxy.opennet-initiative.de
- es ist nicht zulässig, neben einem CNAME-Eintrag für einen Domainnamen weitere DNS-RR zu definieren (z.B. MX- oder SRV-Einträge)
- Typischerweise kannst du also nur www.example.org und nicht example.org auf diesem Weg veröffentlichen.
- Stattdessen kannst du auch anstelle des CNAME-Eintrags einen (oder mehrere) A-Einträge verwenden - du musst dann jedoch selbst Sorge dafür tragen, die IPs anzupassen, wenn wir irgendwann mal den Hosting-Anbieter wechseln oder sich aus anderen Gründen die IP-Einträge von domain-proxy.opennet-initiative.de ändern. Wir werden dich jedoch nicht über Änderungen informieren - du musst selbst für eine regelmäßige Prüfung sorgen.
- es ist nicht zulässig, neben einem CNAME-Eintrag für einen Domainnamen weitere DNS-RR zu definieren (z.B. MX- oder SRV-Einträge)
- richte auf deinem AP eine Portweiterleitung ein (von dem via olsr-Nameservice announcierten Port auf den internen Port des Webservers in deinem privaten Netz)
- warte, bis die Proxy-Server-Konfigurationen aktualisiert wurden (im 15-Minuten-Takt)
Technische Umsetzung
Die Domain-Proxies ermöglichen Verkehr via http und https. Folgende Proxy-Werkzeuge kommen dabei zum Einsatz:
- http: Apache2
- https: slt
Server-Konfiguration
Die beteiligten Server werden vollständig mit der ansible-Rolle "domain-proxy" konfiguriert. Diese Rolle konfiguriert folgende Zustände auf den Servern:
- ein cron-Job "on-update-domain-proxy" im 15-Minuten-Takt:
- regelmäßiges Auslesen von http- und https-Domain-Ankündigungen aus den olsr-Nameservice-Daten
- Aktualisieren der nginx- und slt-Konfigurationsdateien
- Neustart von nginx und slt im Fall von Änderungen
- Apache2: Proxy für http-Verbindungen
- slt: Proxy für https-Verbindungen (SNI-basierte Verkehrslenkung ohne SSL-Terminierung)
AP-Konfiguration
Auf dem AP können via Web-Interface (oder via uci) olsrd-Nameservice-Einträge definiert. Diese werden automatisch im Netz verteilt und anschließend von den Proxy-Servern ausgewertet.
Problemanalyse / Debugging
Prüfe die folgenden Punkte, falls deine Webseite nicht korrekt ausgeliefert wird:
- Ist der olsr-Nameservice auf irgendeinem Knoten im Netz sichtbar? (siehe /var/run/services_olsr)
- falls nicht, dann ist die Struktur des Eintrags oder seine IP falsch
- Wird die Domain im Aktualisierungsprotokoll erwähnt? (siehe http://domain-proxy.opennet-initiative.de/)
- falls nicht, dann entspricht der Inhalt des Eintrags nicht perfekt dem obigen Beispiel
- Wird die Domain in den erzeugten Konfigurationsdateien erwähnt? (siehe http://domain-proxy.opennet-initiative.de/)
- der Eintrag ist inhaltlich falsch (z.B. kein https-Ziel für https-Eingang)
- Die vollständige Funktionsfähigkeit lässt sich leicht mit curl prüfen:
curl --header "Host: test.opennet-initiative.de" http://domain-proxy.opennet-initiative.de/