Eu tenho uma situação de rede da seguinte forma:
-server1:1.1.1.1
-server2:2.2.2.2
-tunnel 10.8.0.0/24
-client: 3.3.3.3
Estou tentando fazer com que o cliente IP 3.3.3.3
faça uma solicitação HTTP
do 1.1.1.1 server
. No entanto, quero que o 1.1.1.1
server passe esse pedido para o verdadeiro HTTPD
server 2.2.2.2
. O servidor 2.2.2.2
reside na outra extremidade do meu túnel e tem IP
de 10.8.0.6
. Desejo que o tráfego seja encaminhado de client > server1 > tunnel > server2
e, em seguida, volte a server2 < tunnel < server 1 < client
.
Eu testei várias regras para iptables
, mas parece que não consigo funcionar corretamente.
Em server1
, originalmente eu tinha:
iptables -A INPUT -s 3.3.3.3/32 -j ACCEPT
e, em seguida, insira as seguintes regras nat
:
iptables -t nat -A PREROUTING -i tun0 -d 3.3.3.3 -j DNAT --to-destination 10.8.0.6
iptables -t nat -A POSTROUTING -s 10.8.0.6 -j SNAT --to-source 3.3.3.3
O resultado foi que 3.3.3.3
continuou atingindo 1.1.1.1
e 1.1.1.1
ainda respondiam e não repassavam a solicitação para 2.2.2.2
pelo túnel.
Eu tentei remover a regra iptables -A INPUT -s 3.3.3.3/32 -j ACCEPT
, achando que talvez a regra estivesse sendo lida primeiro na lista de tabelas, deixando assim 1.1.1.1
reply desde que a regra veio antes das regras nat
, mas esse não foi o caso. Eu removi a regra e todo o tráfego de 3.3.3.3
para 1.1.1.1
parou, o que eu temia que acontecesse e aconteceu.
Como escrevo uma regra que permite que 3.3.3.3
fale com 2.2.2.2
, mas mantenha o roteamento de tráfego de volta por 1.1.1.1
?
Obrigado
Tags networking iptables linux