Linux slogan
Visite também: Segurança Linux · BR-Linux.org · Dicas-L · Doode · NoticiasLinux · SoftwareLivre.org · UnderLinux



» Screenshot
Linux: Primeiro screenshot slack mac
Por removido
» Login
Login:
Senha:

Se você ainda não possui uma conta, clique aqui.

Esqueci minha senha



Artigo

Roteamento por origem no Linux
Linux user
vinicius.almeida
16/02/2012
Trabalhando com roteamento por origem no Linux, aprenda a redirecionar o seu tráfego local LAN para vários links
externos. O cenário proposto no artigo, são 3 links externos e uma rede LAN.
Por: Vinícius de Oliveira Almeida
[ Hits: 5716 ]
Conceito: 10.0   6 voto(s)6 voto(s)6 voto(s)6 voto(s)6 voto(s) + quero dar nota ao artigo

Introdução

A tempos, precisei atender um cliente cuja requisição era redirecionar sua rede interna (LAN) para links diferentes. Com ajuda de alguns amigos, eu consegui fazê-lo.

As configurações de roteamento são bem simples, o único passo complicado é a parte de compilação de kernel, podendo causar alguns “panics” na inicialização.

- Cenário
  • 4 interfaces de Rede FastEthernet ou GigabitEthernet

- Configuração Gateway Linux

Eth0: Local (LAN):
  • IP: 192.168.0.1/24
  • ALIAS: 192.168.1.1/24
  • ALIAS: 192.168.2.1/24

Eth1: Link 1 (OI):
  • IP: 187.6.85.2/24

Eth2: Link 2 (Internet Embratel):
  • IP: 200.166.196.2/24

Eth3: Link 3 (CTBC):
  • IP: 200.244.185.2/24

Bem, estamos com uma bomba, preciso dizer ao Servidor Linux que o endereço LAN '192.168.0.0/24' saía pelo Gateway OI.
O '192.168.1.1' saía pelo Embratel e o endereço de sub-rede '192.168.2.0/24', aponte para o link CTBC.

Difícil né?

Veja a topologia:
Linux: Roteamento por origem no Linux

Siga o próximo passo.
Próxima página >>




Páginas do artigo
   1. Introdução
   2. Compilando Kernel

Outros artigos deste autor

Leitura recomendada

Comentários
[1] Comentário enviado por kuruminbranco em 16/02/2012 - 10:57h:

E a configuração das interfaces, como ficou?
IP e mascara somente, correto?

[2] Comentário enviado por eabreu em 16/02/2012 - 11:31h:

Ainda não fiz o artigo, porém achei muito bom,

favorito, nota 10!!!

[3] Comentário enviado por mago_dos_chats em 16/02/2012 - 17:13h:

Gostei Vinicius, mais só uma questão para ver se funcionaria também, depois de compartilhar a internet no servidor com o MASQUERADE você poderia simplesmente adicionar as rotas como:
route add default gw 192.168.0.0 netmask 255.255.255.0 eth0 (OI)
route add default gw 192.168.1.0 netmask 255.255.255.0 eth1 (EMBRATEL)
route add default gw 192.168.2.0 netmask 255.255.255.0 eth2 (CTBC)

Ai todo trafego com destino a estas subredes sairia por estas interfaces, o que acha?


[4] Comentário enviado por yros em 16/02/2012 - 22:38h:

Muito bom o artigo cara, é um assunto que normalmente os artigos são meio confusos, e você conseguiu deixar bem objetivo.

Valeu

[5] Comentário enviado por viniciuspedra em 17/02/2012 - 09:27h:

primeiramente parabéns pelo artigo...
eu nunca alterei o kernel do linux porém vou ter que me dedicar a isso

gostaria de saber se não dah para deixar apenas uma faixa de IP, por exemplo a que eu uso que é 192.168.3.0 e determinar pelo IP em qual link q sai?

[6] Comentário enviado por gasparzinho_f em 17/02/2012 - 11:53h:

bom dia.
artigo muito bom.
agora, seria muito mais complicado fazer a saida por tipo de serviço do que por subrede ??... pra quem não entendeu, digamos que youtube pelo pelo link1, email/ftp/ssh por link2 e qualquer outra coisa pelo link3... creio que temos que fazer marcação de pacotes e fazer a regra correspondente redirecionar a saida... é correto a idéia ?


[7] Comentário enviado por jose.freitas.rj em 17/02/2012 - 14:34h:

Olá vinicius.almeida! Primeiramente te dou os parabéns pelo bom artigo! Falando sobre as regras de entrada e saída via iptables, eu teria que criar uma regra pra cada rede interna assossiando a elas as portas e as interfaces que são de saída? Por exemplo,
iptables -A POSTROUTING -t nat -s 192.168.1.0/24 -m tcp -p tcp --dport 3128 -o eth1 -j MASQUERADE
iptables -A POSTROUTING -t nat -s 192.168.2.0/24 -m tcp -p tcp --dport 3128 -o eth2 -j MASQUERADE
iptables -A POSTROUTING -t nat -s 192.168.3.0/24 -m tcp -p tcp --dport 3128 -o eth3 -j MASQUERADE

iptables -A INPUT -i eth1 -s 0/0 -d xxxxxxxx -m tcp -p tcp --dport 110 -m state --state NEW -j ACCEPT
iptables -A FORWARD -i eth2 -s 0/0 -d xxxxxxxx -m tcp -p tcp --dport 110 -j ACCEPT
iptables -t mangle -A PREROUTING -i eth3 -s 0/0 -d xxxxxxxx -p tcp -m tcp --dport 110 -j TOS --set-tos 16
iptables -A PREROUTING -t nat -i eth3 -s 0/0 -d xxxxxxxx -m tcp -p tcp --dport 110 -j DNAT --to 192.168.3.253:110

[8] Comentário enviado por viniciuspedra em 17/02/2012 - 16:19h:

uma coisa q eu estava analisando agora é a dificuldade de encontrar uma placa mãe com 3 entradas PCI...
então o negócio é placa de rede dual que por sinal tmb não está facil =D

[9] Comentário enviado por jose.freitas.rj em 18/02/2012 - 13:54h:

Fala viniciuspedra! Essas placas-mãe você até encontra no mercado, mas geralmente são todas offboard. Sempre uso placas Intel com processadores Intel, sempre... Mas no caso de ter poucos slots pci procuro criar ETHs virtuais (eth0:0, eth0:1,eth0:2...), mas eu sempre procuro colocar placa físicas separadas pra cada trâmiti.

[10] Comentário enviado por viniciuspedra em 19/02/2012 - 09:07h:

poiseh jose.freitas.rj... pior acaso eu tenho uma, antiga mas com 3 slots pci...
eu to usando eth virtuais porém eu me deparei com um problemão: uso proxy...
descriminei os proxys e nenhum deles funcionou...
alguém já fez esse tipo de roteamento utilizando proxy?

[11] Comentário enviado por viniciuspedra em 19/02/2012 - 09:19h:

ah... consegui...
eu criei o eth0 com o ip do proxy e depois o eth0:1 e eth0:2 com os outros IPs... funcionou... agora vou para o roteamento :D

[12] Comentário enviado por jose.freitas.rj em 19/02/2012 - 13:36h:

Entendi Vinícius Pedra, eu também já fiz isso que você fez sobre o proxy e funcionou. Agora, o que está pegando é nas regras do firewall com tantas ETHs de saída. Como tenho 2 links de internet distintos em placas separadas eu queria saber como será as regras de entradas e saídas desses 2 links. Cito um exemplos abaixo que eu acho que deveria funcionar pra cada link.

iptables -A INPUT -i eth1 -s 0/0 -d xxxxxxxx -m tcp -p tcp --dport 25 -m state --state NEW -j ACCEPT
iptables -A FORWARD -i eth2 -s 0/0 -d xxxxxxxx -m tcp -p tcp --dport 110 -j ACCEPT
iptables -t mangle -A PREROUTING -i eth3 -s 0/0 -d xxxxxxxx -p tcp -m tcp --dport 80 -j TOS --set-tos 16
iptables -A PREROUTING -t nat -i eth3 -s 0/0 -d xxxxxxxx -m tcp -p tcp --dport 21 -j DNAT --to 192.168.3.253:21

OBS: Bem como terei algumas rotas de entrada e saída em funcionamento no mesmo servidor como está neste artigo acho eu que deveria funcionar.

[13] Comentário enviado por removido em 19/02/2012 - 21:24h:

oi aí, meu vizinho!!!
10.
;-))


[14] Comentário enviado por jose.freitas.rj em 29/02/2012 - 08:21h:

Aê pessoal, alguém saberia responder minha pergunta? Abraços...



Contribuir com comentário


  
Para executar esta ação você precisa estar logado no site, caso contrário, tudo o que for digitado será perdido.
Responsável pelo site: Fábio Berbert de Paula - Conteúdo distribuído sob licença GNU FDL
Site hospedado por:

Viva o Linux

A maior comunidade Linux da América Latina! Artigos, dicas, tutoriais, fórum, scripts e muito mais. Ideal para quem busca auto-ajuda em Linux.