Cree un equilibrador de carga de Linux con múltiples conexiones con dos conexiones a Internet y una conexión LAN

10

OK, ... esto posiblemente ha sido respondido, desafortunadamente, no he encontrado nada que parezca que podría ser la resolución.

He mirado estas páginas y tienen información útil, pero no resoluciones completas:

  1. Balanceo de carga y NAT-ing múltiples conexiones ISP en Linux
  2. Dos conexiones a Internet y 1 NIC, ¿es posible?
  3. Acceso dividido a Linux (múltiples conexiones a Internet con balanceo de carga)
  4. firewall de Linux + conexiones de ISP de equilibrio de carga

Usaré Debian 8, Ubuntu 16.04 Desktop o Ubuntu 16.04 Server (para ser honesto, muy probablemente Debian).

Bien, entonces tendré tres NIC instaladas, dos gigabits y la conexión LAN integrada de 100 mbps. Las conexiones ISP utilizarán las tarjetas LAN gigabit a través de la autenticación PPPoE en ambas redes (si esto es posible de lo contrario, me conformaré con el modo sin puente en los módems DSL). Y ambas redes tendrán asignada una IP estática. Actualmente (que cambiará) la conexión primaria tiene un grupo de cinco. Necesito enrutar el tráfico que ingresa en una de esas direcciones IP al servidor adecuado en la red.

Aquí están mis preguntas:

  1. ¿Cómo configuro esto? ¿Utilizo NATing, IP Chans, IP Masquerading, Routing, etc.?
  2. ¿Cómo enruto el tráfico que ingresa al sistema desde el exterior a una dirección IP específica en la red?

Por favor, sé amable, esta es la primera vez que he intentado algo como esto antes :).

EDITAR 1

Olvidé agregar la topología de red:

Diseño de red interna

EDITAR 2

Acabo de darme cuenta de algo ... Para hacer la autenticación PPPoE, voy a tener que forzar la autenticación de credenciales en una interfaz específica. ¿Cómo se hace esto?

Publiqué esa pregunta aquí:

Cree un equilibrador de carga de Linux con múltiples conexiones con dos conexiones a Internet y una conexión LAN

ACTUALIZACIÓN 1

Todavía no puedo hacer que funcione el round robin multihop. Traté de seguir los pasos descritos en los siguientes sitios sin suerte:

  1. Balanceo de carga y NAT-ing múltiples conexiones ISP en Linux
  2. Linux: conexiones duales a Internet / equilibrio de carga
  3. Cómo: Multirrutamiento con Linux

O sigo recibiendo un mensaje que indica que el archivo ya existe o un dispositivo no válido. Aquí está / son mis configuraciones / información

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)

Configuración 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 es mi conexión WAN principal.

ETH1

Esta es mi conexión WAN secundaria.

ETH2

Esta es mi conexión LAN interna.

Pude hacer que el enrutamiento funcionara en una interfaz WAN y se vinculó a la LAN interna, sin embargo, no puedo replicar eso y no tengo idea de por qué.

John Schultz
fuente
Creo que tienes la respuesta en el primer enlace que has publicado. Si los servidores están en su LAN y tienen direcciones privadas, definitivamente necesita NAT. Básicamente necesita dividir su problema en dos problemas: 1) Tráfico entrando, 2) Tráfico saliendo. Entonces ... ¿lo necesita solo para equilibrio de carga o también para alta disponibilidad? Debe tener diferentes tablas de enrutamiento para diferentes proveedores (regla ip), luego marque los paquetes entrantes para que vuelvan al mismo proveedor. Para el tráfico saliente puede equilibrarlo.
Jure1873
Bien, sí, ahora que lo pienso, necesitaré poder enrutar el tráfico en consecuencia (NATing) y definitivamente necesito tener las dos conexiones entrantes con carga equilibrada. Así que efectivamente tiene el doble de velocidad en lugar de una sola velocidad. ¿Estoy pensando en esto correctamente?
John Schultz
¿Tienes BGP en el exterior? Si tiene enlaces de Internet separados, solo puede "duplicar la velocidad" en el lado saliente. El lado entrante solo rastrearía los paquetes entrantes y se aseguraría de que salgan en la misma línea en que entraron.
Jure1873
Me imaginé que ese sería el caso. No, no tengo BGP fuera de esta ubicación :( (no siquiera saben lo que es).
John Schultz

Respuestas:

4

Con la ayuda de algunos amigos que me ayudaron a investigar esto, FINALMENTE pude hacerlo funcionar.

Tuve que ejecutar este script para reenviar correctamente el tráfico 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

Luego instalé Net-ISP-Balance . Una vez que los scripts se ejecutaron e instalaron, fui a WhatsMyIP dos veces y, efectivamente , ambas interfaces están enrutando el tráfico, ya que whatsmyip mostró ambas direcciones IP después de presionar la actualización.

DESCARGO DE RESPONSABILIDAD Esto funcionó para mi diseño de red particular, configuración y ajustes. Sus resultados pueden variar.

John Schultz
fuente
Hice una prueba de velocidad ... Tengo un aumento del 24% en mi tráfico de descarga y un aumento del 90% en mi tráfico de uload.
John Schultz