Opennet Domain-Proxy

Aus Opennet
Wechseln zu: Navigation, Suche

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


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

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
  • nginx: 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/
Meine Werkzeuge
Namensräume

Varianten
Aktionen
Start
Opennet
Kommunikation
Karten
Werkzeuge