Opennet Domain-Proxy: Unterschied zwischen den Versionen
Lars (Diskussion | Beiträge) K (Formatierung) |
(→Problemanalyse / Debugging) |
||
(14 dazwischenliegende Versionen von 2 Benutzern werden nicht angezeigt) | |||
Zeile 1: | Zeile 1: | ||
− | |||
== Überblick == | == Überblick == | ||
Zeile 5: | Zeile 4: | ||
Technisch wird dies durch vom Verein betriebene Proxy-Server umgesetzt, die externe Zugriffe an die jeweiligen Endknoten weiterreichen. | 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. | 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 == | == Einrichtung einer Domain-Weiterreichung == | ||
+ | {{hinweis|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 [http://www.torproject.org TOR] besser geeignet sein.}} | ||
+ | |||
* auf dem AP via Web-Interface oder uci beispielsweise folgende olsr-Nameservice-Einträge anlegen: | * auf dem AP via Web-Interface oder uci beispielsweise folgende olsr-Nameservice-Einträge anlegen: | ||
− | + | <pre> | |
− | + | 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" | |
− | ** im obigen Beispiel wird die Domain '' | + | PlParam "service" "https://192.168.10.13:443|tcp|public-domain-https test.on-i.de" |
+ | </pre> | ||
+ | ** 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: | ** folgende Punkte sind dabei unbedingt zu beachten: | ||
*** die IP muss auf dem AP konfiguriert sein - andernfalls ignoriert der lokale olsrd den Eintrag | *** die IP muss auf dem AP konfiguriert sein - andernfalls ignoriert der lokale olsrd den Eintrag | ||
Zeile 28: | 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] | ||
=== Server-Konfiguration === | === Server-Konfiguration === | ||
− | Die beteiligten Server werden vollständig mit der [[Opennet_ansible#domain-proxy ansible-Rolle "domain-proxy"]] konfiguriert. | + | Die beteiligten Server werden vollständig mit der [[Opennet_ansible#domain-proxy|ansible-Rolle "domain-proxy"]] konfiguriert. |
Diese Rolle konfiguriert folgende Zustände auf den Servern: | Diese Rolle konfiguriert folgende Zustände auf den Servern: | ||
* ein cron-Job "on-update-domain-proxy" im 15-Minuten-Takt: | * 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 | ** regelmäßiges Auslesen von http- und https-Domain-Ankündigungen aus den olsr-Nameservice-Daten | ||
− | ** Aktualisieren der | + | ** Aktualisieren der apache2- 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) | ||
=== AP-Konfiguration === | === 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. | 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 https://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" https://domain-proxy.opennet-initiative.de/ | ||
Aktuelle Version vom 31. Juli 2019, 08:08 Uhr
Inhaltsverzeichnis |
[Bearbeiten] Ü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.
[Bearbeiten] 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)
[Bearbeiten] Technische Umsetzung
Die Domain-Proxies ermöglichen Verkehr via http und https. Folgende Proxy-Werkzeuge kommen dabei zum Einsatz:
- http: Apache2
- https: slt
[Bearbeiten] 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 apache2- 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)
[Bearbeiten] 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.
[Bearbeiten] 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 https://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" https://domain-proxy.opennet-initiative.de/