Encaminhando tráfego para IP específico usando IPTABLES

0

Estou lidando com 3 máquinas (VMs): -

A: -172.20.10.1 (cliente)

B: -172.20.10.2 (servidor original)

C: -172.20.10.5 (servidor de redirecionamento)

Agora eu quero que A visite B e B para encaminhá-lo para C.

Consegui fazer isso usando: -

iptables -t nat -A PREROUTING -p tcp --dport 80 -j DNAT --to-destination 172.20.10.5:80 iptables -t nat -A POSTROUTING -j MASQUERADE

Mas agora eu quero fazer isso para apenas um IP (IE) 172.20.10.1 a 172.20.10.5 quando ele tenta acessar 172.20.10.2. Eu já tentei A resposta aqui .

e Sim net.ipv4.ip_forward = 1também está definido.

Coding_Karma
fonte
1
Isso não pode funcionar, a menos que B seja o próximo salto de C para A. Caso contrário, C enviará diretamente sua resposta para A, o que é esperado uma resposta de B. Como tal, a resposta será tratada como tráfego não solicitado e descartada. Como isso é aparentemente sobre HTTP, você deseja implantar um proxy reverso?
Daniel B

Respostas:

0

adicione o seguinte à pré-rota

-s 172.20.10.1/32,172.20.10.2/31,172.20.10.4/31 
cybernard
fonte
0

Na cópia cruzada para unix.SE, eu respondi:

Basta adicionar algo para corresponder ao ip que você deseja que a regra corresponda:

iptables -t nat -A PREROUTING -s 172.20.10.1 -p tcp --dport 80 -j DNAT --to-destination 172.20.10.5:80

e o OP deixou um comentário dizendo simplesmente "Isso não funciona ...", ao qual devo perguntar: Como isso não funciona? O tráfego não é encaminhado ou o tráfego de outros clientes ainda é encaminhado ou ...?

Henrik
fonte
1
Comentei a pergunta para esclarecer por que isso não pode funcionar: C enviará diretamente sua resposta a A, que está esperando por B. O encaminhamento de porta só funciona em circunstâncias muito específicas. Basicamente em redes conectadas a todo o resto através de um roteador NAT e nada mais.
Daniel B
Fica um pouco complicado (e difícil de entender), mas adicionar uma rota para A via B em C pode resolvê-la (não estou planejando configurar três caixas apenas para testar isso).
Henrik