SXAccessSXAccessDoku
Dashboard öffnen

Standorte untereinander

Rechner in einem Büro die Rechner in einem anderen erreichen lassen, auch solche, die keinen Agenten ausführen können. Ein Routing-Gerät je Standort, kein Tunnel je Standortpaar, keine öffentliche Adresse.

Was Sie erreichen werden

Rechner in einem Büro erreichen Rechner in einem anderen, auch solche, auf denen nie ein Agent laufen wird. Kommt ein Büro hinzu, ändert sich an den bereits funktionierenden nichts.

Jeder Standort betreibt ein Routing-Gerät. Zugriffsregeln entscheiden, welcher Standort was erreicht, jeweils für eine Richtung.

Wann Sie das brauchen

Nutzen Sie diese Anleitung, wenn zwei oder mehr Standorte aufeinander angewiesen sind:

  • Eine Zentrale und Filialen, die einen Dateiserver oder ein ERP teilen.
  • Ein Rechenzentrum und die Büros, die es nutzen.
  • Ein Werk, dessen Systeme von einem zentralen Standort aus ausgelesen werden.
  • Standorte, die heute über Site-to-Site-VPN-Tunnel verbunden sind, deren Pflege Ihnen zu aufwendig geworden ist.

Nur ein Standort, auf den Notebooks zugreifen? Dafür gibt es die Anleitung Standorte vor Ort; diese hier baut darauf auf.

Was Sie brauchen

Die als Erforderlich markierten Zeilen genügen.

WasWozu
ErforderlichDie Rolle Owner oder Admin im DashboardFür die Registrierungsschlüssel
ErforderlichDie Subnetze aller Standorte, gemeinsam notiertUm zu belegen, dass keines kollidiert. Schritt 1
ErforderlichJe Standort ein dauerhaft laufender Linux-Host im LAN, mit iptables oder nftables und Root-ZugangDas Routing-Gerät des Standorts: Es leitet den Verkehr für die Rechner ohne Agenten weiter
ErforderlichZugriff auf das LAN-Gateway jedes Standorts, dessen Rechner einen anderen Standort erreichen sollen, oder auf diese Rechner selbstEine statische Route zum Routing-Gerät
ErforderlichEin Rechner ohne Agenten in einem dieser LANs, für den TestDer Nachweis, dass der Aufbau funktioniert
OptionalEin zweiter Host je StandortRedundanz, gesteuert über eine Metrik

Bevor Sie beginnen

Jeder Standort veröffentlicht sich selbst. Die Regeln sitzen in der Mitte.

Wie Frankfurt eine Datenbank in München erreichtJeder Standort betreibt ein Routing-Gerät vor seinem eigenen LAN. Das Routing-Gerät in Frankfurt erreicht das in München über einen verschlüsselten Tunnel, und eine Zugriffsregel erlaubt nur diese Richtung: site-fra darf die Munich database auf TCP 5432 erreichen. Rechner im Frankfurter LAN erreichen sie über eine statische Route, und weder auf ihnen noch auf der Datenbank wird etwas installiert. München erreicht nichts in Frankfurt, bis eine zweite Regel es erlaubt, und ein dritter Standort fügt dasselbe noch einmal hinzu.FRANKFURTMÜNCHENRechner im LANstatische Routenach Münchenrouter-fra-officeGruppe site-fraMunich databaseTCP 5432, kein Agentrouter-muc-officeGruppe site-mucZugriffsregelsite-fra → Munich databaseeine Richtung, TCP 5432Dritter Standortnoch einmal dasselbeverschlüsselter Tunnelverschlüsselter Tunnelnormaler LAN-Verkehrspäter hinzugefügtMünchen erreicht nichts in Frankfurt, bis eine zweite Regel es erlaubtWie Frankfurt eine Datenbank in München erreichtJeder Standort betreibt ein Routing-Gerät vor seinem eigenen LAN. Das Routing-Gerät in Frankfurt erreicht das in München über einen verschlüsselten Tunnel, und eine Zugriffsregel erlaubt nur diese Richtung: site-fra darf die Munich database auf TCP 5432 erreichen. Rechner im Frankfurter LAN erreichen sie über eine statische Route, und weder auf ihnen noch auf der Datenbank wird etwas installiert. München erreicht nichts in Frankfurt, bis eine zweite Regel es erlaubt, und ein dritter Standort fügt dasselbe noch einmal hinzu.FRANKFURTMÜNCHENZugriffsregelsite-fra → Munich databaseeine Richtung, TCP 5432Rechner im LANstatische Routenach Münchenrouter-fra-officeGruppe site-frarouter-muc-officeGruppe site-mucMunich databaseTCP 5432, kein Agentverschlüsselter Tunnelverschlüsselter Tunnelnormaler LAN-VerkehrMünchen erreicht nichts in Frankfurt,bis eine zweite Regel es erlaubt

Die Schritte bauen eine Richtung auf: Die Frankfurter Rechner erreichen eine Datenbank in München, und München erreicht in Frankfurt nichts. Wie das funktioniert, die Gegenrichtung und ein dritter Standort stehen unter Erweiterte Konfiguration.

Einrichtung

  1. 1

    Alle Subnetze und alle Richtungen notieren

    Bevor Sie im Dashboard etwas ändern, notieren Sie zwei Listen:

    • Die Subnetze aller Standorte. Keine zwei dürfen sich überschneiden: Ein Client, der 192.168.1.0/24 erreichen soll, kann nicht erkennen, welchen Standort Sie meinen. Einzelne Rechner zu veröffentlichen, umgeht das nicht; Umnummerieren schon. Nehmen Sie den Tunnelbereich Ihrer Organisation auf, ein /16 innerhalb von 100.64.0.0/10: Die Zeile Address von sxaccess info zeigt ihn, sobald ein Gerät beigetreten ist.
    • Welcher Standort was erreicht, ein Satz je Richtung. Frankfurt erreicht die Münchner Datenbank. München erreicht in Frankfurt nichts. Jeder Satz wird zu einer Zugriffsregel.

    Warum zuerst: Eine Kollision ist jetzt billig zu beheben und beim dritten Standort teuer.

  2. 2

    An jedem Standort ein Routing-Gerät registrieren

    Wählen Sie an jedem Standort einen dauerhaft laufenden Linux-Host im LAN mit iptables oder nftables. Der Agent schreibt damit Adressen um und schaltet die IP-Weiterleitung selbst ein.

    Legen Sie seinen Schlüssel unter Access › Enrollment keys › Create enrollment key an:

    • Name - router-muc.
    • Make this key reusable, Temporary devices, Allow Extra DNS Labels - aus.
    • Expires in - 1 Tag. Sie nutzen den Schlüssel gleich.
    • Auto-assigned groups - tippen Sie site-muc ein und drücken Sie Enter: Die Gruppe wird angelegt, und der Host kommt bei der Registrierung hinein.

    Wählen Sie Create enrollment key und kopieren Sie den Schlüssel: Er wird nur einmal angezeigt. Öffnen Sie dann ein Terminal auf dem Host. Führen Sie den Block in bash oder zsh als root aus. Fügen Sie den ganzen Block ein und drücken Sie einmal Enter. Sobald Enrollment key: erscheint, fügen Sie den Schlüssel ein, und nur ihn, und drücken Sie Enter. Der Schlüssel wird nicht angezeigt, und bei einer leeren Zeile fragt der Block erneut. Die Schlüsseldatei wird am Ende gelöscht, ob der Beitritt gelungen ist oder nicht. Haben Sie den Block mit Strg+C abgebrochen, löschen Sie sie mit rm -f /run/secrets/sxaccess-key.

    Sie sehen: This device is now connected, danach beginnt sxaccess info mit Connected, und der Host steht unter Devices in site-muc. Wiederholen Sie das in Frankfurt mit dem Schlüssel router-fra, der Gruppe site-fra und dem Hostnamen router-fra-office.

    shell
    curl -fsSL https://pkgs.sxaccess.com/install.sh | sh{  install -d -m 700 /run/secrets  install -m 600 /dev/null /run/secrets/sxaccess-key  KEY=''  until [ -n "$KEY" ]; do printf 'Enrollment key: '; read -rs KEY || break; echo; done  [ -n "$KEY" ] && printf '%s' "$KEY" > /run/secrets/sxaccess-key && unset KEY &&    sxaccess start --enrollment-key-file /run/secrets/sxaccess-key --hostname router-muc-office &&    sxaccess info  rm -f /run/secrets/sxaccess-key}
  3. 3

    München: die Datenbank, ihre Regel und ihr Routing-Gerät veröffentlichen

    Networks › Internal networks › Add internal network: Network Name Munich office, dann Add Network. Drei Formulare folgen:

    • Add Resource - Name Munich database; so zeigt sxaccess reach list die Ressource an. Address 10.20.0.15. Destination Groups: Tippen Sie muc-databases ein und drücken Sie Enter. Wählen Sie dann Add Resource. Veröffentlichen Sie den Dienst, nicht den ganzen Standort.
    • Create access rule - das Ziel ist bereits Munich database. Wählen Sie site-fra als Quelle, dann TCP. Klicken Sie in das Port-Feld, tippen Sie 5432 ein und drücken Sie Enter: Das Feld zeigt 5432 statt All. Wählen Sie dann Create access rule. Quelle ist das Frankfurter Routing-Gerät, denn in München kommt der Verkehr mit der Adresse dieses Geräts an.
    • Add Routing Device - wählen Sie router-muc-office, dann Continue. Lassen Sie Masquerade eingeschaltet, damit die Datenbank keinen Rückweg braucht, und wählen Sie Add Routing Device.

    Sie sehen: Die Zeile Munich office zeigt 1 resource, 1 device und site-fra. Das Frankfurter Routing-Gerät erreicht die Datenbank jetzt; für sein LAN folgen die Schritte 4 und 5.

  4. 4

    Frankfurt: das eigene Subnetz veröffentlichen

    Legen Sie Frankfurt office genauso an. Seine Rechner erreichen München nur, wenn ihr Routing-Gerät ihr Subnetz mit eingeschaltetem Masquerade bedient: Dann versieht es ihren Verkehr mit seiner eigenen Tunneladresse, und München lässt diese Adresse zu.

    • Add Resource - Name Frankfurt LAN, Address 10.30.0.0/24, Destination Groups fra-lan.
    • Create access rule - Quelle site-fra, any protocol. Eine Ressource wird erst bedient, wenn eine Regel sie nennt. Diese Regel öffnet nichts Neues: In site-fra ist nur das Routing-Gerät, und das sitzt ohnehin in diesem Subnetz.
    • Add Routing Device - router-fra-office, Masquerade an.

    Sie sehen: sxaccess info auf dem Frankfurter Routing-Gerät zeigt 10.30.0.0/24 unter Networks. Veröffentlichen Sie jedes Frankfurter Subnetz, dessen Rechner München erreichen sollen.

  5. 5

    Das Frankfurter LAN zu seinem Routing-Gerät leiten

    Die Frankfurter Rechner schicken Verkehr an Münchner Adressen noch an ihr übliches Gateway. Ergänzen Sie dort eine statische Route für genau das, was München veröffentlicht, über die LAN-Adresse des Routing-Geräts: hier 10.20.0.15/32 über 10.30.0.2. Routen Sie nichts anderes; das Routing-Gerät könnte es nur zurückschicken.

    Das Routing-Gerät antwortet dem Rechner direkt, am Gateway vorbei. Ist das Gateway eine Firewall, die solche Verbindungen verwirft, oder lässt es sich nicht ändern, legen Sie die Route stattdessen auf jedem Rechner an, unter Linux mit dem ersten Block nach diesen Schritten. Tragen Sie sie auch in die Netzwerkkonfiguration des Rechners ein, damit sie einen Neustart übersteht. München braucht keinen Rückweg.

    Laufen ufw oder Docker auf dem Frankfurter Routing-Gerät, erlauben Sie dort auch die Weiterleitung von der LAN-Schnittstelle in den Tunnel: Beide verwerfen weitergeleiteten Verkehr standardmäßig. Führen Sie dort mit ufw den zweiten Block nach diesen Schritten aus, mit Docker den dritten; eth0 steht darin für die LAN-Schnittstelle.

    Sie sehen: Ein Rechner in Frankfurt erreicht die Datenbank, wie unter Prüfen beschrieben.

shell - auf jedem Frankfurter Rechner, unter Linux, statt einer Route am Gateway
sudo ip route add 10.20.0.15/32 via 10.30.0.2
shell - auf dem Frankfurter Routing-Gerät, mit ufw
sudo ufw route allow in on eth0 out on sx0
shell - auf dem Frankfurter Routing-Gerät, mit Docker
sudo iptables -I DOCKER-USER -i eth0 -o sx0 -j ACCEPT
Die Seite „Networks“ im Reiter „Internal networks“ mit einem internen Netzwerk, der Zahl seiner Ressourcen, seinen Routing-Geräten und dem Hinweis „No access rule“.
Eine Zeile je internem Netzwerk, also je Standort. Diese zeigt „No access rule“: Solange keine Regel ihre Ressource nennt, ist nichts dahinter erreichbar.

Prüfen

Prüfen Sie von einem Rechner im Frankfurter LAN aus, auf dem kein Agent läuft: Für ihn ist dieser Aufbau gedacht.

Erwartetes Ergebnis

Von diesem Rechner aus verbindet sich nc -vz -w 5 10.20.0.15 5432 mit der Münchner Datenbank. Auf dem Frankfurter Routing-Gerät läuft nc -vz -w 5 10.20.0.15 22 in ein Timeout: Keine Regel nennt Port 22.

Dann die Richtung prüfen, die Sie nicht gewährt haben

Auf dem Münchner Routing-Gerät gibt sxaccess reach list die Meldung There are no networks to show. aus. Keine Regel lässt site-muc etwas erreichen.

Wenn es nicht funktioniert

Führen Sie die Befehle unten auf dem Frankfurter Routing-Gerät aus. Sie sehen: 10.30.0.0/24, das bediente Subnetz, unter Networks; das Münchner Routing-Gerät mit einem Eintrag unter Path und mit Reaches: 10.20.0.15/32; Munich database mit state: Selected; und eine Verbindung per nc. Gelingt all das dort, aber nicht auf einem Rechner dahinter, liegt es an der LAN-Seite: an der statischen Route, am veröffentlichten Subnetz oder an der Firewall des Routing-Geräts.

shell - auf dem Frankfurter Routing-Gerät
sxaccess infosxaccess info -dsxaccess reach listnc -vz -w 5 10.20.0.15 5432

Fehlersuche

Bei mehreren Standorten ist die erste Zeile weit häufiger die Ursache als sonst.

SymptomWahrscheinliche UrsacheAbhilfe
Der zweite Standort hat den ersten lahmgelegtZwei Standorte veröffentlichen überlappende Bereiche oder dieselbe Adresse.Listen Sie alle Bereiche auf, einschließlich des Tunnelbereichs, und nummerieren Sie einen Standort um. Schritt 1
Das Frankfurter Routing-Gerät erreicht die Datenbank, die Rechner dahinter nichtKeine statische Route; das Frankfurter Subnetz ist nicht veröffentlicht oder keine Regel nennt es; oder Masquerade ist aus.Schritte 4 und 5. sxaccess info auf dem Routing-Gerät muss das Subnetz unter Networks zeigen
Wie oben, aber das Subnetz wird angezeigtDie Firewall des Routing-Geräts verwirft, was es aus dem LAN in den Tunnel weiterleitet, wie ufw und Docker es standardmäßig tun.Der Block für ufw oder Docker nach Schritt 5
Ein Standort erreicht den anderen, umgekehrt nichtSo gewollt: Eine Regel mit einer Ressource als Ziel gilt nur in eine Richtung.Bauen Sie die Gegenrichtung wie unter Die Gegenrichtung in der erweiterten Konfiguration auf
Ein Routing-Gerät antwortet, dahinter nichtsDie IP-Weiterleitung wurde abgeschaltet, nachdem der Agent sie eingeschaltet hatte, etwa durch ein Neuladen der sysctl-Einstellungen.sysctl net.ipv4.ip_forward muss 1 ausgeben. sudo sxaccess agent restart schaltet sie wieder ein
Ein ganzer Standort ist verschwundenSein Routing-Gerät ist aus oder hat die Anbindung verloren.Devices zeigt es als offline an. Ein zweites Routing-Gerät verhindert das
Zwischen Standorten langsam, innerhalb eines Standorts schnellDie Routing-Geräte sind über ein Relay verbunden, meist wegen restriktiver Firewalls auf beiden Seiten.sxaccess info -d zeigt Path: Relayed. Siehe NAT und Konnektivität
Kommen Sie immer noch nicht weiter?Zerlegen Sie die Verbindung Stufe für Stufe.Nachvollziehen, warum eine Verbindung blockiert wird

Erweiterte Konfiguration

Wie ein Rechner ohne Agenten durchkommt

Dafür braucht es drei Dinge. Die statische Route (Schritt 5) schickt Münchner Adressen an das Frankfurter Routing-Gerät. Weil dieses Routing-Gerät das Frankfurter Subnetz mit eingeschaltetem Masquerade bedient (Schritt 4), bekommt der Verkehr seine Tunneladresse. Und das Münchner Routing-Gerät lässt nur Tunneladressen von Geräten aus den Quellgruppen einer Regel ein; daher site-fra als Quelle (Schritt 3).

Die Gegenrichtung

Sollen die Münchner Rechner etwas in Frankfurt erreichen, spiegeln Sie die Schritte 3 bis 5 in den vorhandenen Netzwerken. Fügen Sie diesen Dienst in Frankfurt office mit einer Regel von site-muc hinzu. Fügen Sie das Münchner Subnetz in Munich office mit einer Regel von site-muc hinzu, und setzen Sie die statische Route auf dem Münchner Gateway.

Für eine Ressource in einem bestehenden Netzwerk klicken Sie das Netzwerk an, wählen Add Resource und dann in der Spalte Access rules dieser Ressource Add Access rule. Es ist immer eine zweite Regel: Eine Regel mit einer Ressource als Ziel ist auf One-way festgelegt.

Ein dritter Standort

Wiederholen Sie die Schritte 2 bis 5. Ein klassisches Site-to-Site-VPN braucht einen Tunnel je Standortpaar, zehn bei fünf Standorten. Hier tritt jeder Standort einmal bei, braucht keine öffentliche Adresse und lässt die anderen Routing-Geräte unverändert. Ein bestehender Standort ändert sich nur, wenn seine Rechner den neuen erreichen sollen: um eine statische Route.

Redundanz je Standort

Ein zweites Routing-Gerät übernimmt, wenn das erste nicht mehr antwortet. Clients bevorzugen ein verbundenes Routing-Gerät, dann die kleinere Metric; der Standard ist 9999, der höchste Wert, geben Sie dem bevorzugten Gerät also eine kleinere Zahl. Rechner ohne Agenten folgen der statischen Route, nicht dem Wechsel: Geben Sie beiden Hosts eine gemeinsame Adresse, etwa per VRRP, und routen Sie dorthin.

Überlappende Bereiche, die sich nicht umnummerieren lassen

Dafür gibt es keinen sauberen Weg. Einzelne Rechner zu veröffentlichen, hilft nicht: Dieselbe Adresse an zwei Standorten kollidiert weiterhin, und eine Host-Ressource überdeckt diese Adresse auf jedem Client auch im Bereich eines anderen Standorts. Ein Linux-Gerät, dessen eigenes Netz die Adresse enthält, behält diesen Verkehr immer lokal. Die Lösung ist Umnummerieren.

Hub-and-Spoke und das Internet

Regeln nur zwischen jeder Filiale und dem Rechenzentrum ergeben Hub-and-Spoke, als bewusste Wahl und nicht als Grenze der Tunnel. Soll der gesamte Internetverkehr eines Geräts über einen Standort ins Internet gehen, nehmen Sie ein Internet-Gateway.

Verwandte Themen