Eigenes VPN bauen: kostenloser Cloud-Server in unter einer Stunde
Ein eigener VPN-Server bei Oracle Cloud kostet dauerhaft nichts und schützt deine Verbindung in fremden WLANs. Jeder Klick und jeder Befehl einzeln erklärt, ohne Vorkenntnisse. Am Ende baust du dir mit Emergent noch die passende Oberfläche dazu.
Was es kostet und wann es kostenlos bleibt
Oracle hat ein Gratis-Kontingent, das dauerhaft gilt und nicht abläuft: zwei kleine x86-Server, ein ARM-Kontingent von 1.500 Kern-Stunden und 9.000 GB-Stunden pro Monat, 200 GB Speicher und 10 TB ausgehender Datenverkehr im Monat.
Für ein VPN ist die letzte Zahl entscheidend. Ein Film in HD verbraucht grob 3 GB pro Stunde, das Kontingent entspricht also rund 3.300 Stunden HD-Video monatlich. Selbst zu zehnt bleiben rechnerisch über 300 Stunden pro Person.
Das Gratis-Kontingent gilt ausschließlich in deiner Heimatregion, dem einen Rechenzentrum, das du bei der Anmeldung auswählst. Ein zweites Land ist nicht kostenlos, auch nicht nach einem Wechsel auf ein Bezahlkonto: ein ARM-Server mit 1 Kern und 6 GB in einer zweiten Region kostet rund 14 US-Dollar im Monat.
Was damit geht und was nicht
Dein Server steht in einem Rechenzentrum, und manche Anbieter erkennen das an der Adresse.
Funktioniert: Schutz in fremden WLANs, deine Aktivität vor dem Internetanbieter verbergen, als das Land deines Servers erscheinen, und alle Streamingdienste, die Inhalte nach Land sperren, aber keine Rechenzentren aussperren. Dazu zählen CBC Gem, Crunchyroll, Tubi, Apple TV+ und die meisten öffentlich-rechtlichen Mediatheken weltweit.
Funktioniert nicht: Netflix, Disney+, Prime Video und Max. Diese vier lizenzieren Filme pro Land, sind vertraglich zum Sperren verpflichtet und kaufen Listen ein, auf denen jede Rechenzentrums-Adresse steht.
Bei YouTube kann es passieren, dass Videos ohne Anmeldung nicht abspielen. Mit dem Google-Konto anmelden, dann läuft alles normal.
Der Ablauf in Kürze
- Konto anlegen auf signup.oraclecloud.com. Kreditkarte ist Pflicht, auch fürs Gratis-Angebot. Vorher jedes VPN ausschalten, sonst lehnt Oracle die Anmeldung ab.
- Land wählen (Home Region). Diese Entscheidung ist endgültig und legt fest, als welches Land du erscheinst.
- Server anlegen: Ubuntu 22.04, Shape
VM.Standard.A1.Flexmit 1 Kern und 6 GB. BeiOut of host capacityaufVM.Standard.E2.1.Microwechseln. - SSH-Schlüssel herunterladen. Du bekommst ihn nur ein einziges Mal.
- Port freigeben: Networking, dann Virtual cloud networks, dein Netzwerk, Security Lists, Add Ingress Rules: Quelle
0.0.0.0/0, Protokoll UDP, Port 51820. - Terminal öffnen, verbinden, WireGuard installieren, Schlüssel erzeugen.
- Zwei Dateien schreiben: eine auf dem Server, eine auf deinem Gerät.
- Verbinden und prüfen über ipleak.net.
Die FORWARD-Regel, an der die meisten scheitern
Die drei PostUp-Zeilen der Serverdatei beginnen mit -I FORWARD 1, nicht mit -A. Der Unterschied ist ein Buchstabe und entscheidet über alles: die Ubuntu-Server von Oracle haben am Ende dieser Regelliste einen Eintrag, der jeglichen weitergeleiteten Verkehr blockiert. Mit -A landen deine Regeln dahinter und werden nie erreicht. Der Tunnel verbindet sich dann scheinbar, aber keine einzige Webseite lädt.
Warum MTU 1380
Viele deutsche Anschlüsse, Vodafone Kabel und teilweise Telekom, transportieren IPv4 innerhalb von IPv6 (DS-Lite). Dadurch passen nur etwa 1460 Byte pro Paket. Der sonst übliche Wert 1420 erzeugt zu große Pakete, die stillschweigend verworfen werden. Das Ergebnis ist tückisch: der Tunnel verbindet sich, kleine Anfragen laufen, aber Seiten laden ewig oder gar nicht. MTU = 1380 gehört in beide Dateien, notfalls 1280.
Prüfen, ob wirklich alles stimmt
Bei aktivem Tunnel ipleak.net aufrufen und drei Stellen ansehen:
- Ganz oben, deine Adresse: dort muss die IP deines Servers stehen und das Land, das du gewählt hast. Steht dort deine deutsche Adresse, ist der Tunnel nicht aktiv.
- In der Mitte, DNS Addresses: der Name deines Internetanbieters darf hier nicht auftauchen. Tut er es, fehlt in deiner Gerätedatei die Zeile
DNS = 1.1.1.1, und dein Anbieter sieht weiterhin jede Seite, die du besuchst. - Rechts, der IPv6-Test: „not reachable" ist hier kein Fehler, sondern gewollt. Erscheint stattdessen eine Adresse, die mit 2a00 oder 2003 beginnt, fehlt der Zusatz
::/0bei AllowedIPs.
Die Oberfläche mit Emergent
Für jedes neue Gerät musst du sonst Schlüssel im Terminal erzeugen und Text zusammenkopieren. Genau das packst du in eine kleine Web-Oberfläche, gebaut mit Emergent, ohne selbst zu programmieren.
Ein Punkt vorweg, der über Erfolg oder Frust entscheidet: eine Website im Browser kann keinen VPN-Tunnel aufbauen. Dafür braucht es Administratorrechte im Betriebssystem. Sagst du das nicht ausdrücklich dazu, baut dir jede KI-Plattform bereitwillig einen schicken „Verbinden"-Knopf, der nichts tut. Deshalb steht dieser Satz gleich im ersten Prompt.
Emergent baut in erster Linie Anwendungen. Stellst du einfach nur eine Frage, kann es passieren, dass es ein Projekt anlegt, statt zu antworten. Deshalb beginnt jeder Prompt mit „Antworte mir direkt hier im Chat, baue keine App". Diesen Satz nicht herauslöschen.
Die Oberfläche bauen lassen
Für jedes neue Gerät musst du sonst Schlüssel im Terminal erzeugen und Text zusammenkopieren. Die drei Oberflächen-Prompts bauen daraus eine kleine Web-Oberfläche in Emergent: Rahmen setzen, bauen lassen, nachprüfen. Der dritte ist der wichtigste und der, den fast alle weglassen.
Eine Website im Browser kann keinen VPN-Tunnel aufbauen, dafür braucht es Administratorrechte im Betriebssystem. Sagst du das nicht ausdrücklich dazu, baut dir jede KI-Plattform bereitwillig einen „Verbinden"-Knopf, der nichts tut. Deshalb steht dieser Satz gleich im ersten Prompt. Die Oberfläche erzeugt Konfigurationen, verbinden tust du danach mit der offiziellen WireGuard-App.
Von der Oberflaeche zum laufenden Tunnel
Die Oberflaeche gibt dir pro Geraet zwei Dinge: die Geraetedatei und einen Peer-Block. Die Geraetedatei gehoert auf dein Geraet, der Peer-Block auf den Server. Erst wenn beide an ihrem Platz sind, kommt eine Verbindung zustande. Emergent selbst fasst deinen Server nie an.
Alle Prompts zum Kopieren
Antworte mir bitte direkt hier im Chat. Baue keine App und lege kein Projekt an - ich brauche nur eine Einschaetzung. Ich richte nach einer Anleitung einen eigenen WireGuard-VPN-Server bei Oracle Cloud ein und muss jetzt die Heimatregion auswaehlen. Diese Wahl ist endgueltig, und kostenlos ist ausschliesslich diese eine Region. Meine Situation: - Ich wohne in: [LAND, STADT EINFÜGEN] - Ich will das VPN vor allem fuer: [z. B. Sicherheit in fremden WLANs / im Ausland als mein Heimatland erscheinen / Zugriff auf mein Heimnetz] - Videocalls oder Spiele ueber die Verbindung: [ja/nein] Gib mir genau drei Dinge: 1. Die eine Region, die du empfiehlst - mit dem exakten Namen, wie er im Auswahlmenue von Oracle steht, im Format "Germany Central (Frankfurt)". 2. Eine Ausweichregion, falls meine erste Wahl ausgebucht ist. 3. In zwei Saetzen: warum diese Region - und was ich mir damit an Nachteilen einhandle. Zwei Regeln fuer deine Antwort: - Nenne keine konkreten Millisekunden-Werte, wenn du sie nicht sicher weisst. Sag stattdessen "nah", "mittel" oder "weit". - Wenn dir eine Angabe von mir fehlt, frag nach, statt zu raten.
Antworte mir bitte direkt hier im Chat. Baue keine App und lege kein Projekt an. Begleite mich Schritt fuer Schritt beim Aufbau meines eigenen WireGuard-VPN-Servers auf einer Oracle-Cloud-Instanz mit Ubuntu 22.04. Mein Stand: [WAS SCHON STEHT, z. B. "Konto und Server angelegt, SSH-Schluessel heruntergeladen" oder "noch gar nichts"] Mein Computer: [WINDOWS ODER MAC] So arbeitest du mit mir: - Ein Schritt pro Nachricht, nicht mehr. Warte nach jedem Schritt auf meine Antwort. - Gib mir pro Schritt genau einen Befehl zum Kopieren, dazu einen Satz, was er bewirkt, und sag mir, welche Ausgabe ich erwarten soll. - Ich schicke dir die Ausgabe zurueck. Pruefe sie, bevor es weitergeht. Sieht sie falsch aus, sag das und nenne den naechsten Befehl zur Eingrenzung, statt einfach fortzufahren. - Frag mich nie nach einem privaten Schluessel. Nutz Platzhalter wie SERVER_PRIVAT, die echten Werte trage ich selbst ein. Diese Vorgaben sind nicht verhandelbar: - Tunnelnetz 10.66.1.0/24, der Server ist 10.66.1.1, das erste Geraet ist 10.66.1.2. - WireGuard auf UDP-Port 51820. - MTU = 1380 in jeder Datei, Server wie Geraete. Nicht 1420: viele deutsche Anschluesse fahren DS-Lite, dort werden groessere Pakete stillschweigend verworfen. - Die FORWARD-Regeln mit "-I FORWARD 1" einfuegen, niemals mit "-A". Grund: Die Ubuntu-Abbilder von Oracle haben am Ende der FORWARD-Kette eine REJECT-Regel. Angehaengte Regeln stehen dahinter und greifen nie. Der Tunnel verbindet sich dann, aber keine Webseite laedt. - Der Port muss zusaetzlich in der Oracle Security List als Ingress-Regel offen sein: Quelle 0.0.0.0/0, Protokoll UDP, Port 51820. Erinnere mich daran, bevor wir zum ersten Mal testen. Zum Schluss fuehrst du mich durch die Pruefung auf ipleak.net und sagst mir, worauf ich bei angezeigter Adresse, DNS-Servern und IPv6 achten muss. Fang mit Schritt 1 an.
Antworte mir bitte direkt hier im Chat. Baue keine App und lege kein Projekt an - ich brauche fertige Textdateien zum Kopieren. Ich richte einen WireGuard-VPN-Server auf Ubuntu 22.04 bei Oracle Cloud ein und brauche die Konfigurationsdateien dafuer. Meine Angaben: - Name der Netzwerkkarte des Servers: [z. B. ens3] - Tunnelnetz: 10.66.1.0/24, der Server selbst ist 10.66.1.1 - Anzahl Geraete, die ich anbinden will: [ANZAHL EINFÜGEN] Diese Vorgaben sind nicht verhandelbar, halte dich exakt daran: - MTU = 1380 in JEDER Datei, Server wie Geraete. - Die beiden FORWARD-Regeln mit "-I FORWARD 1" einfuegen, niemals mit "-A". Grund: Die Ubuntu-Abbilder von Oracle haben am Ende der FORWARD-Kette eine REJECT-Regel. Angehaengte Regeln stehen dahinter und greifen nie. - In jeder Geraetedatei: AllowedIPs = 0.0.0.0/0, ::/0 - In jeder Geraetedatei: DNS = 1.1.1.1 - In jeder Geraetedatei: PersistentKeepalive = 25 - Jedes Geraet bekommt eine eigene Adresse, beginnend bei 10.66.1.2. - Setz fuer alle Schluessel Platzhalter ein, zum Beispiel SERVER_PRIVAT. Erzeuge keine echten Schluessel und frag mich auch nicht danach - die trage ich selbst ein. Ausgabeformat, bitte genau so: 1. Die Serverdatei wg0.conf als ein einziger Codeblock, ohne Erklaertext dazwischen. 2. Danach pro Geraet eine eigene Datei als eigener Codeblock, benannt geraet1.conf, geraet2.conf und so weiter. 3. Danach eine Tabelle mit drei Spalten: Platzhalter | wo er hingehoert | woher ich den Wert bekomme. Zum Schluss pruefst du deine eigene Ausgabe und bestaetigst mir jeden dieser vier Punkte einzeln mit Ja oder Nein: - Steht in jeder einzelnen Datei MTU = 1380? - Steht in beiden FORWARD-Zeilen "-I FORWARD 1" und nicht "-A"? - Hat wirklich jedes Geraet eine andere Adresse? - Gibt es in der Serverdatei fuer jedes Geraet genau einen [Peer]-Block? Wenn einer der Punkte nicht stimmt, korrigier ihn, bevor du mir antwortest.
Antworte mir bitte direkt hier im Chat. Baue keine App und lege kein Projekt an. Mein selbst gebauter WireGuard-VPN-Server bei Oracle Cloud (Ubuntu 22.04) funktioniert nicht richtig. Was genau passiert: [FEHLER BESCHREIBEN - z. B. "verbunden, aber keine Webseite laedt" oder "es kommt gar keine Verbindung zustande"] Ausgabe von "sudo wg show": [HIER EINFÜGEN] Ausgabe von "sudo iptables -L FORWARD -n --line-numbers": [HIER EINFÜGEN] Mein Internetanschluss zu Hause: [z. B. Vodafone Kabel Deutschland] So ist es eingerichtet: MTU 1380, Tunnelnetz 10.66.1.0/24, WireGuard auf UDP-Port 51820, Ingress-Regel in Oracle ist angelegt. Arbeite diese drei Punkte in genau dieser Reihenfolge ab und sag mir zu jedem klar Ja oder Nein: 1. Zeigt "wg show" einen aktuellen Handshake? Wenn nein, liegt das Problem VOR dem Tunnel: Port, Firewall oder ein falscher Schluessel. Dann brauchen wir die anderen Punkte gar nicht. 2. Stehen meine ACCEPT-Zeilen in der FORWARD-Kette OBERHALB der REJECT-Zeile? Wenn sie darunter stehen, wird weitergeleiteter Verkehr verworfen. 3. Steigen bei "wg show" beide Uebertragungswerte oder nur einer? Wenn viel gesendet und kaum etwas empfangen wird, deutet das auf zu grosse Pakete hin, also auf die MTU. Nenne mir danach die EINE wahrscheinlichste Ursache und genau einen Befehl, mit dem ich sie bestaetige. Wenn dir die Ausgaben dafuer nicht reichen, sag das offen und nenne mir den naechsten Befehl, dessen Ausgabe du brauchst. Rate nicht.
Ich möchte mit dir eine Web-Oberfläche bauen, mit der ich die Konfigurationsdateien für meinen eigenen WireGuard-VPN-Server verwalte. Wichtig, bevor du irgendetwas baust: Eine Website im Browser kann keinen VPN-Tunnel aufbauen, dafür braucht es Administratorrechte im Betriebssystem. Baue deshalb keinen "Verbinden"-Knopf, der so tut, als würde er eine Verbindung herstellen. Die Oberfläche soll Konfigurationen erzeugen und verwalten. Verbinden tue ich anschließend mit der offiziellen WireGuard-App. Stell mir jetzt Fragen, bis du verstanden hast, was ich brauche: wie viele Geräte, welche Angaben ich schon habe, was auf dem Handy funktionieren muss. Frag in kleinen Schritten, nicht alles auf einmal. Fang noch nicht an zu bauen.
Danke, jetzt bauen wir. Erstelle eine Web-Oberfläche mit diesen Funktionen: 1. Ich hinterlege einmalig meinen Server: öffentliche IP-Adresse, Port 51820 und den öffentlichen Schlüssel des Servers. 2. Ich lege Geräte an (Laptop, Handy, Tablet). Jedes Gerät bekommt ein eigenes Schlüsselpaar und eine eigene Adresse im Netz 10.66.1.0/24, beginnend bei 10.66.1.2. 3. Für jedes Gerät erzeugst du eine Konfiguration in exakt diesem Format: [Interface] PrivateKey = privater Schlüssel des Geräts Address = Adresse/32 DNS = 1.1.1.1 MTU = 1380 [Peer] PublicKey = öffentlicher Schlüssel des Servers Endpoint = Server-IP:51820 AllowedIPs = 0.0.0.0/0, ::/0 PersistentKeepalive = 25 4. Jede Konfiguration kann ich als .conf-Datei herunterladen und als QR-Code anzeigen. Der QR-Code muss exakt den Text der Konfiguration enthalten und sonst nichts, weil die WireGuard-App genau diesen Text erwartet. 5. Zusätzlich zeigst du mir pro Gerät den passenden Peer-Block für meine Serverdatei mit einem Kopier-Knopf. Die Schlüssel müssen echte Curve25519-Schlüssel sein, wie WireGuard sie verlangt: 32 Byte, Base64-kodiert, 44 Zeichen lang.
Bevor ich das benutze, prüfe deine eigene Umsetzung und antworte mir ehrlich auf jeden Punkt einzeln: 1. Sind die erzeugten Schlüssel echte Curve25519-Schlüssel mit 44 Zeichen, oder ist es Zufallstext, der nur so aussieht? 2. Gehört zu jedem privaten Schlüssel der passende öffentliche? Erklär mir, wie du ihn ableitest. 3. Enthält der QR-Code exakt den Konfigurationstext, ohne zusätzliche Zeichen oder Umbrüche? 4. Verlässt irgendein privater Schlüssel mein Gerät, zum Beispiel durch Speichern auf einem Server oder Senden an eine Schnittstelle? 5. Gibt es irgendwo einen Knopf oder eine Anzeige, die einen aktiven VPN-Schutz behauptet, den die Seite gar nicht herstellen kann? Wenn einer dieser Punkte nicht sauber ist, sag es mir klar und korrigiere ihn.
Danke! Magst du kurz sagen, was am meisten geholfen hat? (optional)
Danke. Was hat gefehlt? (optional)