Utwórz moduł równoważenia obciążenia dla wielu systemów Linux z dwoma połączeniami internetowymi i jednym połączeniem LAN

11

OK, ... prawdopodobnie na to odpowiedź, niestety nie znalazłem niczego, co mogłoby wyglądać na rozdzielczość.

Przejrzałem te strony i mają one kilka użytecznych informacji, ale nie pełne rozwiązania:

  1. Równoważenie obciążenia i translacja NAT wielu połączeń ISP w systemie Linux
  2. Możliwe dwa połączenia internetowe i 1 karta sieciowa?
  3. Podział dostępu do systemu Linux (wiele połączeń internetowych z równoważeniem obciążenia)
  4. zapora linux + połączenia ISP z równoważeniem obciążenia

Będę albo używał Debian 8, Ubuntu 16.04 Desktop lub Ubuntu 16.04 Server (szczerze mówiąc, najprawdopodobniej Debian).

OK, więc będę mieć trzy karty sieciowe zainstalowane dwa gigabitowe i wbudowane połączenie LAN 100 Mb / s. Połączenia ISP będą korzystały z gigabitowych kart LAN za pośrednictwem uwierzytelniania PPPoE na obu kartach sieciowych (jeśli jest to w ogóle możliwe, zadowolę się trybem nie mostkowania w modemach DSL). Obie sieci będą miały przypisany statyczny adres IP. Obecnie (które ulegnie zmianie) pierwotne połączenie ma grupę pięciu. Muszę skierować ruch przychodzący z jednego z tych adresów IP do odpowiedniego serwera w sieci.

Oto moje pytania:

  1. Jak to skonfigurować? Czy korzystam z NAT, IP Chans, maskowania IP, routingu itp.?
  2. Jak skierować ruch przychodzący do systemu z zewnątrz do określonego adresu IP w sieci?

Proszę, bądź łagodny, po raz pierwszy próbowałem COKOLWIEK tego typu wcześniej :).

EDYCJA 1

Zapomniałem dodać topologii sieci:

Układ sieci wewnętrznej

EDYCJA 2

Właśnie coś zrozumiałem ... Aby wykonać uwierzytelnianie PPPoE, będę musiał wymusić uwierzytelnienie poświadczeń na określonym interfejsie. Jak to się robi?

Zadałem to pytanie tutaj:

Utwórz moduł równoważenia obciążenia dla wielu systemów Linux z dwoma połączeniami internetowymi i jednym połączeniem LAN

AKTUALIZACJA 1

Nadal nie można uruchomić okrągłego robota multihop do działania. Próbowałem wykonać kroki opisane w poniższych witrynach bez powodzenia:

  1. Równoważenie obciążenia i translacja NAT wielu połączeń ISP w systemie Linux
  2. Linux - podwójne połączenia internetowe / równoważenie obciążenia
  3. HOWTO: Multirouting z Linuksem

Ciągle pojawia się komunikat informujący, że plik już istnieje lub nieprawidłowe urządzenie. Oto moje ustawienia / informacje

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)

Konfiguracja INTERFEJSÓW

# 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

To jest moje podstawowe połączenie WAN.

ETH1

To jest moje drugie połączenie WAN.

ETH2

To jest moje wewnętrzne połączenie LAN.

Udało mi się sprawić, by routing działał na jednym interfejsie WAN i był podłączony do wewnętrznej sieci LAN, jednak nie mogę tego zreplikować i nie mam pojęcia, dlaczego.

John Schultz
źródło
Myślę, że masz odpowiedź w pierwszym opublikowanym linku. Jeśli serwery są w twojej sieci LAN i mają prywatne adresy, zdecydowanie potrzebujesz NAT. Zasadniczo musisz podzielić swój problem na dwa problemy: 1) Ruch przychodzący, 2) Ruch wychodzący. Zatem ... potrzebujesz go tylko do równoważenia obciążenia czy też do wysokiej dostępności? Musisz mieć różne tabele routingu dla różnych dostawców (reguła ip), a następnie oznaczyć przychodzące pakiety, aby wróciły do ​​tego samego dostawcy. W przypadku ruchu wychodzącego można go zrównoważyć.
Jure1873
OK, ... tak, pomyśl o tym, będę musiał odpowiednio kierować ruchem (NATing) i zdecydowanie muszę mieć zrównoważone obciążenie dwóch połączeń przychodzących. Więc efektywnie mając podwójną prędkość zamiast pojedynczej prędkości. Czy myślę o tym poprawnie?
John Schultz,
Czy masz BGP na zewnątrz? Jeśli masz osobne łącza internetowe, możesz tylko „podwoić prędkość” po stronie wychodzącej. Strona przychodząca śledzi tylko przychodzące pakiety i upewnia się, że wychodzą na tej samej linii, w jakiej się pojawiły.
Jure1873
Pomyślałem, że tak właśnie będzie. Nie, nie mam BGP poza tą lokalizacją :( (Nawet nie wiem co to jest).
John Schultz

Odpowiedzi:

4

Z pomocą kilku przyjaciół, którzy pomogli mi to zbadać, NAPRAWDĘ mogłem go uruchomić.

Musiałem uruchomić ten skrypt, aby poprawnie przekazać ruch 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

Następnie zainstalowałem Net-ISP-Balance . Po uruchomieniu i zainstalowaniu skryptów poszedłem do WhatsMyIP dwa razy i na pewno oba interfejsy kierują ruchem, ponieważ whatsmyip pokazał oba adresy IP po tym, jak odświeżyłem.

WYŁĄCZENIE ODPOWIEDZIALNOŚCI Działa to dla mojego konkretnego układu sieci, konfiguracji i ustawień. Twoje wyniki mogą się różnić.

John Schultz
źródło
Zrobiłem test prędkości .... Mam 24% wzrost mojego ruchu obciążenia i 90% wzrost mojego ruchu obciążenia.
John Schultz