Ich habe gerade einen Knopf in der Leitung, weshalb ich mich an euch wende. Ich habe auf einem VPS mit Ubuntu 24.04 eine Server-Anwendung die auf http://127.0.0.1:9000 horcht. Der Client dazu befindet sich auf meinem PC zu Hause. Als Firewall benutze ich auf beiden Seiten ufw.
Jetzt habe ich Wireguard eingerichtet. Dabei nutzt Wireguard das Netzwerk 10.121.1.0/24. Der Server hat daraus die Adresse 10.121.1.1 und mein PC die Adresse 10.121.1.2. Horcht der Anwendungs-Server auf dem VPS auf alle Adressen, also z.B. auf http://0.0.0.0:9000, dann kann ich mit curl http://10.121.1.1:9000 problemlos über Wireguard auf die Anwendung zugreifen. Damit das soweit funktioniert habe ich in der ufw auf dem Server folgende Regeln gesetzt:
To Action From
-- ------ ----
51820/udp ALLOW Anywhere
10.121.1.1 9000/tcp on wg0 ALLOW Anywhere
Aber was, wenn meine Anwendung auf http://127.0.0.1:9000 hört? Bis jetzt habe ich das nicht hinbekommen.
Ich nutzte Wireguard schon vorher, aber da lief die Anwendung in einem LXD/LXC Container und ich konnte das Problem über das Forwarding an den Container lösen. Jetzt habe ich aber keine Ahnung, wie ich das so hinbekommen kann, dass der Port 9000 der über wg0 reinkommt sozusagen an 127.0.0.1:9000 weitergeleitet wird.
Die folgenden sysctl-Settings könnten noch von Bedeutung sein. Das sind die aktuellen Werte:
sysctl net.ipv4.ip_forward = 1
net.ipv4.conf.all.route_localnet = 0
route_localnet auf 1 zu setzen hat bisher nichts gebracht, deshalb habe ich es wieder auf die Vorgabe zurückgesetzt.
Auf dem VPS läuft übrigens ansonten noch gar nichts. Also kein Docker oder LXD oder sonstwas, das ufw oder iptables beeinflussen könnte.
Was hab ich noch nicht verstanden?