Plesk auf Proxmox, FTP-Verbindung klappt nicht

NoFloXx

New Member
Nabend,

ich schildere mal kurz meine Konstellation, wie es aktuell bei mir zu Hause aufgebaut ist und wo mein Problem liegt.

Zu Hause habe ich einen Glasfaseranschluss, somit keine öffentliche IPv4 mehr. Daher habe ich mir bei IONOS einen vServer geholt und auf diesem läuft Debian mit Socat, um die Ports und den Traffic auf meinen Homeserver weiterzuleiten. In der IONOS-Firewall sind Port 20, 21, 80 und 443 freigegeben.

Proxmox läuft zu Hause auf einem Server. Dort habe ich eine VM erstellt, auf der Windows Server 2019 läuft mit der IP 41.
Ebenfalls zu Hause auf dem Proxmox-Host läuft der Wireguard-Container ( IP 48 ), der den Traffic vom vServer entgegen nimmt und auf den Windows-Server weiterleitet ( IP 41 ). Die IPv4-Route habe ich in der FRITZ!Box 7590 ebenfalls eingetragen und ich kann vom vServer auf den Win-Server pingen und umgekehrt.
Somit klappt zwar alles, also die Seiten, die ich in Plesk erstelle, sind auch von extern erreichbar. Aber ich kann keine FTP-Verbindung herstellen.
Es kommt folgende Meldung:
Status: Auflösen der IP-Adresse für ecstatic-cori.217-160-xxx-xxx.plesk.page
Status: Verbinde mit 217.160.xxx.xxx:21...
Status: Verbindung hergestellt, warte auf Willkommensnachricht...
Status: Initialisiere TLS...
Status: Überprüfe Zertifikat...
Status: TLS-Verbindung hergestellt.
Status: Angemeldet
Status: Empfange Verzeichnisinhalt...
Befehl: PWD
Antwort: 257 "/" is current directory.
Befehl: TYPE I
Antwort: 200 Type set to I.
Befehl: PASV
Antwort: 227 Entering Passive Mode (217,160,xxx,xxx,220,184).
Befehl: LIST
Antwort: 150 Opening BINARY mode data connection.
Fehler: Die Datenverbindung konnte nicht hergestellt werden: ECONNREFUSED - Verbindung durch Server verweigert
Antwort: 550 Data channel timed out.
Fehler: Verzeichnisinhalt konnte nicht empfangen werden

Die IP 217.160... ist die IP der vServers.
An der Windows-Firewall kann es auch nicht liegen, da ich diese zum Test deaktiviert habe.
Das Selbe gilt für die Firewall im Proxmox-Wireguard.
Wenn ich die interne IP des Win-Servers im FTP-Client eingebe, klappt es übrigen auch nicht, obwohl ich im selben Netzwerk bin wie der Proxmox-Host bzw. der Windows-Server.

Kann mir jemand weiterhelfen, wie ich nun eine FTP-Verbindung herstellen kann?
Bzw. was ich falsch mache oder wo mein Denkfehler liegt?
 
Last edited:

NoFloXx

New Member
Danke, aber Plesk läuft auf einem Windows-Server 2019 und nicht auf Linux. Daher kann ich den 2. Link nicht nutzen.
Der 1. Link ist schon erledigt, diese Einstellungen habe ich schon gemacht.

Aber ich habe leider keine Logs, da ich mich ja per Filezilla verbinden möchte.
Wo finde ich die Logs? Wohl kaum auf dem vServer, oder?!
 
Plesk unter Win weiß ich nicht eventl. im Servermanager unter Dienste, hast Du mal zum testen auf aktiven Modus umgestellt ? Also Filezilla!
 

NoFloXx

New Member
Ja, im FileZilla habe ich den aktiven, als auch den passiven Modus getestet und bei beiden erhalte ich die selbe Fehlermeldung.
Der FTP-Dienst ist auf dem Win-Server installiert.
 

marce

Well-Known Member
die das Problem ungehende Frage wäre "warum ftp und nicht sftp / scp / ssh"?

Ansonsten könnte es evtl. daran liegen, daß Du die konfigurieren Data-Channels in der Weiterleitung / Ionos-Firewall / ... auch noch überall freischalten und durch"routen" musst.
 

Whistler

Blog Benutzer
Befehl: PASV
Antwort: 227 Entering Passive Mode (217,160,xxx,xxx,220,184).
Befehl: LIST
Antwort: 150 Opening BINARY mode data connection.
Fehler: Die Datenverbindung konnte nicht hergestellt werden: ECONNREFUSED - Verbindung durch Server verweigert
Antwort: 550 Data channel timed out.
Du brauchst einen Protocol-Helper für FTP in der Firewall bei IONOS.
Im obigen Beispiel mußt Du dynamisch den Port 56504 für eingehende Verbindungen öffnen.
 

NoFloXx

New Member
Die IONOS-Firewall habe ich komplett deaktiviert ( zu Testzwecken ). Jedoch klappt es trotzdem nicht.
Nachdem ich die IP-Adresse zu der Webseite in Plesk auf die interne IPv4 umgestellt habe, welche ja korrekt wäre, da ich intern ja nur z.B. IPs verwende wie 192.168.1.87. Der Rest wird ja durch socat über den vServer auf meinen Proxmox-Wireguard dann weitergeleitet.
Ich bekomme jetzt folgende Meldung:
Status: Verbinde mit 217.160.xxx.xxx:21...
Status: Verbindung hergestellt, warte auf Willkommensnachricht...
Status: Initialisiere TLS...
Status: Überprüfe Zertifikat...
Status: TLS-Verbindung hergestellt.
Befehl: USER sysuser_4
Antwort: 331 Password required
Befehl: PASS ********
Antwort: 530 User cannot log in, home directory inaccessible.
Die Windows-Firewall ist ebenfalls zu Testzwecken deaktiviert.
Im IIS habe ich keinen Eintrag bei Sites 'Default FTP Site', allerdings habe ich diese bei meinem alten Windows vServer bei STRATO auch nicht gehabt.
Ist evtl. irgendeine Einstellung / Config im Plesk fehlerhaft? Habe nur wenig Lust, die Webseite komplett neu in Plesk einzupflegen, aber wenn da evtl. der Fehler liegen könnte, mache ich das natürlich....
 

Whistler

Blog Benutzer
Der Rest wird ja durch socat über den vServer auf meinen Proxmox-Wireguard dann weitergeleitet.
Dann bin ich mir nicht sicher ob passives FTP für Dich das richtige ist.
Das verwendet man ja um die Datenflußrichtung umzukehren, falls die Firewall eingehenden Verkehr blockiert, ausgehenden aber zuläßt.
In Deinem Fall müßtest Du dann dynamisch eine neue socat-Instanz mit dem vom FTP-Server ausgewürfelten Port starten.
Aktives FTP verwendet dagegen nur zwei Ports 20/21, die Du ja wohl schon in beiden Richtungen weitergeleitet hast.
 

NoFloXx

New Member
Richtig, passives FTP ist daher wohl vom Tisch.
Dennoch habe ich keine Ahnung, wo ich das Home-Verzeichnis erstellen muss, damit der FTP weiß, wo er dann beim Verbinden hin soll.
Die Verbindung kommt ja zustande, Filezilla bzw. der FTP weiß halt nur nicht, wo das Homeverzeichnis ist und das musste ich beim vServer vorher nicht einstellen. Nur jetzt, wo ich den Server zu Hause im Heimnetz habe / hoste, taucht diese Meldung auf.
 

NoFloXx

New Member
Gefunden ja, kann ich aber nicht abarbeiten, da ich keine Default FTP Site habe.
Füge ich eine Neue hinzu, kann er diese nicht starten, da Port 21 ja schon von der IP benutzt wird, die unter den Sites ist.
Daher komme ich da nicht weiter.

Und wie schon gesagt, die IONOS-Firewall ist komplett offen und die Windows-Firewall ebenfalls.
Im socat habe ich den Port 21 auch weitergeleitet.

Ich weiß einfach nicht weiter, wo der Fehler liegt.
 

danton

Debian User
Der Eintrag "Default FTP Site" muss nicht zwingend vorhanden sein, sondern kann auch anders heissen. Oder nutzt du als FTP-Server nicht die IIS-Funktionen, sondern hast ein anderes FTP Server Programm installiert?
Ansonsten ist FTP ein etwas spezielles Protokoll, da es mehrere Verbindungen aufbaut (Steuerkanal und Datenkanal). Der Datenkanal wird erst aufgebaut, wenn du eine Datei überträgst. Alle Firewalls und Portforwarder in der Verbindung müssen mit dieser Besonderheit klar kommen und da ist deine Konfiguration schon recht speziell. Am einfachsten ist es wahrscheinlich, wie oben von @marce angemerkt, einfach auf SFTP/SCP/SSH umzusteigen - zumal FTP ja mittlerweile aus den Browsern verschwindet.
 

NoFloXx

New Member
Also ich habe jetzt nach dieser Anleitung den OpenSSH auf dem Windows-Server installiert.
Er läuft auch und ich kann lokal über die Powershell mit ssh verbinden.
Sobald ich aber von außen per WinSCP versuche auf den Server zu verbinden, kommt 'Zugriff verweigert' ( s. Anhang ).

Die IONOS-Firewall ist, wie gesagt, komplett deaktiviert, sowie die Windows-Server Firewall ebenfalls.
Port 20, 21 und 22 habe ich auf dem IONOS vServer per socat auf die interne IP meines Windows-Servers weitergeleitet.
Ich kann auch vom Win-Server den IONOS vServer anpingen und umgekehrt. Das Selbe gilt für den IONOS vServer und den Win-Server aus meinem Heimnetzwerk.

Was mache ich falsch? :(
 

Attachments

  • capture_001_09112021_070137.jpg
    capture_001_09112021_070137.jpg
    33.5 KB · Views: 29

danton

Debian User
Läuft der vServer bei Ionos auch mit Windows oder mit Linux. Falls er mit Linux läuft, könnte es sein, dass der Port 22 dort bereits vom lokalen SSH Daemon belegt ist, so dass der Port nicht weitergeleitet wird. Entweder du leitest einen anderen Port auf den SSH auf deinem Windows-Server weiter oder falls du für diese Verbindung des Standard-Port verwenden willst, änderst du die Konfiguration auf dem vServer, damit dort der SSH auf einem Non-Standard-Port lauscht.
 

NoFloXx

New Member
Auf dem vServer läuft Linux, Debian 10. Allerdings sehe ich keine Möglichkeit, diesen zu konfigurieren, da es der kleinste vServer bei denen ist für 1 EUR im Monat. Der reicht ja von der Performance her. Habe aber schon den Support gebeten, mich zu kontaktieren, woran das liegen könnte, weil bei mir sehe und finde ich einfach keinen Fehler....
 

danton

Debian User
Für den Preis wird es kein Managed vServer sein, d.h. für die Konfiguration der Software bist du verantwortlich. Auf dem System läuft mit sehr hoher Wahrscheinlichkeit ein SSH-Daemon, denn darüber wirst du vermutlich auch deinen socat installiert haben. Wie ich in meinem vorherigen Post schon schrieb: Es kann nur ein SSH auf dem Standard-Port lauschen, der andere braucht einen Non-Standardport, z.B. 10022. Ob du dafür nun die /etc/ssh/sshd_config auf dem Linux-System anpasst oder den socat so konfiguriert, dass er Port 10022 (um mal bei meinem Beispiel zu bleiben) auf Port 22 weiterleitet, musst du selber wissen.
 

NoFloXx

New Member
Also ich habe heute mit dem Plesk-Support gesprochen und dieser hat die Vermutung, dass vom Win-Server keine Daten an den Clienten gehen.
Was muss ich da tun? Der Plesk-Support kann oder wollte da natürlich nicht helfen, da Plesk einwandfrei funktioniert.

Hier mal die Log vom Support:

Hallo,

es erscheint obwohl eine passive Port Range auch im Windows IIS unter <Servername> > FTP Firewallunterstützung eine passive Port Range eingerichtet wurde weiterhin die Meldung:
Response: 550 Data channel timed out.

Ich vermute, dass dies ein netzwerktechnisches Problem ist, denn eine Verbindung von Lokal funktioniert ohne Probleme:

ftp> open 192.168.1.41
Verbindung mit 192.168.1.41 wurde hergestellt.
220 Microsoft FTP Service
200 OPTS UTF8 command successful - UTF8 encoding now ON.
Benutzer (192.168.1.41:(none)): plesktest331
Password required
Kennwort:
230 User logged in.
ftp> dir
200 PORT command successful.
125 Data connection already open; Transfer starting.
11-10-21 12:19AM <DIR> .composer
11-07-21 10:25PM <DIR> cgi-bin
11-07-21 10:25PM <DIR> error_docs
11-08-21 10:05AM <DIR> httpdocs
11-07-21 10:25PM <DIR> logs
11-10-21 04:55PM <DIR> tmp
226 Transfer complete.
FTP: 290 Bytes empfangen in 0.01Sekunden 19.33KB/s
ftp> quit
221 Goodbye.

Dies deutet normalerweise darauf hin, dass eine Firewall die Ports nicht geöffnet hat.
Da die Firewalls auf Ihrem Server aber deaktiviert sind, vermute ich hier die Ursache darin, dass Sie ein Linux-System zum Hosten einer Windows VM verwenden, die sich die selbe IP Adresse teilen.
Das System, mit welchem Sie die Ports vom Linux Server and den Windows Server weiterleiten ist vermutlich nicht darauf konfiguriert, die Ports für die FTP-Datenverbindung vom Windows, zurück an den Linux und wiederum an den Client zurückzuliefern.

Von Plesk Seite funktioniert der FTP Server da eine Verbindung vom Server selbst aufgebaut werden kann und die Netzwerkkonfiguration muss von Ihrer Seite vorgenommen und untersucht werden, da wir dafür keinen Support geben können.

Vielen Dank für Ihr Verständnis.


Regards
Benjamin W***
Technical Support Engineer Plesk
Ich bin wirklich ratlos was ich tun soll, um dieses Problem zu beheben.
Ansonsten läuft wirklich alles reibungslos und perfekt im Zusammenspiel vServer -> Wireguard -> Socat -> Plesk.
 

NoFloXx

New Member
Für den Preis wird es kein Managed vServer sein, d.h. für die Konfiguration der Software bist du verantwortlich. Auf dem System läuft mit sehr hoher Wahrscheinlichkeit ein SSH-Daemon, denn darüber wirst du vermutlich auch deinen socat installiert haben. Wie ich in meinem vorherigen Post schon schrieb: Es kann nur ein SSH auf dem Standard-Port lauschen, der andere braucht einen Non-Standardport, z.B. 10022. Ob du dafür nun die /etc/ssh/sshd_config auf dem Linux-System anpasst oder den socat so konfiguriert, dass er Port 10022 (um mal bei meinem Beispiel zu bleiben) auf Port 22 weiterleitet, musst du selber wissen.
Und nein, es ist kein managed vServer, laut IONOS-Support wird aber nichts blockiert und es müsste von IONOS-Seite ( aufgrund meiner Deaktivierung der Firewall ) möglich sein, eine FTP- und / oder SSH-Verbindung herzustellen.
Irgendwas scheint aber da zu blockieren und für den Tunnel zwischen dem vServer und dem Host auf meinem Proxmox kann ja IONOS nix. Da ist aber auch alles an Firewalls etc. deaktiviert.

Wie müsste ich denn die /etc/ssh/sshd_config auf dem vServer anpassen und was müsste ich im socat einrichten, damit ich einen anderen Port nutzen kann?
Im Plesk z.B. ist nämlich eine passiv FTP Port-Range von 49152-65535 eingestellt, was aber auch keine Abhilfe bringt, da ich im socat immer nur einen Port weiterleiten kann. Laut 'https://www.yougetsignal.com/tools/open-ports/' ist auch bei Eingabe von Port '49152, 46153' usw. nur der erste Port offen, die Range nicht.

Kannst du mir da helfen?

/edit
Im Nachhinein isses klar, dass auf dem vServer ein SSH-Daemon lauschen muss, da ich mich ja per FTP bzw. SFTP auf den vServer verbinden kann. Anders konnte ich ja kein socat installieren.
Aber wie kann ich einen anderen Port für die Verbindung zum FTP-Verzeichnis der im Plesk verwalteten Domain herstellen, welches Verzeichnis ja nicht auf dem vServer liegt, sondern auf meiner Proxmox-VM?
 
Last edited:

danton

Debian User
Das Problem von FTP ist, dass alle Firewalls zwischen FTP-Client und Server mit dem FTP-Protokoll klar kommen müssen. Auch dein vServer ist in diesem Kontext eine Art Firewall, da du dort mit socat Ports weiterleitest. Außerdem hast du i.d.R. den FTP-Client auch hinter einer Firewall hängen (der DSL-Router mit NAT, ggfl. auch noch Carrier-Grade NAT bei zahlreichen Providern). Daher ja auch von @marce und mir der Vorschlag, stattdessen SFTP/SCP/SSH zu verwenden, da hast du diese Probleme nicht. Du musst nur entscheiden, ob du den lokalen SSH-Daemon auf dem Standardport laufen läßt oder diesen per socat auf deinen Server daheim weiterleitest. Abhängig davon musst du entweder einen anderen Port in socat auf deinen Server weiterleiten (und belässt es bei der Konfiguration in der sshd_config) oder du änderst den Port in der sshd_config und leitest Port 22 im socat auf Port 22 von deinem Server daheim weiter. Wie du den SSH-Port auf deinem vServer änderst, steht in der manpage des ssh-Daemons, ansonsten gibt es auch zahlreiche Anleitungen im Internet. Mit socat habe ich noch nicht gearbeitet, da gibt es aber sicherlich auch eine Manpage für.
 
Top