Arquivos históricos do BR-Linux.org apresenta:

Artigo inédito - roteamento e NAT com IPTables

Depois de meses, volto a publicar um artigo inédito aqui no Linux in Brazil. Tem vários outros na fila, alguns eu recebi por email e ainda nem respondi aos autores, mas eu acabo lendo e respondendo. Quem quiser mandar, entre em contato; mande em texto puro, parágrafos separados por linhas em branco, já corretamente acentuado e revisado.

Clicando em Detalhes você poderá ver o artigo do Marcelo M. Lopes (marcelo@tre-sc.gov.br) com um passo a passo sobre como configurar um micro com Linux para atuar como roteador e interligar duas redes (ou uma rede local à Internet). Confira!

Configurando roteamento com o IPTables (Masquerading)

Marcelo M. Lopes - marcelo@tre-sc.gov.br

O objetivo deste documento é demonstrar uma solução simples para roteamento de pacotes entre redes, mais especificamente entre duas redes ethernet, utilizando o IPTables. Observe que o foco não é a parte de segurança e sim a funcionalidade da solução.

Hardware Utilizado

A configuração de hardware utilizada foi um Pentium200 com 64Mb de ram e 2Gb de disco, porém poderia-se baixar esses valores conforme a demanda das redes a serem conectadas. Nesse laboratório nossas redes tinham aproximadamente 20/200 pontos e considerou-se o hardware sub-utilizado. Somente durante a configuração foi necessária a utilização de monitor e mouse; como hardware adicional foi instalada uma segunda placa de rede.

Software

O S.O. instalado foi o Suse Linux7.3; o tipo de instalação foi a "mínima" (aproximadamente 250Mb), mais alguns pacotes como o "iptables" e o "pico" (adicionados manualmente). O reconhecimento das 2 placas de rede(3com padrão) ocorreu sem problemas. obs: como área de swap criou-se uma partição de 128Mb.

Configuração

Inicialmente devem ser feitas as configurações das placas de rede, hostname, domainname; para exemplificar:

eth0: 192.168.1.1/255.255.0.0
eth1: 10.10.1.1/255.255.0.0
hostmane: router
domainname: mydomain.com

Ativando o roteamento

Verifique na distruição de sua preferência a localização dos scripts de inicialização e adicione o seguinte comando para ativar o roteamento:

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

Rotas

Considerando a conexão física de rede OK, partimos paras as rotas necessárias:

# route add -net 192.168.0.0 netmask 255.255.0.0 eth0
# route add default gw 10.10.1.1 eth1

Confirme/edite o arquivo /etc/route.conf, definindo as seguintes entradas:

192.168.0.0 0.0.0.0 255.255.0.0 eth0
#gateway default
default 10.10.1.1 0.0.0.0 eth1

Serviços

Todos os serviços considerados desnecessários (telnet, finger, ftp, etc...) foram desativados, ficando apenas rodando o sshd para futuras manutenções.

Regras de Masquerading

Para possibilitar a troca de pacotes entre as duas redes são necessárias algumas regras de mascaramento de ip; utilizou-se o iptables-1.2.2-66(kernel 2.4.10); adicione as seguintes regras a um dos scripts de inicialização(depende da distro):

export IPTABLES=/usr/sbin/iptables
export MODPROBE=/sbin/modprobe
$MODPROBE ip_nat_ftp
$MODPROBE ip_conntrack
$MODPROBE ip_conntrack_ftp
$IPTABLES -A FORWARD -i eth1 -o eth0 -m state --state ESTABLISHED, RELATED -j ACC
$IPTABLES -A FORWARD -i eth0 -o eth1 -j ACCEPT
$IPTABLES -A FORWARD -j LOG
echo "- Enabling SNAT (MASQUERADE) funtionality on eth1"
$IPTABLES -t nat -A POSTROUTING -o eth1 -j MASQUERADE
echo -e "\nDone.\n"

Após estes procedimentos seu micro já estará roteando pacotes entre as redes, sendo ainda preciso configurar nas estações da rede interna (192.168.0.0) O gateway padrão como sendo o endereço IP da interface eth0 (192.168.1.1).

Postado por brain em 13 de setembro de 2002, 10:47 AM

Comentários

Duas Ponderações:

Não me parace necessário o masquerade entre duas redes com IPs privados (ou não válidos, rfc 1597), no caso :192.168.0.0/16 e 10.10.0.0/24. Já se a rede 10.10.0.0/16 serviu apenas como exemplo para um acesso a internet, e na verdade seu IP seria um IP válido do tipo 200.200.200.0/24, o masquerade se faz necessário.

Quanto as rotas:
-> route add -net 192.168.0.0 netmask 255.255.0.0 eth0
Posso estar errado, mas como a rede 192.168.0.0/16 esta ligada diretamente na interface do roteador, a rota para a rede já é criada automaticamente pela pilha IP.
-> route add default gw 10.10.1.1 eth1
O Default Gateway deveria apontar para o próximo roteador no caminho para Internet (ex:10.10.1.2) e não para o próprio IP.

De qualquer forma, parabens pelo artigo, conciso e prático.

Gustavo Araujo Bittencourt

Postado por: gbitten em setembro 13, 2002 02:28 PM

Não entendi como ele mascarou para a web? Como este mascaramento é reconhecido pelo outro roteador(GW)? Tipo, ele faz um mascaramento na eth0, que vai ser quem vai receber um ip válido para a web? Quer dizer o outro roteador(GW) que vai dar para o router o ip válido?

Postado por: Márcio em setembro 13, 2002 07:13 PM

Visivelmente o Autor deste documento nao tem nenhum conhecimento em redes/TCP-IP, nota 0.

Postado por: Frederic L.V em setembro 14, 2002 09:02 PM

Roteamento

Postado por: marcosq em setembro 15, 2002 01:31 PM

Leia

Postado por: Marco em setembro 23, 2002 02:37 PM

desejo me cadastrar na lista

Postado por: mario em setembro 26, 2002 12:33 AM

Voce sabe como posso configurar uma rota multicasting para 2 placas de rede?

Postado por: Nicanor em outubro 2, 2002 05:49 PM

Gostaria muito de saber como sâo aferidos os conhecimentos de uma pessoa na prática.
A pessoa prepara o sistema,divide em partições,instala,modifica,acrescenta arquivos não inclusos na instalação, em fim prepara o sistema para funcionar. Como aferir a esta pessoa o seu grau de conhecimento em Linux para que possa certificar-se ?

Postado por: jose Carlos em outubro 12, 2002 03:53 AM

eu gostaria de saber para q serve cada comando
por quê não adianta nada eu efetuar o que você está disendo sem saber o significado.

Postado por: |_style_| em outubro 16, 2002 04:45 PM

E SE EU TIVESSE SOMENTE 1 PLACA DE REDE QUE SE LKIGA NUM HUB, E DEPOIS PELO HUB SE DISTRUBUI PARA OUTRAS MAQUINAS?
COMO FICARIA AS REGRAS DO IPTABLES?

Postado por: capial em outubro 18, 2002 12:37 AM

este cara nao entende nada sobre o NAT, quem quiser pode procurar pelo GUIA FOCA LINUX que la te explicando tudinho sobre como usar o iptables.

abraco

Postado por: Geovanni em outubro 20, 2002 10:18 PM

Preciso de sua ajuda para aprender a entrar
no sistema de terceiros...se puder me dar uns toques
ficarei agradecido...pois não aguento+...

sem mais,
Droyd

Postado por: Droyd em outubro 21, 2002 12:21 AM

Bom e velho brasil.
Criticas e mais criticas, fazer que eh bom nada.
Testem e vejam se funciona, ao inves apenas de criticar.
Nao funcionou ??? Arrume os erros, caso seja tao bom a ponto de criticar.
Um bom critico deve entender e saber fazer o que esta errado na critica.
:-)

Postado por: SHDW em outubro 21, 2002 01:06 PM

Como posso fazer o rotiamento de uma rede para um modem

Postado por: Thiago Pinto Dias em outubro 21, 2002 08:29 PM

Tenho uma conexão no trabalho com a internet
Gostaria de usar em casa como rotias da minha placa de rede para um modem
para poder conectar em casa

Postado por: Thiago Pinto Dias em outubro 21, 2002 08:32 PM

Como faço para configurar um rotedor para acessar o speed (ppoe) de um lado e uma rede 192.168.0 do outro.

Tenho um 486 com 8Mbs de memória

Postado por: Marcio em outubro 21, 2002 10:49 PM

primeiramente, brain, parabens pela iniciativa...
2º pra nao confundir a galera vc poderia ter colocado um ip "diferente" na eth1, pra evitar comentarios do tipo "esse cara nao sabe nada de routing" ;)

para aqueles que leram mas nao entenderam, uma boa saida é digitar "man iptables" (sem as aspas), ta em ingles mas da pra entender...

Postado por: Carcaça em outubro 31, 2002 02:50 AM

Bom dia...eu tenho algumas duvidas "bobas"...sera que tem como vcs mandarem para mim o tutorial desta materia. Vou-lhe fazer uma das perguntas "bobas" quando vc fala isso: "Verifique na distruição de sua preferência a localização dos scripts de inicialização e adicione o seguinte comando para ativar o roteamento:

# echo 1 > /proc/sys/net/ipv4/ip_forward" eu nao estedi, vc quer que eu procuro esta arquivo e adiciono ele este comando, # echo 1 > /proc/sys/net/ipv4/ip_forward? Desculpa por esta pergunta "bobas".

Obrigado
Marcelo

Postado por: Marcelo em novembro 22, 2002 12:19 AM

Tenho minha rede conectada a uma outra por dois links dedicados.
Atualmente eles atuam trafegando informações especificas para determinados serviços,
ou seja, o tráfego do servico A na outra ponta vem pelo link A.
O trafego do serviço B vem pelo link B. Apesar de eu ter metricas diferentes e
rotas estáticas, quando um link cai, o tráfego vem pelo outro mas nao volta.
Alguem tem alguma ideia?

Obrigado

Postado por: wilson em novembro 27, 2002 12:01 PM

Existe algum problema de com o modem da alcatel para que funcione em linux?

Postado por: luciano em novembro 29, 2002 05:03 PM

Meus parabéns... resolvidos estão meus problemas com ftp!!!!

Postado por: Maurício Rocha Bastos em dezembro 3, 2002 05:43 PM

Eu aqui usando o iptables
fiz o seguinte script
#! /bin/bash
echo 1 > /proc/sys/net/ipv4/ip_forward
modprobe ip_nat_ftp
modprone ip_conntrack
modprobe iptable_nat
iptables -P FORWARD DROP
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
iptables -A FORWARD -i eth1 -o eth0 -j ACCEPT
iptables -t nat -A POSTROUTING -p tcp --dport 80 -j MASQUERADE
iptables -t nat -A POSTROUTING -p udp --dport 80 -j MASQUERADE
iptables -A FORWARD -p tcp --dport 80 -s 0/0 -i eth1 -o eth0 -j ACCEPT
iptables -A FORWARD -s 192.168.0.0/24 -d 0/0 -p tcp --dport 80 -j ACCEPT
iptables -A FORWARD -s 192.168.0.0/24 -d 0/0 -p udp --dport 80 -j ACCEPT

Onde eth0 eh o speedy funcionando corretamente e o eth1 rede interna 192.168.0.0/24 nao entendo pq a rede interna nao consegue navegar quero uma coisa bem simples apenas fechar o forward e abrir apenas a porta 80 o servidor de dns esta no firewall e tanto na estacao qto no firewall resolve os ips nao entendo o q esta acontecendo se alguem puder postar algum script simples sobre fechar o forward e abrir apenas navegacao com mascaramento agradeco

Abracos,

Pedro Drimel

Postado por: Pedro Drimel em dezembro 17, 2002 05:06 PM

gostaria de ver algum artigo falando sobre samba com mandrake 9.0 alguem poderia me ajudar.

wesley

Postado por: wesley em dezembro 26, 2002 04:19 PM

sobre internet a cabo,

Como fazer o cable modem funcioar no linux, pois so consigo fazer funcionar adicionando a rota para o ip_valido designado do provedor, mais depois que reinicio este ip muda e a conexão não funciona novamente.

Postado por: ENIO em janeiro 15, 2003 04:54 PM

Eu tenho um speedy ppoe e instalei o mandrak 9.1, so que não sei configurar para efetuar logon no meu provedor que é terra.. teria alguma pagina ou insformções de como fazer??? Detalhe sou leigo de linux mas quero muito aprender a mexer

Postado por: Isac Marcelo dos Santos em janeiro 29, 2003 09:10 PM


Isac,

leia esta página:

www.roaringpenguin.com

Uses os softwares RP-PPPoE (que é o principal) e o TkPPPoE para conectar a partir do X.

Eu instalei os dois (no Conectiva 7.0) e uso o Speedy via Linux sem o menor problema.

Postado por: Ughadoo em janeiro 29, 2003 10:27 PM

Ola pessaol......
Alguem pode me ajudar o problema e o seguinte...

tenho adsl aqui... eth0 10.0.0.139
(rede interna)outra placa de rede eth1 192.168.0.1
configurei squid/proxy e esta rodando blz...
deixei a porta padra 3128
mas o problema e o seguinte o email nao funciona outlook express o que devo fazer para funcionar....
obrigado

Postado por: carlos em fevereiro 13, 2003 11:11 AM

Tenho duas placas de rede eth0 que esta conectada ao roteador e eth1 na rede de clientes as duas ultilisam ip valido .Como faco para que eth1 possa enchergar o roteador ??

Postado por: junior em fevereiro 19, 2003 02:39 PM

olá
Estou com uma dificuldade.
Tenho conexão rápida a internet fia rádio e ADSL.
Como faço com meu servidor de internet ,que tem uma placa de rede ligando minha rede interna e outra ligando atualmente o sistema ADSL,servidor esse com sistema operacional Linux,gostaria que quando o ADSL saice do "ar" automaticamente meu servidor usasse a minha conexão via rádio

Postado por: paulo em março 2, 2003 10:25 AM


O Arquivo Histórico do BR-Linux.org mantém no ar (sem alteração, exceto quanto à formatação) notícias, artigos e outros textos publicados originalmente no site na segunda metade da década de 1990 e na primeira década do século XXI, que contam parte considerável a história do Linux e do Open Source no Brasil. Exceto quando indicado em contrário, a autoria dos textos é de Augusto Campos, e os termos de uso podem ser consultados na capa do BR-Linux.org. Considerando seu caráter histórico, é provável que boa parte dos links estejam quebrados, e que as informações deste texto estejam desatualizadas.