Como fazer uma VM do Google Cloud encaminhar o tráfego do Minecraft para um cliente OpenVPN?

Como fazer uma VM do Google Cloud encaminhar o tráfego do Minecraft para um cliente OpenVPN?

Eu tenho uma rede OpenVPN atualmente configurada no modo "tap", com o Google VM como servidor e um cliente Raspberry Pi 3 executando um servidor Minecraft.

Atualmente, os usuários podem se conectar ao servidor Minecraft executando um cliente OpenVPN em suas máquinas e digitando o IP OpenVPN do Pi no cliente Minecraft (digamos, 10.8.0.2).

No entanto, quero permitir que os usuários acessem o servidor do Minecraft usando o IP externo do Google VM (sem a necessidade de instalar o OpenVPN). Os usuários não podem usar o endereço Pi diretamente por causa do NAT de camada dupla do ISP.

Eu tentei seguiresta resposta. Especificamente eu executei:

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

As interfaces da VM são eth0 e tap0. O encaminhamento de IP está habilitado no console.

O firewall do servidor está configurado para permitir tráfego de 0.0.0.0/0 TCP:25565 e UDP:25565

No entanto, ao tentar conectar-se usando o IP externo da VM do Google, recebo "tempo limite de conexão esgotado". NMAP me diz que a porta 25565 está "filtrada"

Informação adicional, 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

Responder1

Acho que o problema pode ser que você não está mascarando os pacotes que são roteados para o pi e nem todos os tráfegos do pi são roteados para o túnel.

Isso significa que embora os pacotes do mundo externo possam chegar ao pi, mas quando o pi responde a eles, os pacotes de resposta não são roteados primeiro para o Google VM (mas provavelmente são enviados diretamente aos clientes (como em seu gateway de Internet), que, portanto, não será reconhecido pelos clientes).

Além disso, se o pi tiver firewall filtrando os pacotes recebidos do túnel (de forma que apenas pacotes de outros hosts VPN sejam aceitos), os pacotes que não são mascarados como vindos da VM serão filtrados.

Portanto, você pode precisar de:

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

Responder2

Você pode abrir a porta no menu de nuvem do firewall do Google. E, depois de testar, se não funcionar te direi outra opção.

Cumprimentos

informação relacionada