Para balancear as conexões de saída, tudo o que você precisa é o padrão iptables
e algum roteamento de políticas. Isso fica um pouco complexo com 4 conexões, pois você precisará reconfigurar e reequilibrar os links à medida que as conexões entrarem e saírem.
A configuração iptables
bruta é
-
Crie uma tabela de roteamento para cada conexão
ip rule add fwmark 10 table PHONE0 prio 33000 ip rule add fwmark 11 table PHONE1 prio 33000 ip rule add fwmark 12 table PHONE2 prio 33000 ip rule add fwmark 13 table PHONE3 prio 33000
-
Adicione o gateway padrão para cada conexão a cada tabela (o IP do gateway variará de acordo com cada provedor / configuração de telefones)
ip route add default via 192.168.1.2 table PHONE0 ip route add default via 192.168.9.1 table PHONE1 ip route add default via 192.168.13.2 table PHONE2 ip route add default via 192.168.7.9 table PHONE3
-
Marque aleatoriamente qualquer fluxo não marcado, que irá rotear o fluxo através de uma conexão específica.
OUTPUT
é usado para processos locais. UsePREROUTING
se você estiver encaminhando tráfego para outros clientes)iptables -t mangle -A OUTPUT -j CONNMARK --restore-mark iptables -t mangle -A OUTPUT -m mark ! --mark 0 -j ACCEPT iptables -t mangle -A OUTPUT -j MARK --set-mark 10 iptables -t mangle -A OUTPUT -m statistic --mode random --probability 0.25 -j MARK --set-mark 11 iptables -t mangle -A OUTPUT -m statistic --mode random --probability 0.25 -j MARK --set-mark 12 iptables -t mangle -A OUTPUT -m statistic --mode random --probability 0.25 -j MARK --set-mark 13 iptables -t mangle -A OUTPUT -j CONNMARK --save-mark
-
NAT para cada uma das conexões (a interface precisará ser a conexão telefônica que aparecer para o sistema)
iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE iptables -t nat -A POSTROUTING -o ppp1 -j MASQUERADE iptables -t nat -A POSTROUTING -o ppp2 -j MASQUERADE iptables -t nat -A POSTROUTING -o ppp3 -j MASQUERADE
Observe que uma única conexão TCP ou UDP não terá aceleração, pois ainda estará passando por um único link. Você tem que usar várias conexões simultâneas (pelo menos 4) para fazer uso da largura de banda extra. A maioria dos navegadores faz isso sob o capô ao solicitar vários objetos. Alguns gerenciadores de download permitem que você use várias conexões para um único arquivo.
Como garethTheRed sugere, ispunity
adiciona um pouco da "cola" no topo desta iptables
setup para percorrer uma lista de conexões, verificar se o gateway está respondendo, reequilibrar se algo estiver errado, etc. " sessão pegajosa "gerenciamento parece ser configuração adicional por porta em cima de sua base" round robin "balanceamento de carga de conexões. Outra solução é o Net-ISP-Balance , um script Perl e uma biblioteca que automatiza o iptables e a configuração da tabela de roteamento, monitora o status do ISP, alerta sobre problemas e reconfigura o roteamento no caso de um ou mais ISPs se tornarem inacessíveis.
Observe também que as solicitações provenientes de vários IPs podem interromper alguns serviços que são baseados em pesquisas de IP consistentes e você pode precisar adicionar regras adicionais para esses serviços para vinculá-los a uma conexão. Você não verá nenhuma aceleração em conexões únicas, apenas quando estiver fazendo 4 coisas ao mesmo tempo, o que a maioria dos navegadores tentará fazer de qualquer maneira.
ipvs
é mais para criar um endereço de serviço virtual para as coisas que você hospeda, para que o serviço possa ter failover entre vários hosts.