Übersicht #
FTP ( File Transfer Protocol) ist ein weit verbreitetes Anwendungsschichtprotokoll für die Dateiübertragung in Client-Server-Architekturen, die auf den TCP/IP-Netzwerkschichten basieren. FTP ist ein komplexes und einfaches (nicht sicherheitsorientiertes) Protokoll, dessen Ports auf der Anwendungsschicht zwischen Client und Server ausgehandelt werden. Dies erschwert die Lastverteilung und die Einrichtung von Firewall-Regeln. FTP-Server und -Client können zudem im aktiven oder passiven Modus arbeiten, wie im Folgenden beschrieben.
FTP bietet unter anderem folgende Funktionen: 2 TCP-Ports (standardmäßig 20, 21), einer für Steuerbefehle und einer für Daten, Unterstützung von Authentifizierungsmechanismen, keine Verschlüsselungsunterstützung, ASCII- und Binärübertragung, umfassende Befehle verfügbar (Verzeichnisliste, Verzeichnissuche, Dateien hochladen, Dateien herunterladen usw.) und inhärente TCP-Ausfallsicherheit.
TFTP oder Trivial FTP ist eine Variante mit schnellerer Dateiübertragung und einfacherem Architekturdesign, die nur einen UDP-Port (standardmäßig 69) verwendet, keine Unterstützung für Authentifizierungsmechanismen oder Verschlüsselung bietet, drei Übertragungsmodi zur Verfügung stellt (netascii, octet und mail) und nur grundlegende Befehle wie das Hochladen und Herunterladen von Dateien bietet.
Sowohl FTP- als auch TFTP-Dienste können problemlos mit RELIANOID LastenausgleicherLesen Sie weiter, um zu erfahren, wie Sie dies erreichen.
FTP-Lastausgleichsumgebung #
Das Szenario, das wir in diesem Artikel erreichen möchten, ist im folgenden Diagramm dargestellt.
Entweder gibt es eine hohe Gleichzeitigkeit an Benutzern und der Dienst muss skaliert werden oder es handelt sich um einen kritischen Dienst, der hochverfügbar sein muss. In diesem Fall wird ein Load Balancer für den FTP-Dienst benötigt.
Aktive FTP-Modus-Konfiguration #
Für eine aktive FTP- Verbindung müssen die Ports 20 und 21 auf den Servern oder Backends verwendet werden. Die Abbildung unten zeigt den Verbindungsablauf bei der Datenübertragung zwischen Client und FTP-Server.
In der oben gezeigten Reihenfolge:
1. Der Client fordert den Server über den Port an 21 Ein Kommando.
2. Der Server bestätigt dem Client.
3. Das Server initiiert die Datenverbindung über den Datenport 20.
4. Der Client bestätigt dem Server, wenn er fertig ist.
An diesem Punkt müssen wir einen Lastenausgleich zwischen Client und Server einrichten und uns dann um die Verkehrsflüsse, Verbindungsinitialisierer und Portvereinbarungen zwischen Client und Server kümmern.
Mit RELIANOID Load Balancer, wir müssen diese Art von Konfiguration erreichen, indem wir ein LSLB-Farmprofil L4xNAT mit Ports erstellen 20,21 und fTP Protokoll, wie es in der Abbildung unten gezeigt ist, und richten Sie abschließend die Backends ein (das Einstellen der Ports ist nicht erforderlich).
Die Clients müssen sich mit der VIP-Adresse der neuen FTP-Farm verbinden.
Hinweis: Diese Konfiguration kann sowohl im aktiven als auch im passiven Client/Server-Modus verwendet werden.
Konfiguration des passiven FTP-Modus #
Eine passive FTP- Konfiguration nutzt serverseitig (Backend) ausschließlich Port 21. Die Abbildung unten veranschaulicht den Verbindungsablauf bei der Datenübertragung zwischen Client und FTP-Server.
In der oben gezeigten Reihenfolge:
1. Der Client fordert den Server über den Port an 21 Ein Kommando.
2. Der Server bestätigt dem Client.
3. Das Client initiiert die Datenverbindung über einen High-Data-Port zu einem auf Anwendungsebene vereinbarten Port auf der Serverseite.
4. Der Server bestätigt dem Client, wenn er fertig ist.
An diesem Punkt müssen wir einen Lastenausgleich zwischen Client und Server einrichten und uns dann um die Verkehrsflüsse, Verbindungsinitialisierer und Portvereinbarungen zwischen Client und Server kümmern.
Mit RELIANOID Load Balancer, wir müssen diese Art der Konfiguration erreichen, indem wir ein LSLB-Farmprofil L4xNAT mit dem Port erstellen 21 und fTP Protokoll, wie es in der Abbildung unten gezeigt ist, und richten Sie abschließend die Backends ein (das Einstellen der Ports ist nicht erforderlich).
Die Clients müssen sich mit der VIP-Adresse der neuen FTP-Farm verbinden.
TFTP-Konfiguration #
Triviale FTP- Protokolle werden hauptsächlich in PXE- Umgebungen (Preboot eXecution Environment) verwendet , die aus einer Kombination von DHCP- und TFTP-Diensten bestehen und in denen Dutzende, Hunderte oder sogar Tausende von Computern über das Netzwerk bereitgestellt werden können.
Das Hauptprotokollverhalten wäre:
1. Der Client fordert den Server über den Port an 69 ein Lese-Anforderungs- (RRQ) oder Schreibanforderungs- (WRQ) Befehl einschließlich des Datei- und Übertragungsmodus.
2. Der Server bestätigt dem Client und teilt ihm den neuen zu verwendenden Datenport mit.
3. Das Client initiiert die Datenverbindung zu einem auf Anwendungsebene vereinbarten Port auf der Serverseite.
4. Der Server bestätigt dem Client, wenn die letzten 512 Bytes übrig sind.
In einer Umgebung, in der der TFTP-Dienst skaliert werden muss, ist die Konfiguration mit RELIANOID 5 ist sehr einfach. Es ist erforderlich, ein LSLB-Farmprofil L4xNAT mit dem Port zu erstellen 69 und TFTP Protokoll, wie es in der Abbildung unten gezeigt ist, und richten Sie abschließend die Backends ein (das Einstellen der Ports ist nicht erforderlich).
Die Clients müssen sich mit der VIP-Adresse der neuen TFTP-Farm verbinden.
Sicheres FTP #
Um die erhöhten Sicherheitsanforderungen des FTP-Protokolls zu erfüllen, wurde das SSH File Transfer Protocol ( SFTP) als zusätzliche Sicherheitsebene entwickelt. In diesem Fall müssen die FTP-Server als SFTP konfiguriert werden. Der Lastausgleich erfolgt dann einfach durch die Einrichtung eines LSLB (Load Balancing Balancer) mit L4xNAT-Profil über den Standardport 22 und das TCP -Protokoll , wie im Screenshot unten dargestellt. Abschließend müssen nur noch die SFTP-Backends hinzugefügt werden.
Die Clients müssen eine Verbindung mit der VIP-Adresse der neuen TCP-Farm herstellen, die einen SFTP-Dienst bereitstellt.
Erweiterte Integritätsprüfungen #
FTP-Integritätscheck #
RELIANOID Geräte verfügen bereits über die check_ftp Integritätsprüfung für FTP-Dienste, damit wir die Integritätsprüfung mit einem aktiven Backend testen können:
root@noid:/usr/local/zenloadbalancer/app/libexec# ./check_ftp -H ftp.debian.org FTP OK – 0.262 Sekunden Antwortzeit auf ftp.debian.org Port 21 [220 ftp.debian.org FTP-Server]|Zeit=0.262090s;;;0.000000;10.000000
Andererseits erhalten wir bei einem ausgefallenen Backend die folgende Ausgabe:
root@noid:/usr/local/zenloadbalancer/app/libexec# ./check_ftp -H ftp.debian.org KRITISCH – Socket-Timeout nach 10 Sekunden
Der Farm Guardian-Befehl zur Konfiguration in der FTP-Farm wäre also:
check_ftp -H HOST
Stellen Sie auf der Registerkarte „Dienste“ sicher, dass Farm Guardian wie unten gezeigt konfiguriert ist. Ein Timeout von 60 Sekunden würde ausreichen, um das korrekte Verhalten eines Backends sicherzustellen.
TFTP-Integritätsprüfung #
Besitzt das check_tftp erweiterte Prüfung existiert noch nicht im RELIANOID Appliance können wir wie unten beschrieben ein einfaches Integritätsprüfskript für unsere TFTP-Dienste erstellen.
Erstellen Sie zunächst eine Dummy-Datei in Ihrem TFTP-Backend-Verzeichnis, beispielsweise tftp_relianoid_check.txt , und fügen Sie etwas Inhalt hinzu, beispielsweise „OK“.
Dann, in Ihrem RELIANOID Installieren Sie den TFTP-Client mit der Appliance, indem Sie den folgenden Befehl ausführen:
apt-get installiere tftp
Erstellen Sie anschließend eine neue Skriptdatei im RELIANOID Standardverzeichnis für Integritätsprüfungen, beispielsweise /usr/local/zenloadbalancer/app/libexec/check_mytftp.sh mit folgendem Skriptcode:
#!/bin/bash ### ### TFTP-Dienste prüfen ### Copyright 2017-now RELIANOID SL ### ### $1 : Zu prüfender Host CRITICAL=1 OK=0 RESULT=$(echo get tftp_relianoid_check.txt | tftp $1 2>&1 | head -n 1) echo "TFTP-Integritätsprüfstatus für $1 ist $RESULT" if [ "`echo $RESULT | grep Received`" != "" ]; dann beenden $OK, sonst beenden $CRITICAL fi
Weisen Sie anschließend mit dem folgenden Befehl Ausführungsberechtigungen zu:
root@noid:/# chmod 755 /usr/local/zenloadbalancer/app/libexec/check_mytftp.sh
Wenn wir versuchen, das Skript auszuführen, erhalten wir eine Erfolgsmeldung, wenn das Backend aktiv und richtig konfiguriert ist:
root@noid:/usr/local/zenloadbalancer/app/libexec# ./tftp_check.sh 192.168.101.250 TFTP-Integritätsprüfstatus für 192.168.101.250 ist tftp> 4 Bytes in 0.0 Sekunden empfangen
oder ein Fehler, wenn das Backend ausgefallen ist:
root@noid:/usr/local/zenloadbalancer/app/libexec# ./tftp_check.sh 192.168.101.250 Der TFTP-Integritätsprüfstatus für 192.168.101.254 lautet tftp> Zeitüberschreitung bei der Übertragung.
Konfigurieren Sie abschließend die Integritätsprüfung in der TFTP-Farm, indem Sie im Befehl das HOST-Token einfügen.
check_mytftp.sh HOST
Stellen Sie auf der Registerkarte „Dienste“ sicher, dass Farm Guardian wie unten gezeigt konfiguriert ist. Ein Timeout von 60 Sekunden würde ausreichen, um das korrekte Verhalten eines Backends sicherzustellen.
SFTP-Integritätscheck #
Da der Health-Check check_ssh bereits verfügbar ist , können wir ihn direkt verwenden. Der Befehl Farm Guardian zur Konfiguration in der SFTP-Farm lautet daher wie folgt:
check_ssh HOST
Dann würde die Konfiguration wie im folgenden Screenshot angezeigt.
Viel Spaß beim hochverfügbaren und skalierbaren Dateitransfer!









