Você precisa fazer três coisas no seu servidor VPN (o Linode) para fazer isso funcionar:
-
Você deve ativar o encaminhamento de IP:
sysctl -w net.ipv4.ip_forward=1
-
Configure o NAT de destino (DNAT) para encaminhar a porta. Você provavelmente já percebeu isso porque é um padrão de encaminhamento de porta, mas para ser completo:
iptables -t nat -A PREROUTING -d x.x.x.x -p tcp --dport 6000 -j DNAT --to-dest y.y.y.100:6000
-
Configure NAT de origem (SNAT) para que, da perspectiva do seu cliente VPN, a conexão seja proveniente do servidor VPN:
iptables -t nat -A POSTROUTING -d y.y.y.100 -p tcp --dport 6000 -j SNAT --to-source y.y.y.1
O motivo pelo qual você precisa do SNAT é porque senão seu cliente VPN enviará seus pacotes de retorno diretamente para o host que iniciou a conexão (z.z.z.z) através de seu gateway padrão (ou seja, Verizon 3G), e não via VPN. Assim, o endereço IP de origem nos pacotes de retorno será o seu endereço 3G da Verizon, e não x.x.x.x. Isso causa todos os tipos de problemas, pois o z.z.z.z realmente iniciou a conexão com x.x.x.x.
Na maioria das configurações de encaminhamento de porta, o SNAT não é necessário porque o host que executa o encaminhamento de porta também é o gateway padrão para o host de destino (por exemplo, um roteador doméstico).
Observe também que, se você quiser encaminhar a porta 6000 para uma porta diferente (por exemplo, 7000), a regra SNAT deve corresponder a 7000, não a 6000.