IPTables - Encaminhamento para o Cliente Anexado, mas mantém o IP de origem

1

Este é o meu cenário:

Eu tenho um VPS que tem dois endereços IP e está executando o OpenVPN (endereço IP do servidor OpenVPN: 10.1.2.1). Desejo encaminhar todo o tráfego recebido em um endereço para o cliente VPN (10.1.2.2).

Aqui estão as duas regras que estou usando no momento:

iptables -t nat -A PREROUTING -i venet0 -p ALL -d <EXTERNAL IP #1> -j DNAT --to-destination 10.1.2.2
iptables -t nat -A POSTROUTING -o tun0 -j MASQUERADE

Isso funciona. Eu posso encaminhar a solicitação para o cliente VPN e consumir os serviços hospedados pelo cliente VPN. No entanto, tenho outro serviço que precisa saber o verdadeiro endereço IP da solicitação do INCOMING-CLIENT. Quando eu faço da maneira acima mencionada, o cliente VPN acha que o cliente de entrada tem um endereço IP de 10.1.2.1, que é o endereço IP do servidor OpenVPN.

Eu tentei muitas soluções, incluindo a substituição do MASQUERADE por ...

iptables -t nat -A POSTROUING -o tun0 -s 10.1.2.2 -j SNAT --to-source <EXTERNAL IP #1>

mas isso não funciona. Todos os pedidos são interrompidos.

Minha arquitetura de rede está usando apenas o venet0 e o tun0, que é o túnel OpenVPN. Sugestões sobre como obter o verdadeiro endereço IP do público-cliente seriam muito apreciadas. Obrigado.

Trecius

    
por Trecius Veil 13.06.2016 / 21:28

1 resposta

1

Parece que você não deveria estar usando nem SNAT nem MASQUERADE. Qualquer uma das opções resultará em NAT duplo, impedindo que ambas as extremidades conheçam o IP real da outra extremidade. O NAT sempre quebrará esse conhecimento em pelo menos uma direção.

Se o servidor na outra extremidade de tun0 usar seu roteador para sua rota padrão, ele deverá retornar o tráfego de volta ao seu roteador, onde o DNAT pode ser desfeito para o tráfego de retorno.

Uma opção alternativa, pelo menos para HTTP, é executar um proxy no seu servidor. O proxy deve adicionar ou ampliar o cabeçalho X-Forwarded-For. Isso conterá um ou mais endereços identificando o endereço para o qual o tráfego foi encaminhado. Você pode confiar no endereço IP que você adiciona. Outros endereços podem ser falsificados.

    
por 14.06.2016 / 02:26