DIY Lernprojekte
Aufgeschlossen bleiben und Neues erlernen, ist die beste Voraussetzung, um sich anzupassen, wenn die Welt sich ändert.
Was man heute dafür benötigt, sind
- ein Computer,
- ein Internetzugang und
- Zeit, um sich Wissen anzulesen.
Und noch mehr Zeit, um neues Wissen auszuprobieren. Und noch mehr Zeit, um zu scheitern. Und noch mehr Zeit, um aus Fehlern zu lernen.
Hier habe ich ein paar Beispiele dokumentiert, die keinen besonderen Anspruch verfolgen, für mich jedoch eine kleine Dokumentation darstellen, falls ich das eine oder andere wiederholen möchte.
- Details
- Category: DIY Lernprojekte
Zielsetzung
Weil es über jeden Internetprovider der CGN nutzt, wie Deutsche Glasfaser, prinzipiell nicht funktionieren kann IPv4 Ports an der Fritzbox zu öffnen um Homeserver Webdienste aus dem Internet zu erreichen und sich der Bedarf mit einsatz von proxmox vervielfacht hat. Benötigen wir eine dauerhafte, kostengünstige Lösung.
Mit einem, für kleines Geld gemieteten Virtuelen Privaten Server (VPS) erschaffen wir unseren eigenen, Firewall geschützten Winguard VPN "Zugangspunkt" im öffentlichen Internet.
Unser Homeserver, der eine seine Dienste im öffentlichen Internet anbieten soll, wird beim Server Start eine sichere VPN / Wireguard Verbindung zu unsem Internet Server aufbauen und über diesen Tunnel seine Dienste an seiner spezifischen Subdomain, der zum Internetserver gehörenden Domain, anbieten.
Einsatzscenarion OWT, Minecraft Gameserver oder was eben geplant wird.
Vorbereitungen
Internet Server
Im IONOS Kunden Panel die Domain aktivieren und Sub-Domains erstellen.
Die Domain und auch die Sub-Domains müssen auf die IP des Internet Servers verweisen. Dies ist zur Ersteinrichtung nicht der Fall. Wenn Du Deine neue Internetdomain im Browser öffnest, wird eine IONOS Standard Seite angezeigt, die nicht von Deinem IONOS Server kommt. Dies wird über den DNS Eintrag Record A als Standard für alle neuen Domains gesetzt.
Nun muss der Standard A Record (DNS Eintrag) für Deine Domain und die Sub-Domains deaktiviert werden und jeweils ein neuer A Record zur richtigen Internet Server IPv4 Adresse angelegt werden.
Internet Server Firewall Regeln
Die Provider Firewall hat nur wenige Ports geöffnet. Wir wollen die IP anpingen und Wireguart benötigt einen offenen, von uns definierten Kommunikationsport.
Hierzu erweitern wir die vorhandene Firewall Konfiguration um zwei neue Regeln.
- eingehend von allen IP - UDP- Port 51820 - für Wireguard Server listener
- eingehend von allen IP - ICMP - ermöglicht ping Antwort
FritzBox 7590
Das Heimnetz hinter der FrittzBox hat einen privaten IP Adressbereich und die Heimserver eine IP Adresse aus diesem Heimnetz.
Mein Heimserver (Ubuntu Linux) hat die Adresse 192.178.168.98 .
Beide Server bekommen über die Wireguard Installation eine weitere virtuelle Netzwerkkarte mit je einer IP Adresse aus einem völlig anderen (privaten) IP Adressbereich, damit sie direkt (im VPN Tunnel) miteinander kommunizieren können.
Transfernetz IP
- Internet Server = 172.31.0.1
- Heimserver A = 172.31.0.2
Einrichten
Einrichten einer Statischen Route zwischen Heimnetz IP Adressbereich und Transfernetz IP Adressbereich.
Öffne die FritzBox Konsole, -> Heimnetz -> Netzwerk
klicke auf Tab Netzwerkeinstellungen und scrolle runter, klicke unter Tabelle für statische Routen auf IPv4-Routen und dann auf Neue IPv4-Route:
- Netzwerk: 172.31.0.1
- Subnetzmaske: 255.255.255.0
- Gateway: 192.168.178.98
Fertigstellen / speichern.
Imlementierung Wireguard
Im folgenden wird den Internet Server zum Wireguard Server der Verbindungen von (konfigurierten) Wireguard Clients annehmen kann. Der Wireguard Client wird auf unserem Homeserver installiert. Dieser ist in der nachfolgenden Beschreibung also der Client.
Schritt 1 für Server & Client
Dieser Schritt muss auf dem Internet Server und dem Heimserver ausgeführt werden:
apt update
apt install wireguard
Editor öffnen
nano /etc/sysctl.conf
Entferne in Zeile "net.ipv4.ip_forward=1" die führenden Raute #
Speichern mit CTRL + O
Editor verlassen mit CTRL + X
sysctl -p
Schlüssel generieren und schützen
Die umask wird auf 077 gesetzt, um alle anderen User außer root den Zugriff zu verweigern.
cd /etc/wireguard/
umask 077; wg genkey | tee privatekey | wg pubkey > publickey
Privaten Schlüssel anzeigen
cat privatekey
Den angezeigten Schlüssel kopieren (in Dein Notiz Dokument)
Öffentlichen Schlüssel anzeigen
cat publickey
Den angezeigten Schlüssel kopieren (in Dein Notiz Dokument)
chmod 600 /etc/wireguard/privatekey
Schritt 2 nur für Server
Dieser Schritt wird nur auf dem Internet Server durchgeführt.
In diesem Schritt wird die Wireguard Konfigurationsdatei auf dem Wireguard Server, unserem Internet Server, erstellt.
Zunächst müssen wir den Systemlink zur Netzwerkkarte des Internetservers identifizieren. Mit folgenden Befehl erzeugen wird einen Output der uns weiterhilft:
ip a
Nachfolgend habe ich in der Ausgabe meine Internet Servers den wichtigen Teil markiert, damit Ihr das in der Ausgabe Eurers Servers nachvollziehen könnt:
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host noprefixroute
valid_lft forever preferred_lft forever
2: ens6: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether 02:01:b4:3b:f0:8a brd ff:ff:ff:ff:ff:ff
altname enp0s6
inet 84.165.142.144/32 metric 100 scope global dynamic ens6
valid_lft 406sec preferred_lft 406sec
inet6 fe80::1:a4ff:fe3a:e08c/64 scope link
valid_lft forever preferred_lft forever
Mit der gewonnenen Interface Information müssen wir die Zeilen PostUP und PostDown in der nachfolgenden Konfiguration an den rot markierten Stellen anpassen.
Anstelle eth02 könnte in Eurem System auch eth0 oder etwas völlig anderes stehen.
Wireguard Konfigurationsdatei anlegen
nano /etc/wireguard/wg0.conf
Den folgenden Inhalt müsst Ihr an den farbigen Stellen für Euch anpassen:
[Interface] PrivateKey = privater-Schlüssel des Wireguard Servers (Internet Server) Address = 172.31.0.1/32 SaveConfig = true PostUp = iptables -A FORWARD -i wg0 -j ACCEPT; iptables -t nat -A POSTROUTING -o eth02 -j MASQUERADE PostDown = iptables -D FORWARD -i wg0 -j ACCEPT; iptables -t nat -D POSTROUTING -o eth02 -j MASQUERADE ListenPort = 51820
Speichern mit CTRL + O
Verlassen mit CTRL + X
Schritt 2 nur für Client
In diesem Schritt wird die Wireguard Konfigurationsdatei auf dem Wireguard Client, unserem Heimserver A, erstellt. Dieser Schritt wird nur auf dem Homeserver A durchgeführt.
nano /etc/wireguard/wg0.conf
[Interface] PrivateKey = Privater Schlüssel des Wireguard Clients (Heimserver) Address = 172.31.0.2/32 DNS = 8.8.8.8 [Peer] PublicKey = Öffentlicher Schlüssel des Wireguard Servers (Internet Server) Endpoint = Internet Server IP oder (Sub-)Domain:51820 AllowedIPs = 0.0.0.0/0 PersistentKeepalive = 25
Speichern mit CTRL + O
Verlassen mit CTRL + X
Schritt 3 nur auf dem SERVER ausführen
wg set wg0 peer <öffentlicher Schlüssel des CLIENTEN> allowed-ips 172.31.0.2/32
Schritt 4 für Server & Client
Starten des VPN Netzes:
wg-quick up wg0
Nun können wir den Status der Verbindung anzeigen mit
wg
wg gibt den status der Verbindung aus.
Wenn keine Verbindung aufgebaut wurde, bleibt die Ausgabe leer.
Schritt 5: Autostart Server und Client
Der VPN Tunnel soll automatisch mit dem System starten:
systemctl enable wg-quick@wg0
nach dem NEUSTART des Servers
systemctl status wg-quick@wg0
zeigt ob der service geladen wurde und wg wie oben beschrieben gibt den Status der Verbindung aus.
Inspiration:
https://ubuntu.com/server/docs/introduction-to-wireguard-vpn
https://schroederdennis.de/tutorial-howto/wireguard-vpn-server-installieren-client-to-server/
https://gist.github.com/lanceliao/5d2977f417f34dda0e3d63ac7e217fd6#file-wg-client1-conf
- Hits: 53
- Details
- Category: DIY Lernprojekte
Inspiration:
https://docs.cftools.cloud/en/omegamanager/linux
- Hits: 59
- Details
- Category: DIY Lernprojekte
Inspiration
IONOS Virtual Private Server
https://www.ionos.de/server/vps
Losgelegt
Weil aus der online Beschreibung bei IONOS nicht hervorgeht ob es eine IPv4 Adresse gibt, sie reden nur über IPv6, habe ich mal nachgefragt.
Ergebnis: Nun bin ich Besitzer eines (weiteren) Virtuellen Privaten Servers. Und einer (weiteren) Domain.
Gut das hätte ich auch bei meinem Kooperationspartner bekommen aber der hat sicher besseres zu tun als immer diesen killefitt von mir, Spaß.
Der Kundenchat konnte alle Fragen klären und hat mir alles fertig gemacht inklusive 30 Rückgaberecht bei nichtgefallen ...ich konnte nicht widerstehen.
Warum
Es geht darum den Nachteil meiner schnellen Glasfaseranbindung, das Provider Grade NATing welches im Heimnetz betriebene und aus dem Internet erreichbare Services (OwnTracks, GameServer, etc.) verhindert, zu umgehen bzw. auszugleichen. Damit es eben doch funktioniert.
Lösungsszenario
Homeserver A B und C sind auf einem Client im LAN, auf dem Proxmox als Virtualisierungsschicht läuft, als VM (virtuelle Maschine) oder CT (Conainer) virtualisiert und haben eine feste IP. Oder in der FritzBox ist angehakt das diesem Client jeweils die gleiche IP Adresse im Heimnetz über DHCP zugeteilt wird.
Jeder (virtualisierte) Heimserver eröffnet beim Start eine verschlüsselte Wireguard Verbindung zu einem (kleinen) Internet Server auf, der über eine öffentliche IPv4 Adresse und Internet Domain verfügt. Diese Verbindung wird vom Heimserver aufrecht erhalten und beim Heimserver Neustart automatisch hergestellt.
Jedem Heimserver ist eine Sub-Domain zugeordnet, beispielsweise minecraft.meine-domain.de .
In der Fritzbox (Heimnetz Internet Router an Deutsche Glasfaser Anschluss) ist eine statische Route zur Netzkopplung eingerichtet.
Wen der jeweilige Heimserver läuft sind seine Dienste über die definierten Ports an der jeweiligen Sub-Domain im Internet erreichbar.
Kosten
Beauftragt bei IONOS:
VPS Linux XS
1 Monate MVLZ 30 Tage Geld-Zurück-Garantie
1,– €/Mon.
Einrichtungsgebühr 10,– €
Server Add-On Deutschland 0,– €/Mon.
ubuntu 24.04 (latest) (0.00 per month)
Inklusive
Domains MEine-Domain.de
On-Domain 0,08 €/Mon. für 12 Monate,
dann 1,30 €/Mon.
12 Monate im Voraus
Heutige Rechnung 12,– €
monatliche Betriebskosten ab 13. Monat: 2,30 Euro
- Hits: 62
- Details
- Category: DIY Lernprojekte
Das Internet Protokoll Version 4 stellt nur eine begrenzte Anzahl an öffentlichen IP Adressen (IPv4) zur Verfügung.
Da der Bedarf deutlich größer ist, wurde IPv6 entwickelt. Dieses ist noch nicht flächendeckend etabliert, so das Internet Provider auf "Zwischenlösugen" setzen.
Wer auf schnelles Internet, z.b. bei der Deutschen Glasfaser gesetzt und seinen funktionierenden DSL Anschluß abschalten ließ, hat (fast) keine Change.
Carrier Grade Network Adress Translation
Von Wiki: https://de.wikipedia.org/wiki/Carrier-grade_NAT
Carrier-grade NAT (CGN oder CGNAT; deutsch NAT auf Betreiber-Ebene), auch bekannt als large-scale NAT (LSN) ist ein Entwurf für ein IPv4-Netzwerkdesign, welches Endstellen (meistens private Netzwerke) mit speziellen privaten IPv4-Adressen ausstattet, um diese dann über ein NAT-Verfahren auf Betreiber-Ebene in öffentliche IPv4-Adressen zu übersetzen. Dies soll einen Pool von wenigen IP-Adressen für viele Endnutzer nutzbar machen.
AVM Hilfe:
Zugriff nur mit öffentlicher IP-Adresse möglich
Der Zugriff über das Internet auf Geräte im FRITZ!Box-Heimnetz ist nur möglich, wenn die FRITZ!Box beim Herstellen der Internetverbindung vom Internetanbieter eine öffentliche IPv4-Adresse oder eine IPv6-Adresse erhält.
Zugriff über IPv4
Für IPv4-Internetzugriffe muss die FRITZ!Box vom Internetanbieter eine öffentliche IPv4-Adresse erhalten. Wenn die FRITZ!Box eine private IPv4-Adresse erhält, ist ein Zugriff über IPv4 nicht möglich.
Adressbereich der IP-Adresse bestimmen
- Rufen Sie die Benutzeroberfläche der FRITZ!Box auf.
- Prüfen Sie auf der Seite "Übersicht", welche IP-Adresse im Abschnitt "Verbindungen" in der Zeile "Internet" bzw. "Internet IPv4" angezeigt wird.
- Wenn eine IP-Adresse aus einem der folgenden Bereiche angezeigt wird, verfügt die FRITZ!Box eine IP-Adresse aus dem privaten Adressbereich und ist im Internet über IPv4 nicht erreichbar:
- 10.0.0.0 - 10.255.255.255
- 100.64.0.0 - 100.127.255.255 (Carrier-grade NAT)
- 172.16.0.0 - 172.31.255.255
- 192.0.0.0 - 192.0.0.7 (Dual-Stack-Lite)
- 192.168.0.0 - 192.168.255.255
- Wenn eine IP-Adresse aus einem anderen Bereich angezeigt wird, verfügt die FRITZ!Box über eine IP-Adresse aus dem öffentlichen Adressbereich und ist im Internet über IPv4 erreichbar.
- Wenn die Meldung "FRITZ!Box verwendet einen DS-Lite-Tunnel" angezeigt wird, verfügt die FRITZ!Box über keine öffentliche IPv4-Adresse und ist im Internet über IPv4 nicht erreichbar.
Fazit
All die kleinen "Internet Service" Projekte wie Minecraft und andere Gaming Server, My Own Tracks OWT und viele andere sind über eine einfache Portfreigabe an der Fritzbox leider nicht möglich.
Es sei denn, wir evaluieren einen Reverse Proxy auf einer VM im Internet die Anfragen über einen Wireguard Tunnel auf den Server (VM) im Heimnetz durchreicht.
Und schon haben wir das nächste Projekt :-)
- Hits: 67
- Details
- Category: DIY Lernprojekte
Für manche Anwendungen ist der Betrieb eines Windows Servers erforderlich. Wenn die Proxmox Hardware ausreichend dimensioniert ist sollte auch das kein Problem sein.
Da mir aktuell der Anwendungsfall fehlt, setze ich einfach das Thema Gameserver weiter um. Mit dem Linux basierten Dayz Server hatte ich mich bereits auseinander gesetzt und dabei entdeckt, das es für Windows einen "Omega-Server-Manager" gibt. Diesen möchte ich nun antesten.
Das Windows Server Betriebssystem bekommen wir freundlicher Weise kostenlos von Microsoft zur Verfügung gestellt.
Zu Evaluationszwecken bietet Microsoft das ISO Installationsfile hier zum download an:
https://www.microsoft.com/en-us/evalcenter/download-windows-server-2019
180 Tage nach Erstinstallation läuft die Testlizenz ab, was für (m)einen ausgedehnten Test mehr als ausreichend ist.
Hier geht es zur Omega Installationsanleitung:
https://help.cftools.com/en/omega-manager/installation-windows-server
Hier gibt es den Omega Manager zum download:
https://cdn.cftools.de/om/OmegaManager.exe
Proxmox vorbereiten
Als erstes die ISO Datei von Microsoft downloaden und im proxmox Manager unter Storage local (pve) hochladen.
In proxmox eine neue VM erstellen und WinServer ISO verwenden.
Ich starte mit 80GB, 4 CPU und 12GB Ram
klick -fertig
Windows Server 2019 installieren
Bei der automatisch startenden Installation muss man sich zwischen der Konsolen Version und dem grafischen Frontend entscheiden. Ich nehme letztere weil ich diese für die Anwendung benötige.
Installation durchlaufen lassen - fertig.
Anstatt über proxmox die VM Konsole zu öffnen, bietet sich bei Windows Maschinen die Remote Desktop Funktion an. Look & feel ist bei einem skalierbaren Fenster einfach besser.
Damit ist die Windows Server Betriebssystem Installation auch schon durch.
OmegaManager installieren
Die Installationsroutine des Omega Managers installiert zunächst Abhängigkeiten wie MS-DiretX und C++.
Im Anschluss öffnet sich eine Editor mit der "manager.cfg" Konfigurationsdatei. Hier eigenen Steam Benutzer / PW an die richtige Stelle eintragen und abspeichern.
Neustart.
OmegaManager.exe ausführen
DirectX Komponenten werden nachgeladen
C++ Setup - auf reparieren klicken
Es öffnet sich erneut ein Editor mit der manager.cfg aus dem erstellten Omega Verzeichnis auf dem Desktop.
Editor schließen und diese Datei mit der vom Desktop ersetzen.
Neustart
OmegaManager.exe ausführen
Leider funktioniert das Ganze erst nach dem kompletten Abschalten des Steam Account Guard Systems. Daher nur ein zeitlich beschränkter Test.
Wenn alles klappt ist der OmegaManager (als Sicherheitsmaßnahme) ausschließlich vom lokal auf dem Windows Server ausgeführten Webbrowser unter http://127.0.0.1:8081 erreichbar.
"Naturlich" ist der mit installierte Internet Explorer nicht unterstützt und muss z.b. durch Chrome ersetzt werden. Dann geht auch das.
Fertig
Gameserver mit OmegaManager Web-Frontend erstellen & konfigurieren
Nun, dazu gibt es viele Anleitung zu finden, es ist jedoch selbsterklärend.
Ein Gameserver wird mit Mausklick erstellt und auch genauso gemodded. klickklick
Fazit
Tatsächlich ist es so einfach, das es schon etwas entäuschend ist, nachdem ich viele Stunden an der Linux Variante gelernt hatte. Sogar das kopieren der Schlüßeldateien ist automatisiert. Schöne Sache wenn es schnell gehen soll, einen Game Server - für eine LAN Party aufzusetzen. lol, macht das noch jemand???
Das Einzige was mir negativ auffällt ist, das der Workshop download unter Windows Server mit OmegaManager mega deutlich langsamer funktioniert als mit dem Linux Game Server. Minuten unter Linux werden hier buchstäblich zu Stunden.
Das ein Windows Server deutlich mehr Hardware ressourcen nimmt - ist auch klar.
...
- Hits: 75