Compartilhando acesso à internet com iptables

Neste artigo usaremos o iptables para fazer um compartilhamento de seu link dedicado com a Internet (speedy, velox, lp, etc) com suas estações de rede.

[ Hits: 76.788 ]

Por: Eduardo Assis em 09/01/2003 | Blog: http://www.proredes.com.br


Compartilhando Internet com iptables



Servidor

Temos uma máquina Linux com 2 (duas) placas de rede:
  • eth0: 200.x.x.x (ip fixo da internet)
  • eth1: 10.0.0.x (ip fixo interno)

Verifique se o iptables está instalado:

# rpm -q iptables
iptables-1.2.4-1cl

No caso estou usando a versão 1.2.4 do iptables em um Conectiva, se o seu não estiver instalado, faça o download (www.rpmfind.net, por exemplo) e instale-o com o seguinte comando:

# rpm -Uvh iptables-version

Depois de instalado vamos compartilhar à Internet. Digite a seguinte seqüência de comandos no shell:

# modprobe iptable_nat
# iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE
# echo 1 > /proc/sys/net/ipv4/ip_forward


Onde:
  • modprobe iptable_nat : Carregar o módulo NAT (isso carrega todos os outros);
  • iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE : Na tabela NAT (-t nat), adicionar uma regra (-A) após o routing;
  • echo 1 < /proc/sys/net/ipv4/ip_forward : Habilitar IP forwarding.

O ambiente gerado pela configuração realizada pelos comandos acima será descartada após o reinício do servidor, dessa forma sugiro que você aplique estas regras em algum script que será executado durante a fase de inicialização do servidor (ex.: /etc/rc.d/rc.local).

Cliente

Configure suas estações de rede da seguinte forma:
  • gateway: IP do servidor Linux
  • servidores DNS: qualquer servidor DNS válido (ex.: 200.204.0.138)

Recarregue as configurações das estações e pronto, estará navegando de modo transparente.

Referências


Abraços,
tucs
   

Páginas do artigo
   1. Compartilhando Internet com iptables
Outros artigos deste autor

Simulando o SSH via WEB

Configurando um servidor de e-mail para pequenas redes

Explorando o NFS do mrluk

Montando um Servidor de FTP

Shell script com PHP

Leitura recomendada

Instalando o Apache + PHP + MySQL no Slackware

CoyoteLinux :: Compartilhando internet com um disquete

Instalando e configurando a placa 3G EVDO da Vivo no Ubuntu 6.06 LTS

Resolvendo problema de conexão a internet ADSL (Velox)

SOCKS - Acessando Hosts remotos via OpenSSH

  
Comentários
[1] Comentário enviado por mbmaciel em 10/01/2003 - 22:00h

Valeu mesmo !!! consegui compartilhar até o irc para um micro cliente com windows !!

[2] Comentário enviado por fabio em 29/04/2003 - 21:44h

Po, mais um que você ajudou. Acabei de compartilhar a conexão ADSL da rede de um amigo num server RH8.0 através desse artigo.
Da hora!

[3] Comentário enviado por rodrigopa em 11/06/2003 - 16:01h

Não consigo acessar sites ftp dos micros cliente , somente do servidor, vc poderia me ajudar.?

[4] Comentário enviado por Oki em 10/11/2003 - 18:34h

Grande tucs,

Resolveu meu problema aqui. :-)

Esse artigo é bala, simples, direto e funciona :-)

[]'s
Celso Goya
moinho.net

[5] Comentário enviado por Oki em 10/11/2003 - 18:37h

Grande tucs,

Resolveu meu problema aqui. :-)

Esse artigo é bala, simples, direto e funciona :-)

[]'s
Celso Goya
moinho.net

[6] Comentário enviado por lacierdias em 20/11/2003 - 15:10h

Ficou exelente a sua explicação bem detelhada assim q é bom detalhes.
Abraço

[7] Comentário enviado por dudu em 25/05/2004 - 18:02h

Completando...

Para os hosts clientes acessarem FTP's carreguem tb os seguintes modulos:

modprobe ip_nat_ftp
modprobe ip_conntrack_ftp
modprobe ip_conntrack

O script completo ficaria assim:

modprobe iptable_nat
modprobe ip_nat_ftp
modprobe ip_conntrack_ftp
modprobe ip_conntrack
iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE
echo 1 > /proc/sys/net/ipv4/ip_forward

[8] Comentário enviado por fernandowilson em 26/05/2004 - 13:36h

nao entendi, pois tenho um roteador que tem seu ip da rede interna 10.0.0.x e minhas maquinas seguem essa sequencia. e voce sitou um ip valido 200.xxx.xxx.xxx numa segunda placa, como isso funciona?

[9] Comentário enviado por rook em 27/05/2004 - 22:46h

Este IP válido faz referência a conexão com a internet. Por exemplo, um acesso ADSL com o modem ligado na placa de rede.

[10] Comentário enviado por alphainfo em 04/06/2004 - 10:55h

Caro Fernando,

Como o próprio TUCS havia dito acima, o micro possui 2 placas de rede, uma que está conectada à rede interna e outro no teu velox, por exemplo.

[11] Comentário enviado por alphainfo em 04/06/2004 - 15:31h

Permitem dar o meu pedacinho de contribuição ao artigo??

Da maneira que ficou, os clientes de email (ex:OutLook Express) não funciona. Então, sugiro que o script completo fique assim:

#!/bin/bash
##################################
# Comeco
##################################
IPREDE=Coloque aqui o IP da sua rede, por exemplo "192.168.1.0"
DNS1=Coloque aqui o primeiro DNS que a telemar te deu, exemplo "200.167.232.14"
DNS2=Coloque aqui o segundo DNS que a telemar te deu, exemplo "200.165.20.150"

modprobe iptable_nat
modprobe ip_nat_ftp
modprobe ip_conntrack_ftp
modprobe ip_conntrack
echo "Habilitando o roteamento a WEB ..."
iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE
echo 1 > /proc/sys/net/ipv4/ip_forward
echo "Feito!"

#### Para funcionar os OutLook da vida...
iptables -A FORWARD -p udp -s $IPREDE -d $DNS1 --dport 53 -j ACCEPT
iptables -A FORWARD -p udp -s $IPREDE -d $DNS2 --dport 53 -j ACCEPT
iptables -A FORWARD -p udp -s $DNS1 --sport 53 -d $IPREDE -j ACCEPT
iptables -A FORWARD -p udp -s $DNS2 --sport 53 -d $IPREDE -j ACCEPT
#
echo " Feito!"
####

echo "Liberando o acesso ao SMTP e POP dos clientes de email ..."

iptables -A FORWARD -p TCP -s $IPREDE --dport 25 -j ACCEPT
iptables -A FORWARD -p TCP -s $IPREDE --dport 110 -j ACCEPT
iptables -A FORWARD -p TCP --sport 25 -j ACCEPT
iptables -A FORWARD -p TCP --sport 110 -j ACCEPT
echo " Feito!"

echo "PRONTO!"

#####
#EOF
####


Acho que é só...

[]'s

Daniel Freire

[12] Comentário enviado por abysmal em 14/06/2004 - 17:41h

blz, show de bola, deu tudo certinho...

[13] Comentário enviado por marcosvalente em 17/06/2004 - 21:43h

Adorei esse artigo !!!!! até os complementos....O artigo é muito muito bom

[14] Comentário enviado por flexsystem em 11/07/2004 - 01:01h

Legal valeu apena copiar este artigo, parabéns!!!!

[15] Comentário enviado por tarso em 14/07/2004 - 22:18h

Exenlente,precisamos também é de uma apostila para iptables.

[16] Comentário enviado por Rodrigues em 27/07/2004 - 23:15h

só é pior que por velox no linux que é uma coisa bem chata mesmo hehe

[17] Comentário enviado por fasmaia em 16/08/2004 - 22:02h

seguindo o raciocinio besta compilação, que tal agregar um limitador e um controle de IP cliente, dai fica um servidor de internet completo, e é o que eu to precisando he, he, ,he ,he.....

abraço.

Francisco Maia (www.naveg-net.com.br)

[18] Comentário enviado por fasmaia em 16/08/2004 - 22:02h

seguindo o raciocinio besta compilação, que tal agregar um limitador de banda e um controle de IP cliente, dai fica um servidor de internet completo, e é o que eu to precisando he, he, ,he ,he.....

abraço.

Francisco Maia (www.naveg-net.com.br)

[19] Comentário enviado por usales em 18/08/2004 - 16:10h

Legal!!! este é o artigo que faltava no site.

[20] Comentário enviado por cacosapo em 02/09/2004 - 09:21h

excelente, parabéns!
só um toque de segurança, na linha:
iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE
ficaria melhor, de acordo com o exemplo:
iptables -t nat -A POSTROUTING -i eth1 -o ppp0 -j MASQUERADE

do jeito que estava dependendo de outros parametros de configuração, uma pessoa maliciosa poderia usar seu firewall para mascarar acessos (e possiveis ataques) a outras pessoas.

[21] Comentário enviado por fernandus em 05/11/2004 - 10:22h

por que precisamos carregar os modulos referentes ao Ftp?

[22] Comentário enviado por vagnerd em 19/11/2004 - 08:17h

nossa que r0x.

[23] Comentário enviado por credmann em 05/12/2004 - 06:41h

Eu preciso de uma regra que habilite o acesso dos clientes ao domínio '*.avast.com'. Tentei acrescentar '-d *.avast.com' e não funcionou. Preciso que os clientes só possam acessar a web para fazer a atualização do antivírus.

[24] Comentário enviado por randrade em 10/12/2004 - 15:30h

jóia!

[25] Comentário enviado por ale_spy em 12/12/2004 - 21:54h

Eu sei q a pergunta que estou fazendo pode parecer boa mas o que é iptables??? Alguem poderia me explicar? Fico grato! :-)

[26] Comentário enviado por tarso em 22/12/2004 - 11:25h

Ótimo podeia também ter falado sobre o redirecionamento de portas ou ips.

[27] Comentário enviado por cRaYoN em 25/02/2005 - 18:27h

Cara o artigo é muito bom! Sei que o objetivo da comunidade VOL é auxliar o pessoal, mas, gostaria de lembrar, como trabalho em Administração de Rede, que todos podem utilizar os scripts para servidores caseiros, mas quando for utilizar num ambiente de Trabalho (Produção), estude bastante o IPTABLES e conheça todas as suas características porque ele é uma poderosa arma.
Digo isso, porque num trabalho, vira e mexe, tem um mala que necessita de um acesso externo, e voce vai ter que ter conhecimento para liberar!

é isso ...

[28] Comentário enviado por mtcporto em 15/03/2005 - 23:27h

Ola!

eu li o seu tutorial sobre compartilhamento, estava bem legal. Mas assim como o cara do FTP, eu estou com um problema. Na minha rede tem um linux com 3 placas de rede (1 velox e 2 de rede interna) atualmente o linux ta dando conta do recado e junto com aquela pequena regrinha e uma tabela de rotas tranquila, ta conseguindo fazer com que os clientes acessem internet e as duas redes que precisamos ter acesso. Tudo otimo se nao fosse por um detalhe:
Os clientes nao conseguem acessar alguns sites.
Ex.: www.caixa.com.br, www.bancoreal.com.br, www.globo.com, www.msn.com, www.hotmail.com e por ai vai.

Isso e alguma regra que ficou faltando, algum modulo que faltou carregar ou o que?

A distro e kurumin linux 4, so tem 2 regras de iptables (pra compartilhamento de rede e pra acesso as sub-redes de um dos roteadores) e a tabela com as rotas. De servidor, so tem o ssh rodando. Alguma ideia?

[29] Comentário enviado por roberva em 24/05/2005 - 20:49h

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

o parametro "-i" pode ir com POSTROUTING ???

[30] Comentário enviado por removido em 25/05/2005 - 12:35h

Pessoal, valeu as dicas sobre configuração da internet em máquinas clientes. Estou satisfeito pelo quão rápido consegui ajuda. Valeu galera !!!

[31] Comentário enviado por thiagoantunees em 24/07/2006 - 16:02h

È seguinte cara eu preciso configurar da seguinte forma

Servidor -->eth0 entrada de internet (modem router)
-->eth1 saida - para o (AP/HUb) como eu faço redirecionar a intenet da eth0 para eth1 ,passando da eth1 (AP/HUB) distribuindo para os clientes.Essas regras podem ser feitas pelo iptables como faço isso alguém pode me ajudar desde ja agradesso.


[32] Comentário enviado por ba em 17/08/2006 - 11:35h

Éta simples, fácil e funcional justamente o que precisava e tava procurando me ajudou bastante parabéns pelo artigo!!!


.:: bA q:-)

[33] Comentário enviado por pdjailton em 10/10/2006 - 17:59h

Valeu cara, esse artigo ficou muito bom msm.

[34] Comentário enviado por Airozi em 03/11/2006 - 23:54h

muito boa essa dica, funcionou de boa ^^

[35] Comentário enviado por leandrobrunoo em 28/08/2009 - 10:46h

Queria saber se a placa eth0 q o modem estar conectado IP o 192.168.0.3
e a eth1 q e a do switch pode ser o ip com a mesma faixa ex 192.168.0.4 e qual seria o gateway da placa eth1 ?

as regras de firewall seria a mesma aqui desse artigo ?

[36] Comentário enviado por nicolasmafre em 31/01/2018 - 23:47h


[8] Comentário enviado por fernandowilson em 26/05/2004 - 13:36h

nao entendi, pois tenho um roteador que tem seu ip da rede interna 10.0.0.x e minhas maquinas seguem essa sequencia. e voce sitou um ip valido 200.xxx.xxx.xxx numa segunda placa, como isso funciona?


Eu estou com a mesma dúvida, pois falaram mas não explicaram. Eu também tenho duas placas de rede ("eno1" e "enp5s0") e meu roteador também tem seu ip interno. Tudo que vejo manda a primeira placa (eno1) fixar um ip e na segunda (enp5s0) deixar como dhcp, mas ja testei com a segunda interface de rede em static e dhcp e nada funcionou.

Outra coisa, nos arquivos leio, todos mandam colocar a interface que recebera a internet no comando do IPTABLES, mas aqui é posto "ppp0" ao invés (por exemplo) "enp5s0". Por qual motivo isso?

Como fica a configuração da segunda placa?


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner
Linux banner
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts