Conexões redundantes e com balanceamento de carga - Ubuntu 9.04

Como distribuir o tráfego da rede local por várias conexões de internet, dividindo por redes, e deixá-las redundantes (se uma cair, a outra assume todo o tráfego). Configuração feita em um Ubuntu Server 9.04.

[ Hits: 50.250 ]

Por: Reinaldo Borges em 23/10/2009


Introdução e preparação



Introdução

Cenário:
  • Três redes locais (192.168.251.0/24, 192.168.252.0/24 e 192.168.253.0/24).
  • Três conexões com a internet (conexões ADSL PPPoE).
  • Firewall deve fazer distribuição do tráfego, cuidar da redundâncias das conexões e aceitar conexões de entrada nas duas ADSLs.

O Firewall roda Ubuntu Server 9.04. A localização dos arquivos de configuração podem variar se sua distribuição for diferente.

Bastam duas conexões para que a configuração funcione. Vou mostrar com três conexões, já que foi o meu caso. O processo é mesmo se quiser usar mais conexões.

1) Configurar conexões ADSL

Não vou entrar em detalhes, mas cada um dos modens deve estar conectado à uma interface (placa de rede) diferente, senão os pacotes de configuração da conexão PPPoE serão confundidos. Os modens devem estar no modo Bridge/Ponte.

Feito isso, crie um arquivo de configuração para cada provedor na pasta /etc/ppp/peers/

Exemplo de um arquivo (com comentários):

# recebe endereço IP do provedor
noipdefault
# define a rota padrão
defaultroute
# esconde a senha
hide-password
# não solicita que o provedor se autentique
noauth
# mantém a conexão ativa e tenta reconectar se cair
persist
# indique aqui em qual interface está o modem desse provedor (eth0, eth1, eth2, ...)
plugin rp-pppoe.so eth1
# nome do usuário
user "[email protected]"
# IMPORTANTE
# esse parâmetro define qual número de interface ppp recebera (ppp0, ppp1, ppp2, ...)
# É importante que tenha sempre o mesmo número para o funcionamento dos scripts
unit 1

Nos scripts usarei os arquivos /etc/ppp/peers/gvt1, /etc/ppp/peers/gvt2 e /etc/ppp/peers/oii.

As conexões da GVT serão sempre ppp1 e ppp2, e da Oi será ppp3.

Lembre-se também de configurar a senha nos arquivos /etc/ppp/chap-secrets e /etc/ppp/pap-secrets.

Basta acrescentar uma linha para cada provedor:

"[email protected]" * "senha"

Para conectar, digite:

# pon gvt1

Onde "gvt1" é o nome do arquivo que você criou em /etc/ppp/peers/.

Para desconectar, digite:

# poff gvt1

2) Preparar tabelas de rotas

Para facilitar o entendimento dos scripts, nomearemos nossas tabelas de roteamento. Para isso edite o arquivo /etc/iproute2/rt_tables e acrescente no final os números e nomes das tabelas de roteamento:
21   GVT1
22   GVT2
23   OI1

    Próxima página

Páginas do artigo
   1. Introdução e preparação
   2. Personalizar script de conexão e desconexão
   3. Configurar as rotas e regras
   4. Início automático e conclusão
Outros artigos deste autor
Nenhum artigo encontrado.
Leitura recomendada

Configurando firewall básico para compartilhar internet

Configurando firewall Shorewall no CentOS

Segurança com iptables

Iptables detalhado

Squid + iptables (método ninja)

  
Comentários
[1] Comentário enviado por grandmaster em 24/10/2009 - 08:21h

Sempre util.

---
Renato de Castro Henriques
CobiT Foundation 4.1 Certified ID: 90391725
http://www.renato.henriques.nom.br

[2] Comentário enviado por xloko em 17/11/2009 - 13:51h

Olá! isso funciona no DEBIAN?

[3] Comentário enviado por zarreff em 29/05/2011 - 12:59h

Muito bom mesmo!

Mas se eu quisesse utilizar uma conexão para toda a rede, e manter uma outra apenas para conexão do servidor para internet.
Como eu faria?
Preciso utilizar DMZ no modem da outra conexão, mas não está funcionando.
O servidor não está se comunicando.

A solução seria mesmo o iproute2.

[4] Comentário enviado por reinaldoborges em 21/01/2013 - 09:53h

ERRATA!!!

No passo (3), antes das linhas:

# Atualizar tabela de rotas
ip route flush cache


Acrescente a seguinte linha:

ip rule add from $PPP_LOCAL/32 lookup $TABELA prio 10


E no passo (4), acrescente no final do arquivo as linhas:

ip rule del from $PPP_LOCAL/32 lookup $TABELA prio 10
ip route flush cache


Contribuir com comentário