IPTables - Encaminhando para cliente conectado, mas mantendo o IP de origem

IPTables - Encaminhando para cliente conectado, mas mantendo o IP de origem

Aqui está o meu cenário:

Eu tenho um VPS que possui dois endereços IP e está executando o OpenVPN (Endereço IP do servidor OpenVPN: 10.1.2.1). Quero 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 ATUALMENTE:

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. Posso encaminhar a solicitação para o cliente VPN e consumir os serviços hospedados pelo cliente VPN. Porém, tenho outro serviço que precisa saber o endereço IP VERDADEIRO da solicitação do INCOMING-CLIENT. Quando faço isso da maneira mencionada acima, o cliente VPN pensa que o cliente de entrada tem um endereço IP 10.1.2.1, que é o endereço IP do servidor OpenVPN.

Eu tentei muitas soluções, incluindo substituir o 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. Todas as solicitações simplesmente travam.

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

Trécio

Responder1

Parece que você não deveria usar 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 do outro lado tun0usar seu roteador como rota padrão, ele deverá retornar o tráfego de volta ao seu roteador, onde o DNAT poderá 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 estender o cabeçalho X-Forwarded-For. Este conterá um ou mais endereços que identificam o endereço para o qual o tráfego foi encaminhado. Você pode confiar no endereço IP adicionado. Outros endereços podem ser falsificados.

informação relacionada