Erstellen Sie einen Multi-Homed-Linux-Load-Balancer mit zwei Internetverbindungen und einer LAN-Verbindung

10

OK, ... dies wurde möglicherweise beantwortet, leider habe ich nichts gefunden, was so aussieht, als wäre es die Lösung.

Ich habe mir diese Seiten angesehen und sie enthalten einige nützliche Informationen, aber keine vollständigen Auflösungen:

  1. Lastausgleich und NAT-Verknüpfung mehrerer ISP-Verbindungen unter Linux
  2. Zwei Internetverbindungen und eine Netzwerkkarte möglich?
  3. Linux Split Access (mehrere Internetverbindungen mit Lastenausgleich)
  4. Linux Firewall + ISP-Verbindungen mit Lastenausgleich

Ich werde entweder Debian 8, Ubuntu 16.04 Desktop oder Ubuntu 16.04 Server verwenden (um ehrlich zu sein, höchstwahrscheinlich Debian).

OK, ich werde drei NICs mit zwei Gigabit und der integrierten 100-Mbit / s-LAN-Verbindung installieren lassen. Die ISP-Verbindungen verwenden die Gigabit-LAN-Karten über die PPPoE-Authentifizierung auf beiden Nics (wenn dies sonst überhaupt möglich ist, werde ich mich mit dem Nicht-Bridging-Modus auf den DSL-Modems zufrieden geben). Und beiden Netzwerken wird eine statische IP zugewiesen. Derzeit (was sich ändern wird) hat die primäre Verbindung eine Gruppe von fünf. Ich muss den Datenverkehr, der über eine dieser IP-Adressen eingeht, an den richtigen Server im Netzwerk weiterleiten.

Hier sind meine Fragen:

  1. Wie richte ich das ein? Benutze ich NATing, IP-Chans, IP-Masquerading, Routing usw.?
  2. Wie leite ich den von außen in das System eingehenden Datenverkehr an eine bestimmte IP-Adresse im Netzwerk weiter?

Bitte sei sanft, dies ist das erste Mal, dass ich so etwas versucht habe :).

BEARBEITEN 1

Vergessen, die Netzwerktopologie hinzuzufügen:

Internes Netzwerklayout

BEARBEITEN 2

Ich habe gerade etwas realisiert ... Um die PPPoE-Authentifizierung durchzuführen, muss ich die Authentifizierung von Anmeldeinformationen auf einer bestimmten Schnittstelle erzwingen. Wie wird das gemacht?

Ich habe diese Frage hier gepostet:

Erstellen Sie einen Multi-Homed-Linux-Load-Balancer mit zwei Internetverbindungen und einer LAN-Verbindung

UPDATE 1

Immer noch nicht in der Lage, das Multihop-Round-Robin zum Laufen zu bringen. Ich habe ohne Glück versucht, die auf den folgenden Websites beschriebenen Schritte auszuführen:

  1. Lastausgleich und NAT-Verknüpfung mehrerer ISP-Verbindungen unter Linux
  2. Linux - Duale Internetverbindungen / Lastausgleich
  3. HOWTO: Multirouting mit Linux

Ich erhalte entweder immer wieder die Meldung, dass die Datei bereits vorhanden ist oder ein ungültiges Gerät. Hier sind / sind meine Einstellungen / Informationen

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)

Schnittstellenkonfiguration

# 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

Dies ist meine primäre WAN-Verbindung.

ETH1

Dies ist meine sekundäre WAN-Verbindung.

ETH2

Dies ist meine interne LAN-Verbindung.

Ich konnte das Routing auf einer WAN-Schnittstelle zum Laufen bringen und mit dem internen LAN verbinden. Ich kann dies jedoch nicht replizieren und habe keine Ahnung, warum.

John Schultz
quelle
Ich denke, Sie haben die Antwort im ersten Link, den Sie gepostet haben. Wenn sich die Server in Ihrem LAN befinden und private Adressen haben, benötigen Sie auf jeden Fall NAT. Grundsätzlich müssen Sie Ihr Problem in zwei Probleme aufteilen: 1) Verkehr kommt herein, 2) Verkehr kommt heraus. Dann ... brauchen Sie es nur für den Lastausgleich oder auch für die Hochverfügbarkeit? Sie müssen unterschiedliche Routing-Tabellen für unterschiedliche Anbieter haben (IP-Regel) und dann die eingehenden Pakete markieren, damit sie wieder an denselben Anbieter gesendet werden. Für den ausgehenden Verkehr können Sie es ausgleichen.
Jure1873
OK, ... ja, denken Sie darüber nach, ich muss in der Lage sein, den Verkehr entsprechend zu routen (NATing), und ich muss auf jeden Fall die beiden eingehenden Verbindungen lastausgeglichen haben. So effektiv mit doppelter Geschwindigkeit statt einfacher Geschwindigkeit. Denke ich richtig darüber nach?
John Schultz
Haben Sie außen BGP? Wenn Sie separate Internetverbindungen haben, können Sie die Geschwindigkeit auf der ausgehenden Seite nur "verdoppeln". Die eingehende Seite würde nur eingehende Pakete verfolgen und sicherstellen, dass sie auf derselben Leitung ausgehen, auf der sie
eingegangen sind
Ich dachte mir, dass das der Fall sein würde. Nein, ich habe kein BGP außerhalb dieses Ortes :( (Weiß nicht einmal, was es ist).
John Schultz

Antworten:

4

Mit der Unterstützung einiger Freunde, die mir bei der Recherche halfen, konnte ich es endlich zum Laufen bringen.

Musste dieses Skript ausführen, um den TCP / IP-Verkehr ordnungsgemäß weiterzuleiten:

#!/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

Dann habe ich Net-ISP-Balance installiert . Nachdem die Skripte ausgeführt und installiert wurden, ging ich zweimal zu WhatsMyIP und sicher genug, dass beide Schnittstellen den Datenverkehr weiterleiten, da whatsmyip beide IP-Adressen zeigte, nachdem ich auf die Aktualisierung geklickt hatte.

HAFTUNGSAUSSCHLUSS Dies funktionierte für mein spezielles Netzwerklayout, meine Konfiguration und meine Einstellungen. Ihre Ergebnisse können variieren.

John Schultz
quelle
Habe einen Geschwindigkeitstest gemacht ... Ich habe eine 24% ige Zunahme meines Dload-Verkehrs und eine 90% ige Zunahme meines Uload-Verkehrs.
John Schultz