Eu tenho duas conexões com a Internet de dois ISPs diferentes e preciso equilibrar o tráfego originário de e para minha rede entre os dois ISPs. Estou usando o Debian GNU / Linux.
Minha configuração é assim -
eth0
(192.168.0.0/24) - Rede local
eth1
(192.168.1.0/24) - ISP nº 1
eth2
(192.168.2.0/24) - ISP # 2
Minha rede local está conectada a esse servidor via eth0 e a caixa é o servidor DHCP cum Gateway para todas as máquinas na LAN.
O servidor precisa fazer o balanceamento de carga entre os dois ISPs e também o NAT.
Eu segui as instruções de roteamento no lartc.org, mas ainda preciso de instruções para fazer o NAT corretamente.
Qualquer ajuda será apreciada.
PS - Eu sei sobre o pFsense, mas preciso usar o Linux.
linux
networking
load-balancing
nat
local-area-network
Baishampayan Ghose
fonte
fonte
Respostas:
Fiz o balanceamento de carga usando os métodos lartc.org e iptables e acho que o método iptables é mais fácil de entender e implementar. A única desvantagem é que você precisa de uma versão bastante recente do iptables para poder usar o módulo estatístico
Vamos supor algumas coisas:
LAN: eth0: 192.168.0.1/24
ISP1: eth1: 192.168.1.1/24, gateway: 192.168.1.2/24
ISP2: eth2: 192.168.2.1/24, gateway: 192.168.2.2/24
Então, aqui está como eu faria usando o método iptables:
Tabelas de rotas
Primeiro edite o / etc / iproute2 / rt_tables para adicionar um mapa entre os números da tabela de rotas e os nomes de ISP
Portanto, as tabelas 10 e 20 são para ISP1 e ISP2, respectivamente. Preciso preencher essas tabelas com rotas da tabela principal com esse trecho de código (que eu peguei no hxxp: //linux-ip.net/html/adv-multi-internet.html)
E adicione o gateway padrão ao ISP1 através do gateway do ISP1:
Faça o mesmo para o ISP2
Então agora eu tenho 2 tabelas de rotas, 1 para cada ISP.
Iptables
OK, agora eu uso o iptables para distribuir uniformemente pacotes para cada tabela de rota. Mais informações sobre como este trabalho pode ser encontrado aqui ( http://www.diegolima.org/wordpress/?p=36 ) e aqui ( http://home.regit.org/?page_id=7 )
NAT
Bem, NAT é fácil:
fonte
A resposta da mefat me ajudou muito, mas em vez de uma cópia única de todas as regras da tabela principal nas duas tabelas ISP, uma abordagem melhor pode ser usar o prio da regra para adicionar as regras padrão depois da tabela principal.
Configure / etc / iproute2 / rt_tables como normal:
Observe que
Mostra as regras 0-> local, 32766-> principal e 32767-> padrão. Veja
man ip
para mais detalhes.Crucialmente, o processo de roteamento funcionará das regras de baixo prio a alto prio ... mas 32767 não é a regra mais alta #. Portanto, se a tabela de roteamento principal não tiver uma rota padrão (mas pode conter todos os tipos de rotas dinamicamente alteradas para vpns etc.), se uma correspondência não for feita, ela retornará ao padrão (normalmente vazio) e procurará regras mais altas.
Veja a seção 'throw' aqui: http://linux-ip.net/html/routing-tables.html
Então agora configure
e para garantir que eles sejam vistos depois da tabela principal:
Usar
novamente para verificar se essas regras são superiores às principais
Em seguida, use CONNMARK mangling como mefat disse:
O que deve ser observado: o pppd precisa,
nodefaultroute
caso contrário, ele será configurado no main; Quando um dispositivo reinicia, as tabelas ISP1 / ISP2 são limpas e, portanto, precisam ser restauradas usando um script.Eu uso um script em /etc/ppp/ip-{up,down}.d/dual-routing
Isso é balanceamento de carga baseado em conexão, por isso vou usar o load para monitorar e substituir a regra de estatísticas:
iptables -t mangle -R PREROUTING <n>
no espaço do usuário. Portanto, se houver um download de uma execução demorada em uma conexão e a outra estiver levemente carregada, devemos preferir a conexão levemente carregada.fonte