Firewall iptables com DNAT, SNAT levando um ip válido para um host da rede, formas de mascaramento NAT e redirecionamento

Publicado por Jucinaldo Braga Barbosa em 05/03/2009

[ Hits: 60.858 ]

 


Firewall iptables com DNAT, SNAT levando um ip válido para um host da rede, formas de mascaramento NAT e redirecionamento



Neste tópico abordarei algumas aplicações para iptables, não estou postando o script completo, você apanha apenas as regras que lhe forem convenientes. Valeu!

Esta primeira regra serve para quem tem mais de um IP válido na rede, tem algum terminal ou cliente que quer um IP válido e você não vai lançar um IP válido dentro de sua nuvem. Primeiro você cria um alias de interface (Subinterface) na interface que está conectada a internet.

Ex.: Sua rede é 200.2.2.0 netmask 255.255.255.128, daí você tem teoricamente 128 IPs válidos disponíveis, seu firewall tem ip 200.2.2.2 na eth1, dentro da rede interna você vai disponibilizar um ip válido e claro, todas as portas para uma máquina, sendo que o IP interno desta máquina é 192.168.2.253. Então você cria a alias de interface no seu firewall com um segundo ip valido:

# ifconfig eth1:1 200.2.2.3 netmask 255.255.255.128

Agora no seu script de firewall adicione esta regra antes do seu NAT do resto da rede interna:

### NAT - DNAT-SNAT
#Aqui está permitindo qualquer entrada tcp ou udp para este IP
iptables -I INPUT -p ALL -d 200.2.2.3 -j ACCEPT

# Aqui qualquer pacote destinado ao ip 200.2.2.3 válido (Alias de Interface)
# será destinado à 192.168.2.253 da rede interna.
iptables -t nat -I PREROUTING -d 200.2.2.3 -j DNAT --to-destination 192.168.2.253

# Aqui diz que tudo com origem em 192.168.2.253 sairá com com ip 200.2.2.3
iptables -t nat -I POSTROUTING -s 192.168.2.253 -j SNAT --to-source 200.2.2.3

Ou seja, para todos os efeitos é como se o terminal que está dentro da rede estivesse diretamente conectado a internet.

Formas diferentes de fazer NAT

Esta primeira regra permite o roteamento entre interfaces, ela vem antes das regras seguintes e é essencial para o funcionamento das regras subsequentes.

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

1 - Nat para uma sub-rede, assim todos os hosts desta sub-rede podem navegar na internet, sendo "eth1" a interface conectada a internet.

iptables -t nat -A POSTROUTING -s 192.168.2.0/24 -o eth1 -j MASQUERADE

2 - NAT individual, para que apenas um host navegue. Esta regra é interessante para que você possa fazer que um determinado host navegue por fora do proxy, coloque esta regra antes do NAT global (do resto da rede que passa pelo proxy transparente).

iptables -t nat -I POSTROUTING -s 192.168.2.55/32 -o eth1 -j MASQUERADE

3 - NAT Global, assim fazendo o mascaramento de qualquer rede interna para a internet.

iptables -t nat -A POSTROUTING -o eth1 -j MASQUERADE

Simples redirecionamento de porta

iptables -A FORWARD -p tcp --dport 5900 -d 200.2.2.2 -j ACCEPT
iptables -t nat -A PREROUTING -i eth1 -p tcp --dport 5900 -j DNAT --to 192.168.2.45

Espero que gostem destas dicas, com um pouco de criatividade vocês pode fazer muitas outras coisas. T+

Outras dicas deste autor
Nenhuma dica encontrada.
Leitura recomendada

Firejail - cadeia neles! Sandbox para aplicações no seu GNU/Linux

Fim dos problemas: wmode funciona no Flash Player 10-b2 + Firefox 3.0

Squid - Implementando controle de banda

Resolvendo problemas de navegação do Velox no Mandriva

Instalando pacotes de atualização no Conectiva Linux de maneira mais veloz

  

Comentários
[1] Comentário enviado por jucinaldo em 05/03/2009 - 22:14h

Espero que ajude a galera da comunidade!!!!!!!!!!!!!!!!

[2] Comentário enviado por joaotechio em 16/07/2009 - 23:43h

vlw velho!

[3] Comentário enviado por xerminador em 13/10/2009 - 09:06h

Olá Jucinaldo sera que você poderia me tirar uma duvida.Na interface que esta pra internet tem que ser igual ao meu ip valido ou tenho q criar um alias de um ip no mesmo range do ip valido. Pra explica melhor se tenho um ip 200.128.28.53(ip valido) posso atribuir esse mesmo ip a minha interface de internet do meu srv Firewall ou tenho q criar um alias para esta interface ex: 200.128.28.54(alias da interface)|?|

Outra questao so deu habilita o ip_forward ele ja faz o NAT ou tenho habilita o modulo do NAT tmb.... Essa regra de NAT tem que estar em qual lugar no script ou em determinado lugar ele nao pode funfa.....


Obrigado!!!!!!!!

[4] Comentário enviado por jucinaldo em 18/10/2009 - 19:47h

Sim cada redirecionamento DNAT SNAT você vai ocupar um novo ip do seu Range Válido, para redirecionar para terminal interno como se fosse uma terminal ligado na rede válida de forma direta, ocupando um ip valido por DNAT_SNAT

[5] Comentário enviado por viniciussouza em 19/01/2010 - 16:38h

Amigo dica 100% fiz aque corretamente alterando as classes de Ip, e agora ta ok. meu suporte pode conectar aque no sql remotamente sem problemas.

[6] Comentário enviado por Neo_X em 16/01/2013 - 16:54h

As interfaces virtuais sobem na inicialização? Testei no CentOS e não subiu.

[7] Comentário enviado por FABIO_GYN em 03/08/2015 - 11:51h

É possível fazer apenas um encaminhamento de portas?

Preciso que o que chegar na porta 8745, depois que entrar nessa porta (falo depois pq preciso que o squid gere os logs para os IP originais que fizeram o acesso) encaminhar para uma outra porta do mesmo servidor, no caso a 3128 (que outro programa está escutando, o dansguardian).

[8] Comentário enviado por tonyoecruz em 08/01/2016 - 23:11h

Olá...
Estou com uma dúvida...
Preciso fazer o Masquerade de todo o pool da VPN, porém se for para um destino específico não pode ter o NAT.
O VoIP não funciona com NAT, então quando eu adiciono a regra do Masquerade funciona a internet mas para o VoIP, dai quando eu para o Masquerade funciona o VoIP e para a internet.
Então eu estou querendo fazer uma regra que não aplique o NAT quando o destino for o IP do PABX 10.226.243.10
Alguém sabe como eu poderia criar esta regra ?

Vlw..



Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts