networking

This commit is contained in:
Peter Hormanns 2016-08-09 14:43:39 +02:00
parent cfa2670cd1
commit ce1c65578a

114
services/doc/networking.md Normal file
View File

@ -0,0 +1,114 @@
Hostsharing IP-Networking
=========================
Für die Überarbeitung des Paket-Moduls in HSAdmin sollten die
künftigen Anforderungen an die Netzwerkanbindung der Pakete
(Stichwort "Paket-IP-Adresse") festgelegt sein.
Zwei wichtige Anforderungen an die Hostsharing-Infrastruktur
für die nahe Zukunft sind:
* Unterstützung von IPv6
* kundenspezifische Netze zwischen mehreren Managed
Servern ("Hives")
Die fehlende IPv6-Anbindung bei Hostsharing ist fast schon ein
Anachronismus. Die kundenspezifischen Netze werden zur Zeit
aufwändig manuell konfiguriert.
Public Network
--------------
Unter dem "public network" verstehen wir die Anbindung der
Server ans das öffentliche Internet.
### Status Quo
Zur Zeit hat jeder Hive eine zentrale IPv4-Adresse, die für
Verbindungen ins Internet genutzt wird. Über diese Adresse
ist die Default-Route konfiguriert.
Für eingehende Verbindungen ist für jedes Paket eine
eigene IPv4-Adresse konfiguriert. Anfangs wurde die eigene
Adresse nur für Pakete mit den Paket-Optionen "HTTPS" oder
"Anonymes FTP" vergeben. Seit einigen Jahren sind diese
Optionen (und damit die eigene IPv4-Adresse) inklusive
für alle Pakete.
Anonymes FTP wir heute kaum noch verwendet. Und mit der
breiten Unterstützung für SNI in allen HTTP-Browsern ist
die eigene IP-Adresse für HTTPS nicht mehr erforderlich.
Hostsharing nutzt die eigene IP-Adresse seitdem auch für
die Traffic-Abrechnung auf Paket-Ebene. Vor der Vergabe der
IP-Adressen pro Paket wurde lediglich HTTP-Traffic aus den
Apache-Log-Dateien ermittelt.
Alle IPv4 Adressen stammen aus drei nicht zusammenhängenden
/24-Netzen. Aus historischen Gründen sind die Adressen
willkürlich über die gesamte Hostsharing-Infrastruktur am
Standort Berlin verteilt.
### Planung für die Zukunft
Jeder Hive soll nur genau je eine externe IPv4- und IPv6-Adresse
erhalten. Die IPv4-Adressen einer Server-Gruppe werden aus
einem /24-Netz entnommen, das der Server-Gruppe fest zugeordnet
ist. Für IPv6 wird ein /64-Netz pro Server-Gruppe zugeordnet.
Dieses Vorgehen macht die Konfiguration einfach und stellt
keine großen Anforderungen an die Leistungsfähigkeit der
Router-Infrastruktur.
Wir sehen die Vorteile:
* Einfachheit
* Eigenes Netz pro Host-Gruppe (Routing)
* Wenige belegte IP-Adressen bei IPv6
Nachteile können sein:
* bei Virtualisierung innerhalb von Hives, die als Root-Server
vermietet werden (z.B. LXC, Docker) gibt es keine
gerouteten IP-Adressen für die virtuellen Instanzen. Die
Services müssen über IP-Tables-regeln erreichbar gemacht
werden, wie es zum Beispiel von Docker unterstützt wird.
* Das Traffic-Accounting pro Paket muss wieder auf weniger
zuverlässige Lösungen (wie zum Beispiel Log-File-Auswertungen)
umgestellt werden.
* Keine Vergabe von IPv6-Adressen pro Domain, obwohl es
natürlich genügend Adressen gäbe
Private Network
---------------
Die Server einer Server-Gruppe sind jeweils über ein internes
physikalisches Netzwerk ohne weitere Anbindung an aussen
miteinander verbunden. Auf diesem Netz werden kundenspezifische
Netze als virtuelle Netze ("tagged VLANs") realisiert.
Die Konfiguration dieser Netze erfolgt heute manuell und
soll künftig in HSAdmin definiert und per Configuration
Management ("Saltstack") angewendet werden.
Jeder Kunde (jedes Mitglied) kann mehrere private Netze definieren
und jeweils seine Managed Server an diese Netze anbinden.
Services und Port-Vergabe
-------------------------
Alle von Hostsharing verantworteten Services der Managed Server
werden ausschließlich auf ihren jeweiligen Standard-Port am
Loopback-Device gebunden. Der Kunde konfiguriert in HSAdmin
IP-Tables-Regeln, die die Weiterleitung von IP-Paketen
vom Public- oder einem Private-Interface an den Service steuern.
Kunden VPNs
-----------
Zu einem späteren Zeitpunkt können Kunden-VPN als Erweiterung
der abgeschlossenen VLANs angeboten werden. Ein VPN mit Verbindung
ins Internet würde auch managed Server ohne externe geroutete
IP-Adressen erlauben. Eine "Einwahl" ins VPN für den Kunden
ermöglich den administrativen Zugang zu Servern ohne Public
Network.