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: 82.810 ]

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

Autenticando usuários Windows no Linux (PDC)

Configurando mais de um IP por placa de rede

Shell script com PHP

Explorando o NFS do mrluk

Cadastrando usuários no Linux e Samba via PHP

Leitura recomendada

O programa gwhois

Sistema de backup com rsyncd

Verificando a velocidade ADSL contratada (Velox)

Instalação do GNS3 no Ubuntu 10.10 e derivados

Imspector, um proxy para mensageiros instantâneos no Linux

  
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

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts