Wie kann man eine Google Cloud-VM dazu bringen, Minecraft-Verkehr an einen OpenVPN-Client weiterzuleiten?

Wie kann man eine Google Cloud-VM dazu bringen, Minecraft-Verkehr an einen OpenVPN-Client weiterzuleiten?

Ich habe derzeit ein OpenVPN-Netzwerk im „Tap“-Modus eingerichtet, mit der Google VM als Server und einem Raspberry Pi 3-Client, auf dem ein Minecraft-Server läuft.

Benutzer können derzeit eine Verbindung zum Minecraft-Server herstellen, indem sie einen OpenVPN-Client auf ihren Computern ausführen und die OpenVPN-IP des Pi in den Minecraft-Client eingeben (z. B. 10.8.0.2).

Ich möchte Benutzern jedoch den Zugriff auf den Minecraft-Server über die externe IP der Google-VM ermöglichen (ohne dass OpenVPN installiert werden muss). Benutzer können die Adresse des Pi aufgrund des Double-Layer-NAT des ISPs nicht direkt verwenden.

Ich habe versucht,diese Antwort. Konkret habe ich Folgendes ausgeführt:

iptables -A PREROUTING -t nat -i eth0 -p tcp --dport 25565 -j DNAT --to-destination 10.8.0.2:25565
iptables -A FORWARD -p tcp -d 10.8.0.2 --dport 25565 -j ACCEPT
iptables -A POSTROUTING -t nat -s 10.8.0.2 -o eth0 -j MASQUERADE

Die Schnittstellen der VM sind eth0 und tap0. Die IP-Weiterleitung ist in der Konsole aktiviert.

Die Server-Firewall ist so eingestellt, dass Datenverkehr von 0.0.0.0/0 TCP:25565 und UDP:25565 zugelassen wird.

Wenn ich jedoch versuche, eine Verbindung über die externe IP der Google-VM herzustellen, erhalte ich die Meldung „Verbindung abgelaufen“. NMAP sagt mir, dass Port 25565 „gefiltert“ ist.

Zusätzliche Information, iptables-save:

# Generated by iptables-save v1.6.0 on Thu Sep 26 11:42:02 2019
*nat
:PREROUTING ACCEPT [106:35257]
:INPUT ACCEPT [75:15902]
:OUTPUT ACCEPT [111:6692]
:POSTROUTING ACCEPT [6:328]
-A PREROUTING -i eth0 -p tcp -m tcp --dport 25565 -j DNAT --to-destination 10.8.0.3:25565
-A PREROUTING -i eth0 -p udp -m udp --dport 25565 -j DNAT --to-destination 10.8.0.3:25565
-A PREROUTING -i eth0 -p tcp -m tcp --dport 25565 -j DNAT --to-destination 10.8.0.3:25565
-A PREROUTING -i eth0 -p udp -m udp --dport 25565 -j DNAT --to-destination 10.8.0.3:25565
-A PREROUTING -d 35.197.47.71/32 -p tcp -m tcp --dport 25565 -j DNAT --to-destination 10.8.0.3:25565
-A PREROUTING -d 35.197.47.71/32 -p udp -m udp --dport 25565 -j DNAT --to-destination 10.8.0.3:25565
-A PREROUTING -i eth0 -p tcp -m tcp --dport 25565 -j DNAT --to-destination 10.8.0.3:25565
-A PREROUTING -i eth0 -p tcp -m tcp --dport 25565 -j DNAT --to-destination 10.8.0.3:25565
-A POSTROUTING -s 10.0.0.0/8 -o eth0 -j MASQUERADE
-A POSTROUTING -s 10.0.0.0/8 -o eth0 -j MASQUERADE
-A POSTROUTING -s 10.8.0.3/32 -o eth0 -j MASQUERADE
-A POSTROUTING -s 10.8.0.2/32 -o eth0 -j MASQUERADE
COMMIT
# Completed on Thu Sep 26 11:42:02 2019
# Generated by iptables-save v1.6.0 on Thu Sep 26 11:42:02 2019
*filter
:INPUT ACCEPT [1822:367429]
:FORWARD ACCEPT [13:700]
:OUTPUT ACCEPT [1610:231716]
-A FORWARD -d 10.8.0.2/32 -p tcp -m tcp --dport 25565 -j ACCEPT
COMMIT
# Completed on Thu Sep 26 11:42:02 2019

--list-rules:

-P INPUT ACCEPT
-P FORWARD ACCEPT
-P OUTPUT ACCEPT
-A FORWARD -d 10.8.0.3/32 -p tcp -m tcp --dport 25565 -j ACCEPT

Antwort1

Ich denke, das Problem könnte darin liegen, dass Sie die an den Pi weitergeleiteten Pakete nicht maskieren und nicht der gesamte Datenverkehr vom Pi in den Tunnel weitergeleitet wird.

Dies bedeutet, dass Pakete aus der Außenwelt den Pi zwar erreichen können, die Antwortpakete jedoch nicht zuerst an die Google VM weitergeleitet werden, wenn der Pi darauf antwortet (sondern wahrscheinlich direkt an die Clients gesendet werden (also über das Internet-Gateway) und daher von den Clients nicht erkannt werden).

Auch wenn der Pi über eine Firewall verfügt, die eingehende Pakete aus dem Tunnel filtert (so dass nur Pakete von anderen VPN-Hosts akzeptiert werden), werden Pakete gefiltert, die nicht als von der VM stammend getarnt sind.

Daher benötigen Sie möglicherweise:

iptables -t nat -A POSTROUTING -d 10.8.0.x -o tap0 -j MASQUERADE

Antwort2

Sie können den Port im Cloud-Menü der Firewall von Google öffnen. Und wenn es nach dem Testen nicht funktioniert, schlage ich Ihnen eine andere Option vor.

Grüße

verwandte Informationen