FreeBSD carrega divisão e failover com 2 WANs (roteamento dinâmico)

2

Eu tenho um servidor freebsd (ipfw, dhcp, dns) com uma interface LAN e 2 interfaces WAN (2 linhas ADSL diferentes).

As interfaces WAN (re0 e re1) são agregadas em um failover lagg0 (ifconfig_lagg0="laggproto failover laggport re0 laggport re1").

O que eu gostaria de usar é o tráfego de roteamento direcionado a algumas redes para re1, failover para re0 quando re1 link fica inativo, mas ainda uso re0 e failover para re1 por padrão.

É possível?

Obrigado.

[UPDATE]

Ok, então a união não é uma solução possível (e agora vejo que era óbvio).

Como posso atualizar automaticamente o roteamento no gateway quando o link em uma das linhas fica inativo? Eu não me importo se eu preciso mudar de ipfw para pf (eu estava planejando o switch de qualquer maneira).

Obrigado novamente.

    
por Massimiliano Torromeo 23.06.2009 / 19:09

2 respostas

2

Isso NÃO é possível, considerando apenas a configuração que você descreveu. A agregação de links (ou "ligação", como às vezes é chamada) não fornece balanceamento de carga ou failover entre vários provedores de upstream. Sua configuração atual não parece servir a nenhum propósito útil, a menos que você esteja deixando de fora alguns detalhes importantes de configuração de roteamento e / ou IP.

A agregação de links é estritamente um protocolo da camada 2 (Ethernet). Ele pode fornecer balanceamento de carga e / ou failover quando você possui vários links Ethernet físicos para um único comutador ou host upstream. Mas dois uplinks DSL diferentes (mesmo se eles ligarem para o mesmo provedor) são dois dispositivos diferentes. A ligação de várias linhas DSL é possível e, portanto, está ligando várias linhas T1, se os dispositivos de roteador / ponte que terminam os loops de telecomunicações (ou seja, a caixa DSL que você conecta à linha telefônica) suportam o mesmo protocolo específico (por exemplo, T1, DSL, etc.) técnica de colagem.

Seu host do FreeBSD não pode unir vários links DSL, a menos que você instale cartões DSL nele que ofereçam esse recurso. E mesmo assim, o seu ISP teria que suportar a ligação no seu DSLAM (o equipamento na outra extremidade das suas linhas DSL, na companhia telefônica CO).

O balanceamento de carga e / ou failover do tráfego IP, usando vários links upstream, DEVE ser tratado com técnicas de roteamento (Camada 3, IP).

Para ser justo, eu posso ter assumido muito sobre os detalhes que você deixou de fora. Você poderia atualizar sua pergunta com mais algumas informações sobre sua configuração?

  • Quais endereços IP estão vinculados a re0, re1 e / ou lagg0?
  • Você configurou uma única rota de gateway upstream ou está usando uma configuração de roteamento mais complexa (daemons de roteamento dinâmico, encaminhamento de IP / reconfiguração de cabeçalho, regras de roteamento baseadas em IP de origem, etc.)?
  • Se você estiver usando uma configuração de roteamento complexa, poderia descrevê-la em detalhes?
  • As duas linhas telefônicas DSL terminam em um único dispositivo (modem, roteador, bridge, etc.) ou cada linha DSL tem sua própria caixa? Se as duas linhas compartilham uma caixa, você tem tanto re0 quanto re1 conectados diretamente nessa caixa?
  • Suas linhas DSL vêm do mesmo provedor? Em caso afirmativo, o seu ISP oferece suporte à ligação DSL? Em caso afirmativo, seu plano de serviço atual está configurado para ligação? (ou seja, você solicitou linhas DSL alfandegárias e elas o prepararam para a colagem?)
por 23.06.2009 / 21:56
1

Eu posso estar entendendo mal sua situação e eu certamente nunca fiz nada desse tipo com o freebsd, mas ...

Um exame rápido do lagg faz com que pareça um mecanismo de redundância de camada 2, em que o endereço IP está flutuando entre um número de interfaces, mas o endereço IP nunca muda.

Em seus links DSL - eles são para provedores diferentes? Se forem, acho que você precisaria de um mecanismo de reconhecimento da camada 3.

Se forem para provedores diferentes, você precisará fazer algo com suas tabelas de roteamento para que o link 1 vá para um conjunto de endereços IP remotos e o outro receba o restante, ou talvez uma interface seja usada para tráfego da web de saída e o outro é usado para todo o resto. Normalmente, isso é feito com "rotas de políticas" para pequenas organizações e BGP para organizações maiores.

Por último, eu olhei para pf em vez de ipfw. É super sofisticado e totalmente incrível. Exemplos de páginas que discutem o que você está procurando

link

O artigo acima tem uma discussão sobre como balancear a carga de tráfego de saída.

Eu só olhei os documentos pf por um segundo, mas não parece que há um rastreamento de link ou mecanismo de rastreamento de ping diretamente na funcionalidade pf.

Eu acabei de fazer 3 pf config files - only.link1, only.link2 e balance.links. Então, certifique-se de que na configuração de links de equilíbrio você não equilibre o tráfego para o próximo salto (assim, o tráfego para o próximo salto do link1 nunca passa pelo link2 e pelo inverso). Em seguida, execute um script que faça um teste de ping para o próximo salto de cada interface e, se isso falhar, mude as configurações pf para a outra interface exclusivamente. Equipamentos de rede que fazem vrrp geralmente têm esse tipo de funcionalidade, mas incorporados ao dispositivo não como parte de um script perl cortado, mas devem funcionar da mesma forma.

    
por 23.06.2009 / 21:09