Configure two internet links on linux

From Pruonckk.org

Conteúdo

Prefacio

A Ideia deste documento é demonstrar o procedimento para você ter dois links funcionando no linux, uma das finalidades desta função pode ser balancemento de link, antes de você poder jogar o trafego em um ou outro link é necessário que os dois estejam devidamente configurados e respondendo.

Eu pessoalmente utilizei isso em um servidor que eu precisava sempre ter conectividade até ele, então ficava os dois links respondendo o tempo todo, se um desse algum problema eu ainda tinha acesso através do outro link


Neste manual não estamos levando em conta a configuração básica, e sim apenas a configuração referente ao iproute,

É importante lembrar que caso você tenha um AS esta solução não é a ideal, o correto seria vocẽ ter uma sessão de BGP com cada operadora fazendo o balanceamento de entrada e controlando as rotas de saida, eu utilizo o Quagga para esta função (suporte a OSPF, RIP, BGP4, ISIS além de rotas estaticas)


Para verificar sobre como fazer o balanceamento de carga por porta verifique os links abaixo

http://www.dicas-l.com.br/arquivo/roteamento_avancado_linux_utilizando_iproute_e_iptables_load_balance.php
http://torontux.blogspot.com/2010/04/load-balance-com-o-linux.html
http://lartc.org/howto/lartc.rpdb.multiple-links.html#AEN298
http://wiki.robotz.com/index.php/Iproute2

Imaginando o ambiente

Vamos imaginar que eu tenho dois links, um é a rede 192.168.1.0/24 (gateway 192.168.1.1) e o outro é o 192.168.2.0/24 (gateway 192.168.2.1), nossa rede será a rede 172.16.10.0/24 (172.16.10.1 é o nosso roteador/gateway Linux)


Instalando as ferramentas

Inicialmente apenas precisamos ter o iproute instalado, para isso execute o comando abaixo.

apt-get install iproute

Configurando o iproute

A Configuração do iproute na verdade consta apenas na criação da tabela de roteamento extra, o resto é regra de roteamento apenas.

abra o arquivo /etc/iproute2/rt_tables e adicione ao fim do arquivo o seguinte conteudo.

200 link2


Criando um script para levantar as rotas

Vá até o diretorio /etc/init.d/ e crie o arquivo roteamento

touch /etc/init.d/roteamento

Depois de permissão de execução no mesmo

chmod +x /etc/init.d/roteamento


Agora vamos editar o arquivo e colocar o seguinte conteudo.

#!/bin/bash
#


start(){
   # Configuracoes do primeiro link

   # Interface que recebe o link 1
   IF_LINK1="eth0"

   # IP DO Gateway
   IP_GW_LINK1="192.168.1.1"

   # Meu ip 
   IP_ME_LINK1="192.168.1.2"

   # Definindo o tamanho da rede
   IP_NET_LINK1="192.168.1.0/24"


   # Configuracoes do segundo link

   # Interface que recebe o link 2
   IF_LINK2="eth1"

   # IP DO Gateway 
   IP_GW_LINK2="192.168.2.1"

   # Meu ip
   IP_ME_LINK2="192.168.2.2"

   # definindo o tamanho da rede
   IP_NET_LINK2="192.168.2.0/24"

   # Configuração da interface local

   # Interface LAN (acesso local)
   IF_LOCALNET="eth2

   # Ip na interface local
   IP_ME_LOCALNET="172.16.10.1"

   # tamanho da rede
   IP_NET_LOCALNET="172.16.10.0/24"


   # Adicionando rota para que sempre que o destino for nossa rede 2 enviar o pacote
   # para a tabela link2
   /sbin/ip route add $IP_NET_LINK2 dev $IF_LINK2 src $IP_ME_LINK2 table link2

   # Adicionando o gateway default na tabela link2
   /sbin/ip route add default via $IP_GW_LINK2 table link2

   # Adicionando a regra para que todo o trafego com origem no nosso ip do link2 
   # seja direcionado para a tabela 2
   /sbin/ip rule  add from $IP_ME_LINK2 table link2

   # Adicionando uma rota de teste no segundo link
   /sbin/ip route add 204.16.0.1/32 via $IP_GW_LINK2

}


stop(){
   /sbin/ip rule del from $IP_ME_LINK2 table link2
   /sbin/ip route del default via $IP_GW_LINK2 table link2
   /sbin/ip route del $IP_NET_LINK2 dev $IF_LINK2 src $IP_ME_LINK2 table link2
   /sbin/ip route del 204.16.0.1/32 via $IP_GW_LINK2

}


case $1 in 
   start)
      start
   ;;
   stop)
      stop
   ;;
   restart)
      stop
      start
   ;;
   *)
      echo "Utilize start | stop | restart"
   ;;
esac


Realizando os testes

O melhor modo de testar é utilizando o MTR , digite mtr braslink.com e veja a rota, após levantar estas regras, faça o mtr também para 204.16.0.1 e veja oque irá ocorrer na rota.

Outros modos de uso

Uma opção para uso desta ferramenta é utilizando as funções de marcação de pacotes no iptables ou do proprio tc para poder fazer um balanceamento de carga por seviços, maximizando assim a utilização dos links.


Colocando na inicialização

Caso voce esteja utilizando debian basta você digitar o comando abaixo.

ln -s /etc/init.d/roteamento /etc/rc2.d/S99roteamento
Ferramentas pessoais
Inutilidades