11.4. FTP in einen LVS Cluster

File Transfer Protocol (FTP) ist ein älteres und recht komplexes Multi-Port Protokoll, welches einer Cluster-Umgebung einige Herausforderungen stellt. Um die Hintergründe dieser Herausforderungen zu Verstehen, müssen Sie zuerst einige grundlegende Dinge über die Arbeitsweise von FTP lernen.

11.4.1. Wie FTP arbeitet

Bei den meisten anderen Client-Server Verbindungen, öffnet die Client-Maschine eine Verbindung zum Server auf einem bestimmten Port, und der Server antwortet dann dem Client auf diesem Port. Wenn ein FTP-Client zu einem FTP-Server verbindet, öffnet dieser eine Verbindung zum FTP-Kontroll-Port 21. Dann, teilt der Client dem FTP Server mit, ob eine aktive oder eine passive Verbindung erzeugt werden soll. Der vom Client gewählte Typ von Verbindung bestimmt, wie der Server antwortet und über welchen Port die Transaktion abgewickelt wird.

Die zwei Typen von Datenverbindungen sind:

Aktive Verbindungen

Wenn eine aktive Verbindung hergestellt wird, öffnet der Server eine Datenverbindung von Port 20 zu einem Port im hohen Bereich der Client-Maschine. Jegliche Daten des Servers werden dann über diese Verbindung übermittelt.

Passive Verbindungen

Wenn eine passive Verbindung hergestellt wird, fragt der Client den FTP Server nach der Zustellung eines Ports für eine passive Verbindung, welche an jeglichem Port höher als 10,000 liegen kann. Der Server bindet dann zu diesem hohen Port für die augenblickliche Sitzung und legt die Nummer des Ports zurück zum Client. Der Client öffnet dann den neu gebundenen Port für die Datenverbindung. Jede Datenanforderung des Client resultiert in einer separaten Datenverbindung. Die meisten modernen FTP-Clients versuchen eine passive FTP-Verbindung zur Übertragung von Dateien aufzubauen.

Die zwei im Bezug zum Clustering wichtigen Dinge zu beachten sind:

  1. Der Client bestimmt den Typ von Verbindung, nicht der Server. Das heißt, dass für ein FTP in einen Cluster die LVS Router für beide, aktive und passive Verbindungen konfiguriert werden müssen.

  2. Die FTP Client-Server Verbindung kann potentiell eine große Anzahl von Ports öffnen, von welchen weder Piranha Configuration Tool noch IPVS etwas wissen.

11.4.2. Wie dies LVS Routing beeinflusst

IPVS Paket-Weiterleitung erlaubt Pakete nur in den und aus dem Cluster, basierend auf der Erkennung der Port-Nummer oder deren Firewall-Markierungen. Wenn ein Client von ausserhalb des Clusters versucht einen Port zu öffnen, für welchen IPVS nicht konfiguriert ist, wird IPVS die Verbindung nicht annehmen. Ähnlich, sollte ein realer Server versuchen eine Verbindung zurück zum Internet über einen für IPVS unbekannten Port herzustellen, wird IPVS die Verbindung zurückweisen. Das heißt, dass alle Verbindungen von FTP-Clients aus dem Internet die gleiche Firewall-Markierung zugewiesen haben müssen und alle Verbindungen vom FTP-Server müssen, durch Verwendung von Regeln zum Filtern der Netzwerk-Pakete, richtig weitergeleitet werden.

11.4.3. Erzeugen von Regeln zum Filtern der Netzwerk-Pakete

Bevor Sie irgendwelche iptables-Regeln für FTP-Services zuweisen, sehen Sie sich die Information in Abschnitt 11.3.1 durch, welche Multi-Port Services und Methoden der Überprüfung bereits bestehender Filterregeln für Netzwerk-Pakete betrifft.

Unten sind die Regeln angegeben, die die gleiche Firewall-Markierung, nämlich 21, dem FTP-Verkehr zuweisen. Damit diese Regeln richtig arbeiten, müssen Sie auch den Teilabschnitt VIRTUAL SERVER von Piranha Configuration Tool verwenden, um einen virtuellen Server für Port 21 mit dem Wert 21 im Feld Firewall Mark anzugeben. Siehe Abschnitt 12.6.1 für Details.

11.4.3.1. Regeln für aktive Verbindungen

Die Regeln für aktive Verbindungen sagen dem Kernel Verbindungen anzunehmen, welche zu der internen schwebenden IP-Adresse auf Port 20 eingehen — dem FTP Daten-Port.

iptables
/sbin/iptables -t nat -A POSTROUTING -p tcp \
               -s n.n.n.0/24 --sport 20 -j MASQUERADE

In den oben angegebenen iptables-Befehlen, sollte n.n.n mit den ersten drei Werten der schwebenden IP ersetzt werden, welche für die interne Netzwerk-Schnittstelle der NAT-Schnittstelle im Abschnitt GLOBAL SETTINGS von Piranha Configuration Tool definiert ist. Diese Befehle erlauben dem LVS Router ausgehende Verbindungen von den realen Servern anzunehmen, über die IPVS nichts weiß.

11.4.3.2. Regeln für passive Verbindungen

Die Regeln für passive Verbindungen weisen die entsprechenden Firewall-Markierungen Verbindungen zu, welche vom Internet zur schwebenden IP-Adresse des Service an einer weiten Reihe von Ports ankommen — von 10.000 bis 20.000.

WarnungWarnung
 

Sollten Sie die Reihe der Ports für passive Verbindungen einschränken, müssen Sie zudem den VSFTP-Server konfigurieren, damit dieser der Reihe von Ports entspricht. Dies kann durch Hinzufügen der folgenden Zeile zum Ende der Datei /etc/vsftpd.conf geschehen:

pasv_min_port=10000
pasv_max_port=20000

Sie müssen auch die Adresse bestimmen, die der Server dem Client für passive FTP-Verbindungen anzeigt. In einem NAT-routed LVS-System, fügen Sie die folgende Zeile zur Datei /etc/vsftpd.conf hinzu, um die tatsächliche IP-Adresse mit der VIP zu überschreiben, die der Client während der Verbindung sieht. Zum Beispiel:

pasv_address=X.X.X.X

Ersetzen Sie X.X.X.X mit der VIP-Adresse des LVS-Systems.

Für die Konfiguration anderer FTP-Server, schlagen Sie in der Dokumentation nach.

Diese Reihe sollte für die meisten Situationen weit genug sein; Sie können diese jedoch vergrößern, indem Sie alle nicht-gesicherten Ports einschließen. Dies erzielen Sie, indem Sie 10000:20000 in den unten angegebenen Befehlen zu 1024:65535 ändern.

iptables
/sbin/iptables -t mangle -A PREROUTING -p tcp \
               -d n.n.n.n/32  \
               --dport 21 -j MARK --set-mark 21
/sbin/iptables -t mangle -A PREROUTING -p tcp \
               -d n.n.n.n/32 \ 
               --dport 10000:20000 -j MARK --set-mark 21

In den oben angegebenen iptables-Befehlen, sollte n.n.n.n mit der schwebenden IP-Adresse Ihres virtuellen FTP-Servers ersetzt werden, welcher im Abschnitt VIRTUAL SERVER von Piranha Configuration Tool definiert ist. Diese Befehle haben den Netto-Effekt der Zuweisung einer Firewall-Markierung von 21 zu jeglichem an die VIP auf den entsprechenden Ports adressiertem Verkehr. Dies wird von der IPVS erkannt und richtig weitergeleitet.

WarnungWarnung
 

Die oben angegebenen Befehle werden sofort in Kraft treten, werden allerdings bei einem Neustart nicht erhalten bleiben. Um die Filtereinstellungen für Netzwerk-Pakete über einen Neustart hinaus zu erhalten, sehen Sie Abschnitt 11.5.

Als letztes müssen Sie sicher stellen, dass der entsprechende Service für die Aktivierung auf den richtigen Runlevels eingestellt ist. Für mehr hierzu, sehen Sie Abschnitt 10.1.