NaT-Network Address Translation com iptables

linux, tutorial linux, htb, bandwith control

O nat (Network Address Translation) é o responsável pela tradução de endereços de rede, como por exemplo conectar uma rede interna a internet ou fazer um redirecionamento de portas de serviços de redes.

No linux o nat possui 3 chains: PREROUTING, OUTPUT e POSTROUTING.


A chain PREROUTING é utilizada para o DNAT(destination nat) e tratada na entrada dos pacotes a serem roteados. Já o POSTROUTING é utilizada no SNAT(source nat) e MASQUERADE,sendo tratada na saída dos pacotes a serem roteados e o OUTPUT para pacotes DNAT gerados localmente.

Snat x Masquerading

O SNAT ou source Nat é indicado para compartilhamento de conexões com ip fixo.

Exemplo de SNAT:

iptables -t nat -A POSTROUTING -s 10.10.1.0 -o eth1 -j SNAT --to 189.10.50.30
O SNAT tambem pode ser utilizado por faixa de endereços:
iptables -t nat -A POSTROUTING -s 10.10.1.0 -o eth1 -j SNAT --to 189.10.50.30-189.10.50.40


Já o Masquerading para compartilhamento de conexões com ip dinamico.

Exemplo de Masquerading:

iptables -t nat -A POSTROUTING -s 10.10.5.0/24 -j MASQUERADE
Utilizando o DNAT:
O dnat é utilizado para modificar o endereço de destino dos pacotes, pode ser utlizado em varias ocasioes como por exemplo um proxy transparente.
Exemplo de DNAT:
iptables -t nat -A PREROUTING -s 189.10.50.30 -i eth0 -j DNAT --to 10.10.1.5
#todos os pacotes destinados ao ip 189.10.50.30 serão redirecionados para a maquina 10.10.1.5.
Redirecionamento de portas  com iptables:
O redirecionamento pode ser utizado para criar um proxy transparente ou por exemplo para troca a porta de um serviço de rede especifíco:
Exemplos de redirecionamento de portas com iptables:
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 3051 -j REDIRECT --to-port 21
#redireciona todos os pacotes da eth0 com destino a porta 3051 para a porta 21.
iptables -t nat -A PREROUTING -p tcp -m tcp --dport 8030 -j DNAT --to-destination 10.10.5.15:8080
#redireciona todos os pacotes da porta 8030 na maquina local para a porta 8080 da maquina 10.10.5.15.
Caso o redirecionamento seja para mesma porta não é necessário especificar a porta no destino:
exemplo:
iptables -t nat -A PREROUTING -p tcp -m tcp --dport 80 -j DNAT --to-destination 10.10.5.15

#Redireciona todos os pacotes que chegarem para a maquina local na porta 80 para a porta 80 da maquina 10.10.5.15.
Como monitorar as conexões NAT ativas?
basta digitar o comando abaixo no servidor: 
#cat /proc/net/ip_conntrack
Finalizando o post gostaria de fazer algumas considerações:
Para que as regras  funcionem é necessário seguir 3 passos:
Habilitar o modulo kernel do nat:
root@def_linux#modprobe iptable_nat
Para que o  redirecionamento de pacotes funcione é ncessário habilita-lo:
root@def_linux#echo "1" >/proc/sys/net/ipv4/ip_forward
Caso redirecionamento seja de ums erviço FTP é necessário habilitar os  dois modulos abaixo:
root@def_linux#modprobe ip_nat_ftp
root@def_linux#modprobe ip_conntrack_ftp
Por ultimo lembre-se de salvar as regras e colocar o carregamento dos módulos na inicialização do servidor, pois caso o mesmo seja reiniciado os serviços voltem a funcionar.
Siga o @def_linux no twitter e fique por dentro dos nossos   tutoriais, dicas e promoções.

Nenhum comentário: