Roteamento de pacotes e NAT no Linux

Publicado por Magno Lima em 24/11/2009

[ Hits: 66.241 ]

 


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

Configurando redes virtuais no Debian

Alterando a porta do serviço SSH

Leitura recomendada

Instalei o Slackware 10.1 e o som não funciona, e agora?

Squid-Graph no CentOS com controle de acesso por usuários do AD

Habilitar a edição do Shutter no Mint 18

Problema de Tearing no Chip Gráfico do Intel Skylake [Resolvido]

Configurar rede no CentOS 6

  

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