Eu um monte de hosts na nuvem com IPs privados e públicos. Até agora, eu podia acessar todos os hosts publicamente e da maneira que quisesse. Agora, quero desabilitar algum acesso a todos esses hosts de fora e configurar uma VPN.
Criei um servidor VPN e tudo funciona bem - consigo ver minha rede interna facilmente. Há um problema que estou enfrentando agora. Todos os hosts estão sendo acessados via DNS público e este DNS possui IPs públicos para todos os hosts.
Eu quero uma maneira de traduzir todos os IPs públicos para IPs privados. Por exemplo, digamos que eu tenha 2 hosts com os seguintes IPs:
Host 1:
Private IP: 10.1.0.5
Public IP: 1.2.3.4
Host 2:
Private IP: 10.1.0.6
Public IP: 5.6.7.8
Se eu acessar 5.6.7.8 (1.2.3.4), quero que o servidor traduza para 10.1.0.6 (10.1.0.5).
É possível através do iptables? Eu tentei o seguinte até agora, mas nada mudou:
iptables -t nat -A OUTPUT -d 5.6.7.8 -j DNAT --to-destination 10.1.0.6
Interceptar tráfego e rotear para um IP usando iptables
No seu exemplo, você estava tentando rotear o tráfego na
OUTPUT
regra e é tarde demais na decisão de roteamento. Neste exemplo, estou assumindo que sua interface de saída é eth1. Certifique-se de ter acesso ao console a este dispositivo caso você se bloqueie devido a uma configuração incorreta ou com base na falta de informações trocadas entre nós.