EDIT: Ich kann einen kleinen Erfolg melden! Zum Testen habe ich mal das olle Chat-GPT angeschmissen und nach Skript-Änderungen gefragt, und siehe da, es klappt! Ich werde jetzt noch etwas am Skript feilen und meinen Lösungsweg dann posten!
Ah, okay. Den zusätzlichen Wert des Interface werde ich mal mit einbauen beim tcpdump. Ich werd’s morgen mal testen.
Und danke dir nochmal, dass du mir hier versuchst zu helfen! Tut mir leid, dass sich das hier so in die Länge zu ziehen scheint
Schritt 2:
Skript auf dem VPS erstellen, um Anfragen, die auf der öffentlichen IP des VPS eingehen, durch den VPN-Tunnel ins Heimnetzwerk zum gewünschten Zielgerät zu leiten.
Skript
#!/bin/bash
# Variablen
NAS_IP="192.168.178.63"
VPS_WIREGUARD_IP="172.31.0.1"
INTERFACE="ens6"
WIREGUARD_INTERFACE="wg0"
TCP_PORTS="5555 6666 4444"
UDP_PORTS="3333 8888 7777"
# Erlaube IPv4 Forwards
sed -i 's/#net\.ipv4\.ip_forward=1/net.ipv4.ip_forward=1/' /etc/sysctl.conf && sysctl -p
# IPTables bereinigen
iptables -t nat -F
iptables -F
# Erstelle IPTables INPUT Regeln
iptables -A INPUT -i $INTERFACE -p tcp --dport 22 -j ACCEPT
iptables -A INPUT -i $INTERFACE -p udp --dport 51820 -j ACCEPT
iptables -A INPUT -p icmp -j ACCEPT
iptables -P INPUT DROP
# Erstelle IPTables NAT Regeln für TCP und UDP
for PORT in $TCP_PORTS $UDP_PORTS; do
PROTOCOL="tcp"
if [[ $UDP_PORTS =~ (^| )$PORT($| ) ]]; then
PROTOCOL="udp"
fi
iptables -t nat -A PREROUTING -i $INTERFACE -p $PROTOCOL --dport $PORT -j DNAT --to-destination $NAS_IP:$PORT
iptables -t nat -A POSTROUTING -o $WIREGUARD_INTERFACE -d $NAS_IP -p $PROTOCOL --dport $PORT -j SNAT --to-source $V>
done
# Erstelle Forward Regeln für TCP und UDP
iptables -P FORWARD DROP
for PORT in $TCP_PORTS $UDP_PORTS; do
iptables -A FORWARD -i $INTERFACE -o $WIREGUARD_INTERFACE -p tcp --dport $PORT -j ACCEPT
iptables -A FORWARD -i $INTERFACE -o $WIREGUARD_INTERFACE -p udp --dport $PORT -j ACCEPT
done
# Bereits laufende Verbindungen werden nicht von Firewall blockiert
iptables -A FORWARD -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
Zu beachten war hierbei noch (für mich), dass über die Web-GUI des Anbieters die Ports aus dem Skript in der Firewall geöffnet werden.