Roteamento de pacotes e NAT no Linux

Publicado por Magno Lima em 24/11/2009

[ Hits: 67.820 ]

 


Roteamento de pacotes e NAT no Linux



Resolvi escrever essa dica depois de ver muitos posts de usuários com dúvidas em como fazer o compartilhamento de internet no Linux.

O compartilhamento da internet no Linux é feito através do Netfilter/Iptables, que é o firewall nativo das distribuições a partir do kernel 2.4.

Primeiro devemos estar com a placa de rede configurada e com a conexão com a internet funcionando. Para ver como configurar a placa de rede você pode dar uma olhada na minha dica:
Partindo do pressuposto que a internet está funcionando, a seguir será descrito os comandos que farão o roteamento e NAT da conexão.

Roteamento de pacotes:

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

Esse comando escreve o número 1 dentro do arquivo ip_forward, ativando o roteamento de pacote. O padrão é 0. Com isso o Linux passa a rotear os pacotes de uma interface para a outra e vice-versa.

NAT:

# iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

Esse comando permite que todos os micros da rede possam sair para a internet com apenas um IP público. O "-o eth0" é a interface que está conectada com a internet, se fosse uma conexão Velox seria "-o ppp0".

Pronto... Para compartilhar a internet no Linux é necessário somente esses dois comandos, um ativa o roteamento de pacote, o outro faz o nat. Agora vamos criar um script e colocar para iniciar durante o boot.

Criando script, dentro do /usr/local/bin:

# vim /usr/local/bin/firewall

#!/bin/bash

echo "Ativando compartilhamento "

# Ativando Roteamento de pacote
echo 1 > /proc/sys/net/ipv4/ip_forward

# NAT
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

echo " Compartilhamento ativado"

Salve e saia do arquivo. Dê permissão de execução no script com o comando:

# chmod +x /usr/local/bin/firewall

Agora vamos colocar esse script para ser iniciado durante o boot. Edite o arquivo /etc/rc.local:

# vim /etc/rc.local

E adicione a seguinte linha em seu final:

/usr/local/bin/firewall

Salve e saia do arquivo.

Pronto... Internet será roteada toda vez que o micro for reinicializado!

Obs.: Existem outras formas de colocar um script para ser inicializado durante o boot, esta é a forma mais simples, em outra dica demonstrarei uma forma mais profissional de colocar um script para ser inicializado.

Outras dicas deste autor

Configurando rede no Debian

Alterando a porta do serviço SSH

Configurando redes virtuais no Debian

Leitura recomendada

Debian 8: Deixando o sistema mais rápido

Erro na atualização do Fedora 11 (UnicodeDecodeError)

Personalizando a tela de abertura do XFCE

Slackware com resolução 1280x768

Alt+Tab não funciona no Ubuntu 15.04 [Resolvido]

  

Comentários
[1] Comentário enviado por xirux em 26/04/2010 - 10:23h

Obrigado Magnolinux, lendo teu artigo eu comecei a ficar a vontade pra evoluir.

[2] Comentário enviado por magnolinux em 06/07/2010 - 11:46h

Entãi xirux, no vol existe milhares de artigos e dicas que te ajudarão a evoluir no mundo linux e comphania...

Fico contente que minha dica foi valida. Em breve voltarei a escrever novamente no vol

abraço....

[3] Comentário enviado por gabidtlima em 13/06/2014 - 11:00h

olá, queria saber o que mudou e qual o comando que eu teria que usar para habilitar o roteamento de pacotes no Ubuntu 14.04, quando faço a ligação de mais de uma rede, não consigo pingar em uma maquina de outra rede.

ex.
rede 1 recebe pacote da rede 2 mas não recebe pacote da rede 3, ou vise versa

[4] Comentário enviado por fernandomsilva em 28/04/2017 - 10:06h

Parabéns pela contribuição! Aqui deu certo.


Fernando de M Silva
Analista de Rede Jr
Contato: [email protected]



Contribuir com comentário