Dois links de ADSL em um mesmo servidor


A divisão

Neste artigo mostrarei como fiz para dividir o tráfego de uma empresa em dois links ADSL ligados em um mesmo servidor utilizando iptables e iproute2. Como no meu caso o grande problema era o acesso aos e-mails que ficam em um provedor externo, dividi o tráfego de maneira que acessos POP e SMTP saíssem por um dos links e o restante dos serviços por outro. Nada impede que você personalize o script abaixo de maneira que atenda às suas necessidades.

A configuração do meu servidor e dos meus links é a seguinte:

  • Ambiente testado:
    • Distribuição: Fedora Core 2
    • 2 links ADSL de 1,5 Mb
  • A máquina possui 3 interfaces de rede:
    • Intranet: eth0 – 192.168.100.0/24
    • ADSL1: eth1 – 10.0.0.1/24 – Gateway: 10.0.0.138
    • ADSL2: eth2 – 10.1.1.2/24 – Gateway: 10.1.1.1

Neste exemplo, os serviços de e-mail passam pelo ADSL2 e os demais serviços pelo ADSL1. O gateway padrão da máquina é o 10.0.0.138 (do ADSL1). Não há configuração de gateway específico por interface. Segue o script que efetua a divisão dos links:

#!/bin/sh 

 # Interface da Intranet
 IF_LAN='eth0' 

 # Interfaces ADSL
 IF_ADSL1='eth1'
 IF_ADSL2='eth2' 

 # Gateways dos ADSL (IPs dos roteadores)
 GW_ADSL1='10.0.0.138'
 GW_ADSL2='10.1.1.1' 

 # Mascarar saídas para os dois ADSL
  ------------------------------------------------------------
 iptables -t nat -A POSTROUTING -o $IF_ADSL1 -j MASQUERADE
 iptables -t nat -A POSTROUTING -o $IF_ADSL2 -j MASQUERADE 

 # Marca com "2" os pacotes que saem pelas portas  25 (SMTP) e 110 (POP)
  ------------------------------------------------------------
 iptables -t mangle -A PREROUTING -i $IF_LAN -p tcp --dport 25 -j MARK  --set-mark 2
 iptables -t mangle -A PREROUTING -i $IF_LAN -p tcp --dport 110 -j MARK  --set-mark 2
 iptables -t mangle -A OUTPUT -p tcp --dport 25 -j MARK --set-mark 2
 iptables -t mangle -A OUTPUT -p tcp --dport 110 -j MARK --set-mark 2 

 # Joga serviços de e-mail (pacotes marcados com 2)  para o ADSL2
  ------------------------------------------------------------
 ip rule add fwmark 2 table 20 prio 20
 ip route add default via $GW_ADSL2 dev $IF_ADSL2 table 20 

 # Atualiza tabela de roteamento
 #  ------------------------------------------------------------
 ip route flush cache

12 Responses to Dois links de ADSL em um mesmo servidor

  1. Jorge disse:

    Cara aqui na minha cidade, chegou recentemente o Velox, mas a velocidade que disponibilizam é de apenas 300k e 600k, porém eu queria mais do que isso, então comprei dois links de 600k (1200M) para colocar na minha lan-house, mas nao sabia como colocar os dois como se fossem um único de 1200M para distribiuir pela lan usando apenas um servidor linux.

  2. Claudio disse:

    Jorge :
    Cara aqui na minha cidade, chegou recentemente o Velox, mas a velocidade que disponibilizam é de apenas 300k e 600k, porém eu queria mais do que isso, então comprei dois links de 600k (1200M) para colocar na minha lan-house, mas nao sabia como colocar os dois como se fossem um único de 1200M para distribiuir pela lan usando apenas um servidor linux.

    Cara a tua cidade é Macapá, porque eu moro em Macapá e a situação aqui é muito parecida com a q tu disse.

  3. Leandro disse:

    Tenho uma 2 net em minha região… nunca vi ou não sei o que é uma uma adsl…minha internet aqui é via radio… que chega no meu pc pelo cabinho azul de rede… quero contratar 2 links, 1 seria pra http e outra pra jogos… vc teria algum tutorial como fazer isso? e se uma cair fazer com a que ta funcionando aguentar toda a rede ou no manual?

    • admin disse:

      Caro Leandro, recebi sua dúvida e confesso que não entendi bem a pergunta, mas andei pesquisando na internet sobre o assunto e resolvi colocar esse artigo no blog, espero que seja isso. Clique aqui.
      Abraço.

  4. Richard Campos disse:

    Cara executei o teu script com sucesso. Estou tendo um problema, tenho um ip fixo e outro dinâmino da netvirtua e esseip dinâmico só funciona em bridge. Sendo que a cada reciclagem do dhcliente eu perco a tabela criada pelo iproute e fico sem comunicação nesse link. você saberia alguma forma de bloquear a remoção dessa tabela? Já tentei pelo dhclient-exit-hooks mas sem sucesso, ele derruba a rota e depois recria e nessa situação se eu estiver com uma conexao aberta eu vou perder ela.

    Obrigado pela colaboração, o teu script foi o UNICO testato e aprovado.

    Abraço.

  5. Crystle disse:

    You really make it seem so easy together with your presentation but I to find this topic
    to be really one thing which I think I’d never understand. It kind of feels too complicated and extremely huge for me. I’m
    looking ahead in your subsequent submit, I’ll try to get the cling of it!

  6. Felipe disse:

    Wow, that’s what I was searching for, what a data! existing here at this website, thanks admin of this web page.

  7. Suzanne disse:

    I’m not sure exactly why but this weblog is loading very slow for me. Is anyone else having this issue or is it a problem on my end? I’ll
    check back later and see if the problem still exists.

  8. I love what you guys are usually up too. This type of clever work and coverage!
    Keep up the wonderful works guys I’ve included you guys to my blogroll.

Conte-nos o que achou...

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s

%d blogueiros gostam disto: