Crie um balanceador de carga Linux multi-homed com duas conexões à Internet e uma conexão LAN

10

OK, ... isso possivelmente foi respondido, infelizmente, não encontrei nada que pareça ser a resolução.

Eu olhei para estas páginas e elas têm algumas informações úteis, mas não resoluções completas:

  1. Balanceamento de carga e NAT - várias conexões ISP no Linux
  2. Duas conexões com a Internet e 1 NIC, possível?
  3. Acesso dividido ao Linux (várias conexões à Internet com balanceamento de carga)
  4. firewall linux + conexões ISP de balanceamento de carga

Eu usarei o Debian 8, Ubuntu 16.04 Desktop ou Ubuntu 16.04 Server (para ser sincero, provavelmente o Debian).

OK, então terei três NICs instaladas, dois gigabit e a conexão LAN interna de 100 mbps. As conexões ISP usarão as placas de LAN de gigabit via autenticação PPPoE nas duas placas de rede (se isso for possível, caso contrário, optarei pelo modo sem ponte nos modems DSL). E ambas as redes terão um IP estático atribuído a elas. Atualmente (o que será alterado), a conexão principal possui um grupo de cinco. Preciso rotear o tráfego que chega em um desses endereços IP para o servidor apropriado na rede.

Aqui estão as minhas perguntas:

  1. Como faço para configurar isso? Eu uso NAT, Chans de IP, Mascaramento de IP, Roteamento, etc ...?
  2. Como rotear o tráfego que entra no sistema de fora para um endereço IP específico na rede?

Por favor, seja gentil, esta é a primeira vez que tentei algo assim antes :).

EDIT 1

Esqueceu de adicionar a topologia de rede:

Layout de rede interna

EDIT 2

Acabei de perceber uma coisa ... Para fazer a autenticação PPPoE, precisarei forçar a autenticação de credenciais em uma interface específica. Como isso é feito?

Eu postei essa pergunta aqui:

Crie um balanceador de carga Linux multi-homed com duas conexões à Internet e uma conexão LAN

ATUALIZAÇÃO 1

Ainda não foi possível fazer o rodízio multihop funcionar. Tentei seguir as etapas descritas nos seguintes sites sem sorte:

  1. Balanceamento de carga e NAT - várias conexões ISP no Linux
  2. Linux - Conexões duplas à Internet / Balanceamento de carga
  3. COMO FAZER: Multi-roteamento com Linux

Continuo recebendo uma mensagem informando que o arquivo já existe ou é um dispositivo inválido. Aqui estão / são minhas configurações / informações

IFCONFIG

eth0      Link encap:Ethernet  HWaddr ec:08:6b:04:8e:ac  
          inet addr:172.16.0.2  Bcast:172.16.0.255  Mask:255.255.255.0
          inet6 addr: fe80::ee08:6bff:fe04:8eac/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:9525 errors:0 dropped:0 overruns:0 frame:0
          TX packets:7722 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:9306973 (8.8 MiB)  TX bytes:949815 (927.5 KiB)

eth1      Link encap:Ethernet  HWaddr ec:08:6b:04:8c:95  
          inet addr:172.16.1.2  Bcast:172.16.1.255  Mask:255.255.255.0
          inet6 addr: fe80::ee08:6bff:fe04:8c95/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:9 errors:0 dropped:0 overruns:0 frame:0
          TX packets:42 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:558 (558.0 B)  TX bytes:6344 (6.1 KiB)

eth2      Link encap:Ethernet  HWaddr 00:16:76:90:49:b7  
          inet addr:172.16.2.1  Bcast:172.16.2.255  Mask:255.255.255.0
          inet6 addr: fe80::216:76ff:fe90:49b7/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:3793 errors:0 dropped:0 overruns:0 frame:0
          TX packets:79 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:283119 (276.4 KiB)  TX bytes:10338 (10.0 KiB)

lo        Link encap:Local Loopback  
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:65536  Metric:1
          RX packets:32 errors:0 dropped:0 overruns:0 frame:0
          TX packets:32 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1 
          RX bytes:1858 (1.8 KiB)  TX bytes:1858 (1.8 KiB)

Configuração de INTERFACES

# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

source /etc/network/interfaces.d/*

# The loopback network interface
auto lo
iface lo inet loopback

auto eth0
allow-hotplug eth0
iface eth0 inet static
    address 172.16.0.2
    netmask 255.255.255.0
    gateway 172.16.0.1
    network 172.16.0.0
    broadcast 172.16.0.255

auto eth1
allow-hotplug eth1
iface eth1 inet static
    address 172.16.1.2
    netmask 255.255.255.0
    gateway 172.16.1.1
    network 172.16.1.0
    broadcast 172.16.1.255

auto eth2
allow-hotplug eth2
iface eth2 inet static
    address 172.16.2.1
    netmask 255.255.255.0
    network 172.16.2.0
    broadcast 172.16.2.255

ETH0

Esta é a minha conexão WAN principal.

ETH1

Esta é minha conexão WAN secundária.

ETH2

Esta é a minha conexão LAN interna.

Consegui fazer com que o roteamento funcionasse em uma interface WAN e vinculado à LAN interna; no entanto, não consigo replicar isso e não faço ideia do porquê.

John Schultz
fonte
Eu acho que você tem a resposta no primeiro link que você postou. Se os servidores estiverem na sua LAN e tiverem endereços particulares, você definitivamente precisará do NAT. Basicamente, você precisa dividir o seu problema em dois: 1) Tráfego chegando, 2) Tráfego saindo. Então ... você precisa apenas para balanceamento de carga ou também para alta disponibilidade? Você precisa ter tabelas de roteamento diferentes para provedores diferentes (regra de ip) e, em seguida, marcar os pacotes recebidos para que eles retornem ao mesmo provedor. Para o tráfego de saída, você pode equilibrá-lo.
precisa saber é o seguinte
OK, ... sim, pense bem, precisarei ser capaz de rotear o tráfego adequadamente (NATing) e definitivamente preciso que as duas conexões recebidas sejam balanceadas. Tão efetivamente tendo o dobro da velocidade em vez da velocidade única. Estou pensando nisso corretamente?
John Schultz
Você tem BGP do lado de fora? Se você tiver links de internet separados, poderá "dobrar a velocidade" apenas no lado de saída. O lado de entrada só rastrear pacotes de entrada e certifique-se que eles saem na mesma linha como eles entraram.
Jure1873
Eu meio que imaginei que seria esse o caso. Não, eu não tenho BGP fora este local :( (não sei mesmo o que é).
John Schultz

Respostas:

4

Com a ajuda de alguns amigos que me ajudaram a pesquisar isso, finalmente consegui fazê-lo funcionar.

Teve que executar este script para encaminhar corretamente o tráfego TCP / IP:

#!/bin/sh

PATH=/usr/sbin:/sbin:/bin:/usr/bin

# Primary Connection - 2085426230
   IF1=eth0
   IP1=172.16.0.2
    P1=172.16.0.1
P1_NET=172.16.0.0

# Secondary Connection - 2085420213
   IF2=eth1
   IP2=172.16.1.2
    P2=172.16.1.1
P2_NET=172.16.1.0

# Local Network
   IF3=eth2
   IP3=172.16.2.2
    P3=172.16.2.1
P3_NET=172.16.2.0

T1=WAN1
T2=WAN2

# delete all existing rules.
iptables -F
iptables -t nat -F
iptables -t mangle -F
iptables -X

# Always accept loopback and WAN traffic
iptables -A INPUT -i lo -j ACCEPT
iptables -A INPUT -i ${IF1} -j ACCEPT

# Allow established connections, and those not coming from the outside
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A FORWARD -i ${IF1} -o ${IF3} -m state --state ESTABLISHED,RELATED -j ACCEPT

# Allow outgoing connections from the LAN side.
iptables -A FORWARD -i ${IF3} -o ${IF1} -j ACCEPT

# Masquerade.
iptables -t nat -A POSTROUTING -o ${IF1} -j MASQUERADE

# Enable routing.
echo 1 > /proc/sys/net/ipv4/ip_forward

Então eu instalei o Net-ISP-Balance . Depois que os scripts foram executados e instalados, eu fui ao WhatsMyIP duas vezes e, com certeza, as duas interfaces estão roteando o tráfego, pois o whatsmyip mostrou os dois endereços IP depois que eu atualizei a atualização.

AVISO LEGAL Isso funcionou para o meu layout de rede, configuração e ajustes específicos. Seus resultados podem variar.

John Schultz
fonte
Fiz um teste de velocidade .... Eu tenho um aumento de 24% no meu tráfego de descarregamento e 90% no meu tráfego de descarregamento.
John Schultz