É possível traduzir um IP público para IP privado usando iptables?

1

Sou um monte de hosts na nuvem com IPs privados e públicos. Até agora, eu podia acessar todos os hosts publicamente e de qualquer maneira que eu quisesse. Agora, quero desabilitar algum acesso a todos esses hosts do lado de fora e configurar uma VPN.

Eu criei um servidor VPN e tudo funciona bem - posso ver minha rede interna com facilidade. Existe esse problema que estou enfrentando agora. Todos os hosts estão sendo acessados via DNS público e esse DNS tem 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), eu quero que o servidor o traduza para 10.1.0.6 (10.1.0.5).

É possível via 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
    
por Gasim 04.07.2017 / 23:37

1 resposta

2

Intercepte o tráfego e direcione para um IP usando o iptables

iptables -t nat -I PREROUTING -d 5.6.7.8 -j DNAT --to-destination 10.1.0.6
iptables -t nat -I PREROUTING -d 1.2.3.4 -j DNAT --to-destination 10.1.0.5

iptables -t nat -I POSTROUTING -o eth1 -j MASQUERADE

No seu exemplo, você estava tentando encaminhar o tráfego na regra OUTPUT e é muito tarde na decisão de roteamento. Neste exemplo, suponho que sua interface de saída seja eth1. Certifique-se de ter acesso ao console para este dispositivo no caso de você se trancar através de uma configuração incorreta ou com base na falta de informações trocadas entre nós.

    
por 05.07.2017 / 00:35