Proftpd - Virtualhosts, globalen Abschnitt, Serverkontext richtig verwenden

Proftpd - Virtualhosts, globalen Abschnitt, Serverkontext richtig verwenden

Kurzfassung:

Was ist der Unterschied zwischen dem Serverkontext und einem Virtualhost-Abschnitt in der proftpd-Konfigurationsdatei? In dem Sinne, dass ich mit ersterem nichts anfangen kann, was ich mit letzterem nicht machen kann.
Beispielsweise kann ich Anweisungen wie UseIPv6 oder MaxInstances nicht in einen Virtualhost oder den globalen Abschnitt einfügen, aber im Serverkontext funktioniert es problemlos. Was wäre dann die korrekte Verwendung dieser Abschnitte für die unten genannte Einstellung?

Ich dachte, der Gesamtprozess wäre der folgende: Immer wenn ein Client eine Verbindung zum Server herstellt, prüft der Server, ob es einen virtuellen Host gibt, der der Adresse entspricht, mit der der Client verbunden ist. Wenn nicht, wird der Serverkontextabschnitt ausgewählt (außer die Direktive DefaultServer wird verwendet, um dies zu verhindern). Daher dachte ich, der Serverkontextabschnitt und ein virtueller Hostabschnitt seien gleichermaßen „leistungsstark“. Aber das kann nicht der Fall sein, da es Direktiven gibt, die nur in einem der Abschnitte funktionieren.

Langfassung (Zusatzinformationen):

Im Grunde möchte ich nur einen Proftp-Server auf einem lokalen Rechner zu Hause betreiben und diesen Server sowohl vom Internet als auch von meinem LAN aus erreichbar machen. Und es funktioniert. Ich habe Proftpd aus dem Quellcode kompiliert (Grund siehe unten), es installiert und konfiguriert und es scheint genau so zu funktionieren, wie es soll. Ich brauche keine Hilfe, um Proftpd richtig zum Laufen zu bringen.

Ich konnte den Server allerdings nicht zum Laufen bringen, indem ich nur die Proftpd-Dokumentation gelesen habe, und musste so lange an der Konfigurationsdatei herumbasteln, bis alles richtig funktionierte. Es gibt also immer noch etwas an der Verwendung von virtuellen Hosts, dem globalen und dem Serverkontextabschnitt, das ich nicht richtig verstehe, und deshalb habe ich die obigen Fragen gestellt.

Ich habe über die Konfiguration von Proftpd hinter einem Router und die Bedeutung der Abschnitte „Virtualhosts“, „Global“ und „Server Context“ gelesen:
http://www.proftpd.org/docs/howto/NAT.html
http://www.proftpd.org/docs/howto/Vhost.html
Ich habe mehrere Anleitungen befolgt und im Forum nach ähnlichen Fragen gesucht. Der Server funktioniert, ich verstehe nur nicht wirklich, warum das jetzt so ist und warum das vorher nicht der Fall war.

Dies ist die Struktur meiner aktuellen (funktionierenden) proftpd.conf: <Global> User ... Group ... RequireValidShell ... DefaultRoot ... ... <IfModule mod_tls.c> TLSEngine ... TLSProtocol TLSv1.2 ... </IfModule> </Global>
#server context managing the config for access over the internet ServerName "external" Port 21 #can't be used inside a virtualhost section UseIPv6 off ... #need to masquerade ip for external address MasqueradeAddress myurl.com #needed for passive ftp mode PassivePorts 60000 65535
#virtualhost managing the config for lan access <VirtualHost 192.168.178.54> ServerName "internal" Port 21 PassivePorts 60000 65535 </VirtualHost>

Zuerst dachte ich, ich sollte einfach zwei Virtualhost-Abschnitte erstellen, einen für LAN und einen für externen Zugriff, und den Serverkontextabschnitt deaktivieren, indem ich Port 0 einstelle. Aber dann gibt es Anweisungen, die ich in den Virtualhost-Abschnitten nicht verwenden kann. Daher bin ich mir ziemlich unsicher, ob ich die 3 möglichen Abschnitte so verwende, wie ich es soll. Muss ich den Serverkontextabschnitt verwenden, um eine Art Standardkonfiguration zu haben? Laut Dokumentation könnte dies mit der Anweisung DefaultServer erfolgen.

uname -a: Linux HOSTNAME 3.16.0-4-amd64 #1 SMP Debian 3.16.7-ckt11-1 (2015-05-24) x86_64 GNU/Linux

proftpd -v: ProFTPD Version 1.3.5 Das in den Debian-Repositories enthaltene proftpd-Binärpaket unterstützt TLS 1.2 nicht und ich möchte kein FTP mit einer niedrigeren TLS-Version oder gar SSL verwenden. Also habe ich es selbst kompiliert.

Dies ist ein ziemlich langer Text. Ich habe versucht, ihn zu kürzen, präzise zu sein, unnötiges zu vermeiden, aber dennoch genügend Informationen bereitzustellen. Wenn ich etwas verbessern könnte oder meine Frage eher zu Unix und Linux Stackexchange gehört, lassen Sie es mich einfach wissen. Ich habe Superuser statt Serverfault gewählt, um diese Frage zu stellen, da es um eine Serverumgebung zu Hause geht.

Vielen Dank für Ihre Zeit und Hilfe.

Jan

Antwort1

Es gibt einige Konfigurationsanweisungen, die sich auf das gesamteDaemon, wie UseIPv6oder MaxInstances. Diese Richtlinienkann nichtmuss aus diesem Grund für jeden einzelnen VHost einzeln festgelegt werden.

Die Syntax der Konfigurationsdatei von ProFTPD enthält jedoch keinen Kontext/Abschnitt, der besagt: „Diese Anweisungen gelten nur für den gesamten Daemon.“ Daher sind diese Daemon-weiten Anweisungen standardmäßig (und ja, das ist nicht ideal) nur im Abschnitt „Serverkonfiguration“ außerhalb von <Global>, <VirtualHost>oder einem anderen Kontext zulässig.

Hoffe das hilft!

Antwort2

Wie sich herausstellt, hatte ich mit einigen meiner Angaben nicht recht. Ich werde diese Frage als beantwortet markieren, damit niemand Zeit mit der Beantwortung vergeuden muss. Eine einfache Bearbeitung wird nicht helfen, da ich nicht weiß, wann ich Zeit haben werde, mein Proftpd-Setup noch einmal zu überprüfen. Ich werde jedoch klären, was auch immer die falsche Beschreibung verursacht hat, meine Frage überarbeiten und sie in einiger Zeit erneut posten.

verwandte Informationen