Meu PC possui um total de 4 NICs, 2 placas de rede Gigabit Ethernet com fio e também 2 placas de rede sem fio. (Um Broadcom com drivers proprietários e Ralink com software de código aberto, que funciona muito melhor que o Broadcom.)
Meu celular pode compartilhar sua conexão sem fio com o meu PC, mas também tenho uma conexão com a Internet com fio. Então, eu tenho várias conexões com a Internet para acessar a Internet. Como posso mesclar 2 ou mais conexões e equilibrá- las para aproveitar uma experiência unificada da Internet, que é a soma de todas as conexões à Internet conectadas a ela.
Por exemplo, se eu tiver um modem com uma conexão à Internet de 1024kB / s e outro que ofereça 512kB / se um pequeno que ofereça 128kB / s, após balancear a carga e mesclar todas as conexões (Bonding ou Teaming), eu poderia fazer o download em uma velocidade de 1664kB / s usando todas as três conexões à Internet como uma, por exemplo.
Esta pergunta sempre me intrigou.
fonte
Respostas:
Eu faço algo assim no trabalho usando o Ubuntu 11.04. Executamos a ferramenta de configuração de firewall Shorewall, que além de excelente em seu trabalho, fornece algumas ferramentas rudimentares de roteamento de vários ISPs que podem atender às suas necessidades. Você pode encontrar alguns documentos sobre isso aqui: http://www.shorewall.net/MultiISP.html
No entanto, o que se resume é que você não pode usar vários ISPs para uma única conexão ... as coisas não são tão simples. O melhor que você pode fazer é tentar direcionar novas conexões igualmente entre os diferentes provedores.
É um problema complexo. Você provavelmente acabará batendo a cabeça contra a parede (eu certamente o fiz) antes de terminar de depurar todos os problemas. Portanto, como outros pôsteres sugeriram, talvez seja prudente considerar cuidadosamente o quão forte é o seu desejo.
fonte
Você pode fazer isso usando o pacote
ifenslave
que conecta e desconecta interfaces de rede escrava a um dispositivo de ligação.Instalar:
Módulo de kernel de ligação de carga
Configure suas interfaces:
Exemplo de configuração, para combinar eth0 e eth1 como escravos da sua interface de ligação:
Reinicie a rede:
Trazendo para cima / para baixo interface limitada:
Existem vários modos de ligação como exemplo que usamos:
Descrição do modo de ligação de backup ativo :
Política de backup ativo: Apenas um escravo no vínculo está ativo. Um escravo diferente se torna ativo se, e somente se, o escravo ativo falhar. O endereço MAC do vínculo é visível externamente em apenas uma porta (adaptador de rede) para evitar confundir o comutador. Este modo fornece tolerância a falhas. A opção principal afeta o comportamento deste modo.
Fonte e mais informações no wiki de ajuda da comunidade Ubuntu .
fonte
É uma pergunta um pouco antiga, mas se você ainda quer saber ..
Existem 2 cenários típicos, o que gertvdijk e pl1nk estavam discutindo em uma das respostas:
Você possui um computador com 2 IPs públicos (2 ISPs diferentes) e se conecta a outro host (por exemplo, um servidor em um datacenter com um tubo de gordura maior que a largura de banda agregada das duas conexões ISP do seu computador). Assim, você estabelece uma conexão de ligação ao host por meio de suas 2 conexões e, em seguida, o host (servidor) atende seu tráfego por meio de sua própria conexão com a Internet. Nesse cenário, você pode obter quase 100% da largura de banda combinada nas duas direções para uma única conexão.
Este é um caso particular de agregação de vínculo / formação de equipes / ling em que várias interfaces da camada 2 (mesma rede) são unidas. Isso poderia ser alcançado estabelecendo conexões VPN da camada 2 (toque) em cada interface do ISP do computador para o host e unindo-as (modo round-robin) para ter uma única interface. O fator limitante nesse cenário é o quão diferentes são os atrasos (ping) em cada conexão do provedor de serviços de Internet ao host. Quanto mais semelhantes e estáveis, melhor. Nós o usamos em uma de nossas instalações, funciona bem. Se você quiser saber os detalhes sobre como implementá-lo, entre em contato.
Então outro cenário seria sem um host intermediário, ou seja, uma conexão direta das interfaces do seu provedor de serviços de Internet a vários servidores da Web em todo o mundo. Nesse caso, o melhor que você pode obter é distribuir uniformemente as conexões de saída entre as interfaces - ou seja, uma sessão TCP passa inteiramente por um ISP, uma segunda sessão por outra e assim por diante. Isso ocorre porque, quando você estabelece uma conexão TCP, ela possui endereços IP de origem e destino para cada pacote e quando um servidor recebe um pacote de outro IP para o qual um handshake TCP não foi executado, ele considera o pacote incorreto e o elimina. Como cada conexão ISP possui seu próprio IP público, para a mesma sessão TCP, você não pode enviar um pacote por uma conexão de um IP e outro por outra conexão com outro IP.
Você não obterá uma utilização de largura de banda agregada tão alta para um único computador quanto no primeiro cenário, mas para um pequeno escritório, pode ser uma boa solução. O que você pode fazer para estender um pouco é implementar soluções personalizadas para protocolos específicos. Por exemplo, você pode ter algum tipo de proxy no gateway (que pode ser o mesmo computador) para downloads http e solicitar partes diferentes de um arquivo enorme, estabelecendo diferentes sessões TCP por meio de interfaces ISP diferentes. Nesse caso, a taxa de download resultante seria próxima a 100% da largura de banda combinada. É como transferir para o gateway o que o ReGet, GetRight e outros downloaders similares fazem. Conteúdo parcial do HTTP 206 do Google. Não conheço nenhuma solução de código aberto pronta para o uso para esse cenário, mas há dispositivos de hardware que fazem exatamente isso: google '
fonte
echo "bonding" >> /etc/modules
echo -e "alias bond* bonding\noptions bonding max_bonds=10 mode=2 xmit_hash_policy=layer3+4 arp_interval=100 arp_ip_target=10.0.0.1" > /etc/modprobe.d/bonding.conf
echo "+tapX " >> /sys/class/net/bond0/bonding/slaves
Verifique seu estado com:cat /proc/net/bonding/bond0
Nesse estágio, todo o tráfego da Internet deve fluir via bond0 para o servidor no datacenter. Lá você deve definir o encaminhamento:echo "net.ipv4.ip_forward = 1" >> /etc/sysctl.conf
sysctl -p /etc/sysctl.conf
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
(eth0 é suposto ser o iface internet)mode=2 xmit_hash_policy=layer3+4
especificarmode=0
(consulte o link @ kernel.org), mas primeiro verifique quão semelhantes são os links via 3G. Se seus tempos de ping diferirem mais de 2 a 3ms ou o jitter for maior que 1ms, você terá muitos reordenamentos de pacotes, reduzindo efetivamente a velocidade do link agregado. Você precisará verificar as estatísticas agregadas do link comnetstat -s
(procure retransmissões) eiperf -s
/iperf -c <server_ip> -d
. 1º verificar o desempenho de cada link, então podemos continuar com uma soluçãoenfrentei um problema semelhante .. e estava muito interessado na abordagem da solução de acordo com o primeiro cenário do sr. GTH e Anatoli, peço que você faça as configurações e scripts básicos, se possível, para testar a configuração descrita no primeiro cenário.
agora eu configurei as conexões VPN através de diferentes provedores de ISP, usando interfaces tun / tap combinadas (não está vinculado, o que é explicado na resposta # 8) com este utilitário:
Net-ISP-Balance por Lincoln D. Stein
Faça o balanceamento de carga da sua conexão à Internet em dois ou mais ISPs para melhorar a largura de banda e a confiabilidade
Página inicial do projeto: https://lstein.github.io/Net-ISP-Balance/
Este pacote permite balancear a carga de uma conexão à Internet doméstica ou de uma empresa de pequeno porte em dois ou mais ISPs. Você pode usá-lo com um único host conectado a dois ISPs ou em um roteador / firewall para equilibrar a carga em toda a LAN. O tráfego de rede é balanceado nas duas conexões ISP para aumentar a capacidade de upload e download e, se um ISP falhar, o outro ISP assumirá o controle automaticamente.
A largura de banda é distribuída em um nível por conexão. Isso significa que você não verá a largura de banda agregada em nenhum download ou benchmark de velocidade específico, mas verá os benefícios quando várias transferências de dados estiverem ocorrendo simultaneamente, por exemplo, quando várias pessoas em sua casa estiverem transmitindo filmes. Além disso, os protocolos de transferência de arquivos com várias conexões, como o BitTorrent, verão os benefícios do balanceamento de carga.
este é um utilitário baseado em Perl para gerenciamento de roteamento e iptables no Linux, perfeito para nossos propósitos; de fato, primeiro cria uma tabela de roteamento para todos os provedores e depois distribui todo o tráfego da LAN igualmente entre os provedores, para entender como o utilitário funciona, sugerir considerar um pequeno exemplo (configuração de teste) para 3 isp + 1 lan
fonte