engelbert85
Goto Top

UDP-Port weiterleiten über Wireguard

Guten Abend zusammen,


Mit meinem Vodafone LTE Anschluss gibt es für mich leider keine öffentliche IP-Adresse, das das Ganze hinter einem NAT steckt.
Aus diesem Grund habe ich mir einen Ionos VPS besorgt, über den alles laufen sollte was von außen zugänglich sein soll.

Leider bin ich dabei an meine Grenzen gestoßen.

Geplant war, die einzelnen zu öffnenden Ports über einen SSH Tunnel an die jeweiligen Proxmox Container und VM's weiterzuleiten.
Was anfangs auch ganz gut geklappt hat. Bis mir dann aufgefallen ist, dass nur TCP Ports getunnelt werden können.

Der Plan war anschließend das Ganze mit Wireguard zu realisieren. Dabei habe ich es bisher aber auch nur geschafft TCP Ports weiterzuleiten.
Bei der Weiterleitung von UDP Ports bin ich bis jetzt gescheitert.

Folgende iptables werden in der Wireguard config beim VPS verwendet (Bisher nur als Test):

PostUp = iptables -A FORWARD -i ens192 -o wg0 -p tcp --syn --dport 80 -m conntrack --ctstate NEW -j ACCEPT
PostUp = iptables -A FORWARD -i ens192 -o wg0 -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
PostUp = iptables -A FORWARD -i wg0 -o ens192 -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
PostUp = iptables -t nat -A PREROUTING -i ens192 -p tcp --dport 80 -j DNAT --to-destination 172.16.0.2
PostUp = iptables -t nat -A POSTROUTING -o wg0 -p tcp --dport 80 -d 172.16.0.2 -j SNAT --to-source 172.16.0.1
PostUp = iptables -A FORWARD -i ens192 -o wg0 -p udp --dport 1802 -m conntrack --ctstate NEW -j ACCEPT
PostUp = iptables -t nat -A PREROUTING -i ens192 -p udp --dport 1802 -j DNAT --to-destination 172.16.0.3
PostUp = iptables -t nat -A POSTROUTING -o wg0 -p udp --dport 1802 -d 172.16.0.2 -j SNAT --to-source 172.16.0.1

PostDown = iptables -D FORWARD -i ens192 -o wg0 -p tcp --syn --dport 80 -m conntrack --ctstate NEW -j ACCEPT
PostDown = iptables -D FORWARD -i ens192 -o wg0 -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
PostDown = iptables -D FORWARD -i wg0 -o ens192 -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
PostDown = iptables -t nat -D PREROUTING -i ens192 -p tcp --dport 80 -j DNAT --to-destination 172.16.0.2
PostDown = iptables -t nat -D POSTROUTING -o wg0 -p tcp --dport 80 -d 172.16.0.2 -j SNAT --to-source 172.16.0.1
PostDown = iptables -D FORWARD -i ens192 -o wg0 -p udp --dport 1802 -m conntrack --ctstate NEW -j ACCEPT
PostDown = iptables -t nat -D PREROUTING -i ens192 -p udp --dport 1802 -j DNAT --to-destination 172.16.0.3
PostDown = iptables -t nat -D POSTROUTING -o wg0 -p udp --dport 1802 -d 172.16.0.3 -j SNAT --to-source 172.16.0.1


Auf den Clients werden diese iptables verwendet:

PostUp = iptables -t nat -A POSTROUTING -s 172.16.0.0/24 -o eth0 -j MASQUERADE
PostDown = iptables -t nat -D POSTROUTING -s 172.16.0.0/24 -o eth0 -j MASQUERADE


Ich würde gerne zwei OpenVPN Instanzen lokal auf meinem Proxmox Server betreiben. Bitte keine Kommentare über die Sinnhaftigkeit, ich bin mir selbst bewusst, dass sowas etwas speziell ist.
Zudem würde da noch Nextcloud dazu kommen. Dies stellt allerdings kein Problem dar, da ich die TCP Ports getunnelt bekomme.

OpenVPN "lauscht" auf dem Testcontainer mit der IP 172.16.0.3 am Port 1802. Eine nginx Testseite bei 172.16.0.2 hört auf Port 80, was auch funktioniert.
Die Ports sind mit UFW freigegeben.


Springt jemandem von euch da ein offensichtlicher Fehler ins Auge? Habe ich irgendwas übersehen?
Gibt es vielleicht eine elegantere Lösung?

Wäre über jeden Tipp dankbar.


Beste Grüße
Engelbert

Content-Key: 2164503348

Url: https://administrator.de/contentid/2164503348

Printed on: April 25, 2024 at 10:04 o'clock

Mitglied: 148523
148523 Mar 14, 2022 updated at 19:59:40 (UTC)
Goto Top
Member: Engelbert85
Engelbert85 Mar 14, 2022 at 21:10:16 (UTC)
Goto Top
Danke Dir! Einige davon kenne ich schon, aber nicht alle.

Ich geh die mal durch und schau mal wo der Wurm drin ist.
Member: Visucius
Visucius Mar 15, 2022 at 05:02:17 (UTC)
Goto Top
Wenn Du nicht weiterkommst, probier mal zerotier. Ich mach damit u.a. rdp zu nem LTE (Vodafone) Server.
Member: Engelbert85
Engelbert85 Mar 15, 2022 updated at 18:50:54 (UTC)
Goto Top
Guten Abend zusammen,

schonmal vielen Dank für Eure Zeit und Hilfe, leider scheinen die Anleitungen nicht genau das wiederzugeben was ich suche.

Die VPN Verbindung mittels Wireguard steht ja, das ist kein Problem. ich krieg auch allen Traffic weitergeleitet, dafür gibts genug Anleitungen u.A. die hier.
Das Hauptproblem ist die Weiterleitung der Ports.

Bei den oben gezeigten Tutorials wird teilweise einfach alles weitergeleitet, was nicht ganz das ist was ich möchte. Einzelne Ports sollen an einzelne Geräte weitergeleitet werden.

Das Alles mit einer pfSense zu erschlagen ist auch ein bisschen mit Kanonen auf Spatzen geschossen. Zudem kommt da noch das Problem dazu, dass die pfSense auf Proxmox laufen würde und der WAN Port das FritzBox Netz wäre. Dies erschwert den Zugriff auf die Weboberfläche. Hat mich schon einige Nerven gekostet.
Das mit der 2.2.2.2 IP-Adresse aus dem pfSense Tutorial habe ich auch nicht ganz verstanden. Mir liegt nur eine IP vom Ionos Server vor.


Konkret wäre also folgende Frage zu klären;
Was läuft bei meinen iptables schief?


Beste Grüße
Mitglied: 148523
Solution 148523 Mar 16, 2022 updated at 15:02:14 (UTC)
Goto Top
dafür gibts genug Anleitungen u.A.
Die jibbet hier im Forum ooch.
Einzelne Ports sollen an einzelne Geräte weitergeleitet werden.
Das geht mit stinknormalem Port Forwarding ala Eingangsport --> lokale Ziel IP und Zielport
Mir liegt nur eine IP vom Ionos Server vor.
Das kann nicht sein wenn da Wireguard drauf rennt. Genau wie OpenVPN nutzt Wireguard eine eigenes IP Netz für das interne Client Server VPN Netz, sprich die Verbindung der WG Clients zum WG Server. Das ist wie bei OVPN ein eigenes IP Netz. Man hat also bei diesen VPN Protokollen immer mindestens 2 IP Netze !
Member: Engelbert85
Solution Engelbert85 Mar 19, 2022 at 07:53:34 (UTC)
Goto Top
Guten Morgen zusammen,


der Fehler wurde gefunden.
Ich war hier auf nem guten Weg, allerdings mit ein paar kleinen Fehlern.

Mit folgenden iptables hat es funktioniert.

Server (IONOS):
PostUp = iptables -A FORWARD -i ens192 -o wg0 -p tcp --syn --dport 80 -m conntrack --ctstate NEW -j ACCEPT
PostUp = iptables -A FORWARD -i ens192 -o wg0 -p udp --dport 1802 -m conntrack --ctstate NEW -j ACCEPT
PostUp = iptables -A FORWARD -i ens192 -o wg0 -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
PostUp = iptables -A FORWARD -i wg0 -o ens192 -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
PostUp = iptables -t nat -A PREROUTING -i ens192 -p tcp --dport 80 -j DNAT --to-destination 192.168.0.42
PostUp = iptables -t nat -A POSTROUTING -o wg0 -p tcp --dport 80 -d 192.168.0.42 -j SNAT --to-source 172.16.0.1
PostUp = iptables -t nat -A PREROUTING -i ens192 -p udp --dport 1802 -j DNAT --to-destination 192.168.0.3
PostUp = iptables -t nat -A POSTROUTING -o wg0 -p udp --dport 1802 -d 192.168.0.3 -j SNAT --to-source 172.16.0.1

PostDown = iptables -D FORWARD -i ens192 -o wg0 -p tcp --syn --dport 80 -m conntrack --ctstate NEW -j ACCEPT
PostDown = iptables -D FORWARD -i ens192 -o wg0 -p udp --dport 1802 -m conntrack --ctstate NEW -j ACCEPT
PostDown = iptables -D FORWARD -i ens192 -o wg0 -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
PostDown = iptables -D FORWARD -i wg0 -o ens192 -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
PostDown = iptables -t nat -D PREROUTING -i ens192 -p tcp --dport 80 -j DNAT --to-destination 172.16.0.2
PostDown = iptables -t nat -D POSTROUTING -o wg0 -p tcp --dport 80 -d 192.168.0.42 -j SNAT --to-source 172.16.0.1
PostDown = iptables -t nat -D PREROUTING -i ens192 -p udp --dport 1802 -j DNAT --to-destination 192.168.0.3
PostDown = iptables -t nat -D POSTROUTING -o wg0 -p udp --dport 1802 -d 192.168.0.3 -j SNAT --to-source 172.16.0.1

Client (Proxmox Container):

PostUp = iptables -t nat -A POSTROUTING -s 172.16.0.0/24 -o eth0 -j MASQUERADE

PostDown = iptables -t nat -D POSTROUTING -s 172.16.0.0/24 -o eth0 -j MASQUERADE


Ein herzliches Dankeschön für eure Hilfe.

Machts gut und beste Grüße
Engelbert