cloudscaleKnowledge Base
Router für private Netze
Mit einem Router kannst du private Netze miteinander verbinden und ein Internet-Gateway einrichten. So erhalten deine privaten Netze Zugang zum Internet, bleiben durch die Netzsegmentierung aber weiterhin geschützt.
Funktionen
Internet-Gateway: Ein Router kann mithilfe von Source Network Address Translation (SNAT) als Internet-Gateway für private IPv4-Netze agieren. SNAT erlaubt es Geräten in privaten Netzen sich ins Internet zu verbinden, wobei Verbindungen vom Internet in das private Netz nicht möglich sind.
Da ein Internet-Gateway nur ausgehende Verbindungen erlaubt, müssen zusätzliche Massnahmen eingerichtet werden, um Zugang zu den Servern zu ermöglichen, zum Beispiel ein Jump-Host für SSH-Zugriff oder ein Load-Balancer, um Services verfügbar zu machen.
Routing zwischen privaten Netzen: Ein Router kann mit mehreren privaten Netzen verbunden werden. Diese können anschliessend automatisch miteinander kommunizieren.
Tooling
Unser Terraform-Provider, die Ansible-Collection sowie das Go-SDK unterstützen Router, sodass du diese als Code zusammen mit deinen anderen Ressourcen verwalten kannst. Du kannst Router auch direkt über unsere API konfigurieren – mehr Informationen findest du in unserer API-Dokumentation oder im untenstehenden Beispiel.
Limitierungen
Noch keine Verwaltung über das Control Panel: Router werden zwar im Billing-Bereich und im Interfaces-Tab von Netzen gelistet, können jedoch noch nicht über das Cloud Control Panel verwaltet werden.
Router können noch nicht geändert werden: Wenn du die Konfiguration eines Routers ändern möchtest, musst du einen neuen Router erstellen und den bestehenden damit ersetzen.
Die Gateway-Adresse eines Subnetzes darf nicht im DHCP-Bereich liegen: Du kannst ein Router-Interface mit einer Adresse im DHCP-Bereich erstellen, diese Adresse kann anschliessend aber nicht als Gateway-Adresse des Subnetzes gesetzt werden und somit auch nicht als Standardroute per DHCP verteilt werden. Aus diesem Grund empfehlen wir, die Adresse eines Router-Interfaces immer ausserhalb des DHCP-Bereichs festzulegen (z. B. 10.10.10.1 in einem 10.10.10.0/24 Subnetz), wenn du den Router als Internet-Gateway nutzen möchtest.
Internet-Gateway aufsetzen
Voraussetzungen:
- Ein Benutzerkonto bei cloudscale mit genügend Guthaben
- Ein Projekt mit einem API-Token (Lese- und Schreibzugriff)
# Ersetze <token> mit dem API-Token (Lese- und Schreibzugriff) deines Projektes
AUTH_HEADER="Authorization: Bearer <token>"
- Erstelle ein privates Netz mit einer MTU von 1500 (empfohlen für Netze, die ins Internet geroutet werden)
curl -i -H "$AUTH_HEADER" \
-F name="my-network-name" \
-F zone=lpg1 \
-F mtu=1500 \
-F auto_create_ipv4_subnet=false \
https://api.cloudscale.ch/v1/networks
# Ersetze <network-uuid> mit der UUID welche von der vorherigen Anfrage zurück gegeben wurde:
network_uuid="<network-uuid>"
curl -i -H "$AUTH_HEADER" \
-H "Content-Type: application/json" \
--data '{
"cidr": "10.10.10.0/24",
"gateway_address": "10.10.10.1",
"network": "'"$network_uuid"'"
}' \
https://api.cloudscale.ch/v1/subnets
# Ersetze <subnet-uuid> mit der UUID welche von der vorherigen Anfrage zurück gegeben wurde:
subnet_uuid="<subnet-uuid>"
- Erstelle einen Router in derselben Zone wie das Netz, wobei
internet_gatewayauftruegesetzt ist
curl -i -H "$AUTH_HEADER" \
-F name="my-internet-gateway" \
-F internet_gateway=true \
-F zone=lpg1 \
https://api.cloudscale.ch/v1/routers
# Ersetze <router-uuid> mit der UUID welche von der vorherigen Anfrage zurück gegeben wurde:
router_uuid="<router-uuid>"
- Erstelle und verbinde ein Router-Interface mit derselben IP-Adresse, die auch als
gateway_addressdes Subnetzes gesetzt ist
curl -i -H "$AUTH_HEADER" \
-H "Content-Type: application/json" \
--data '{
"network": "'"$network_uuid"'",
"addresses": [{
"subnet": "'"$subnet_uuid"'",
"address": "10.10.10.1"
}]
}' \
https://api.cloudscale.ch/v1/routers/$router_uuid/interfaces
- Erstelle einen Server, der mit dem privaten Netz verbunden ist
Hinweis: Dieser Server ist nicht via SSH erreichbar, ausser ein Jump-Host oder ein ähnlicher Mechanismus wird eingerichtet. Es kann jedoch ein Passwort gesetzt werden, um sich im Control Panel via VNC zu verbinden. Der Standard-Benutzername für das in diesem Setup verwendete Image (Debian 13) ist "debian".
# Ersetze <secret> mit einem Passwort (Debian 13 und ähnliche Images erfordern Setzen eines neuen Passwortes während der ersten Anmeldung):
secret="<secret>"
curl -i -H "$AUTH_HEADER" \
-H "Content-Type: application/json" \
--data '{
"name": "my-server-name",
"zone": "lpg1",
"flavor": "flex-4-2",
"image": "debian-13",
"volume_size_gb": 50,
"interfaces": [
{"network": "'"$network_uuid"'"}
],
"password": "'"$secret"'"
}' \
https://api.cloudscale.ch/v1/servers
- Verbinde dich mit dem Server via VNC (der Link befindet sich auf der Server-Detailansicht im Control Panel) und teste die Verbindung über das Internet-Gateway
# Der Server sollte über das Internet-Gateway auf cloudscale.ch zugreifen können
ping cloudscale.ch
# Falls installiert, kannst du mit traceroute überprüfen, ob die Pakete über das Internet-Gateway geroutet werden
traceroute cloudscale.ch
Der Server kann auf das Internet zugreifen, z. B. um Paketupdates zu beziehen, ist jedoch von aussen nicht erreichbar. Diese Isolation bietet eine zusätzliche Sicherheitsebene gegen Angriffe von aussen, da potenzielle Angreifer nicht auf das private Netz zugreifen können.