Redirecionamento de portas com Iptables


Nessa dica eu gostaria de apresentar o modo de redirecionamento de porta usando o Iptables.

Podemos imaginar uma rede que possui um firewall e um servidor Web, sendo que o servidor Web está dentro da subnet usando IP inválido.

Suposições:

IP Servidor Web: 172.16.0.2
IP Firewall (Iface interna): 172.16.0.1
IP Firewall (Iface externa): 200.200.200.200
Porta que será redirecionada: 80

Mão na massa:

1° passo: vamos criar uma regra para tratar o pacote quando ele chega no firewall.

iptables -t nat -A PREROUTING -d 200.200.200.200 -p tcp –dport 80 -j DNAT –to 172.16.0.2:80

O que essa regra faz?
Quando o pacote chega na interface externa para o IP 200.200.200.200, o firewall irá fazer um NAT no pacote para que ele tenha um novo destino, o IP 172.16.0.2. Mas isso só ocorrerá quando a requisição for para a porta 80.

Gostaria também de explicar o motivo que deixei no argumento para DNAT, nós temos “–to 172.16.0.2:80”, note que novamente mencionamos a porta, nesse caso isso não é necessário, mas também não há problema, a idéia é que a porta de destino não precisa necessariamente ser a mesma da porta onde foi feita a requisição no firewall. O servidor Web poderia escutar por exemplo na porta 81 e mesmo assim conseguiríamos fazer o redirecionamento.

2° passo: pronto! O pacote foi encaminhado, mas e depois, como nós trataremos do retorno do pacote?

iptables -t nat -A POSTROUTING -d 172.16.0.2 -p tcp –dport 80 -j SNAT –to 200.200.200.200

Essa regra altera a origem do pacote apontando para o firewall, para que seja feito o retorno da requisição.

OBS: Só não podemos esquecer que o encaminhamento de pacotes deve ser ativado. Comando:

# echo 1 > /proc/sys/net/ipv4/ip_forward


Fonte: Viva o Linux

2 Responses to Redirecionamento de portas com Iptables

  1. Ygor disse:

    Muito obrigado, finalmente consegui redirecionar os pacotes pelo iptables!

  2. André disse:

    Não deu…
    eu fiz
    O objetivo é tudo que vier da rede pele porta 80 para o ip 10.10.5.2 deve ser redirecionando para o 10.10.5.1 na porta 8181
    isso dentro de um LAN

    iptables -t nat -A PREROUTING -d 10.10.5.2 -p tcp –dport 80 -j DNAT –to 10.10.5.1:8181

    iptables -t nat -A POSTROUTING -d 10.10.5.1 -p tcp –dport 80 -j SNAT –to 10.10.5.2

    os dois são servidores web, quando digito 10.10.5.2 no ff ele diz não tem encontrado nada…
    pode ajudar?

Conte-nos o que achou...

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s

%d blogueiros gostam disto: