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.
| Was | Wozu | |
|---|---|---|
| Erforderlich | Die Rolle Owner oder Admin im Dashboard | Für die Registrierungsschlüssel |
| Erforderlich | Die Subnetze aller Standorte, gemeinsam notiert | Um zu belegen, dass keines kollidiert. Schritt 1 |
| Erforderlich | Je Standort ein dauerhaft laufender Linux-Host im LAN, mit iptables oder nftables und Root-Zugang | Das Routing-Gerät des Standorts: Es leitet den Verkehr für die Rechner ohne Agenten weiter |
| Erforderlich | Zugriff auf das LAN-Gateway jedes Standorts, dessen Rechner einen anderen Standort erreichen sollen, oder auf diese Rechner selbst | Eine statische Route zum Routing-Gerät |
| Erforderlich | Ein Rechner ohne Agenten in einem dieser LANs, für den Test | Der Nachweis, dass der Aufbau funktioniert |
| Optional | Ein zweiter Host je Standort | Redundanz, gesteuert über eine Metrik |
Bevor Sie beginnen
Jeder Standort veröffentlicht sich selbst. Die Regeln sitzen in der Mitte.
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
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/24erreichen 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 von100.64.0.0/10: Die Zeile Address vonsxaccess infozeigt 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.
- Die Subnetze aller Standorte. Keine zwei dürfen sich überschneiden: Ein Client, der
- 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 -
1Tag. Sie nutzen den Schlüssel gleich. - Auto-assigned groups - tippen Sie
site-mucein 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 mitrm -f /run/secrets/sxaccess-key.Sie sehen:
This device is now connected, danach beginntsxaccess infomitConnected, und der Host steht unter Devices insite-muc. Wiederholen Sie das in Frankfurt mit dem Schlüsselrouter-fra, der Gruppesite-fraund dem Hostnamenrouter-fra-office.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} - Name -
- 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 zeigtsxaccess reach listdie Ressource an. Address10.20.0.15. Destination Groups: Tippen Siemuc-databasesein 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 Siesite-fraals Quelle, dann TCP. Klicken Sie in das Port-Feld, tippen Sie5432ein 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 officezeigt1 resource,1 deviceundsite-fra. Das Frankfurter Routing-Gerät erreicht die Datenbank jetzt; für sein LAN folgen die Schritte 4 und 5. - Add Resource - Name
- 4
Frankfurt: das eigene Subnetz veröffentlichen
Legen Sie
Frankfurt officegenauso 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, Address10.30.0.0/24, Destination Groupsfra-lan. - Create access rule - Quelle
site-fra, any protocol. Eine Ressource wird erst bedient, wenn eine Regel sie nennt. Diese Regel öffnet nichts Neues: Insite-fraist nur das Routing-Gerät, und das sitzt ohnehin in diesem Subnetz. - Add Routing Device -
router-fra-office, Masquerade an.
Sie sehen:
sxaccess infoauf dem Frankfurter Routing-Gerät zeigt10.30.0.0/24unter Networks. Veröffentlichen Sie jedes Frankfurter Subnetz, dessen Rechner München erreichen sollen. - Add Resource - Name
- 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über10.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;
eth0steht darin für die LAN-Schnittstelle.Sie sehen: Ein Rechner in Frankfurt erreicht die Datenbank, wie unter Prüfen beschrieben.
sudo ip route add 10.20.0.15/32 via 10.30.0.2sudo ufw route allow in on eth0 out on sx0sudo iptables -I DOCKER-USER -i eth0 -o sx0 -j ACCEPT
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.
sxaccess infosxaccess info -dsxaccess reach listnc -vz -w 5 10.20.0.15 5432Fehlersuche
Bei mehreren Standorten ist die erste Zeile weit häufiger die Ursache als sonst.
| Symptom | Wahrscheinliche Ursache | Abhilfe |
|---|---|---|
| Der zweite Standort hat den ersten lahmgelegt | Zwei 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 nicht | Keine 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 angezeigt | Die 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 nicht | So 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 nichts | Die 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 verschwunden | Sein 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 schnell | Die 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.

