
Wie führt man einen passiven FTP-Server auf einer virtuellen Azure Linux-Maschine aus?
Das Konfigurieren der Endpunkte in der Azure-Firewall und der PASV-Ports reicht nicht aus, da der Client bei „Wechseln in den passiven Modus“ hängen bleibt.
Antwort1
Derzeit ist es aus zwei Gründen nicht möglich, Passive FTP so reibungslos auszuführen, wie Sie es auf einem dedizierten Server tun würden: Erstens erlaubt Azure derzeit nur das Öffnen von 25 Endpunkten (bitte korrigieren Sie mich, wenn ich falsch liege) für jeden Server, und zweitens verwendet Azure eine LAN<->Virtuelle IP-Verbindung. Lassen Sie uns die Probleme einzeln durchgehen.
Azure implementiert derzeit einen NAT/Firewall/Load Balancer, der den Datenverkehr von einer externen virtuellen IP an eine interne Netzwerkadresse ( 10.0.0.0/8
Klasse) weiterleitet. Wenn Sie dies ifconfig
auf Ihrer virtuellen Maschine ausführen, werden Sie feststellen, wovon ich spreche. Ein Endpunkt ist für SSH reserviert und ich glaube nicht, dass Sie ihn wirklich deaktivieren möchten. Wenn also ein anderer Endpunkt für Port 21 reserviert ist, können Sie nur 23 PASV-Ports verwenden (sobald Sie keinen anderen Dienst hosten), wodurch die Anzahl der Clients, die gleichzeitig eine Verbindung herstellen können, streng begrenzt wird. Sobald Sie dies akzeptieren, können wir fortfahren.
Wenn Sie die Ports 25003-25006 (einen nach dem anderen) geöffnet haben, können Sie die folgende Konfiguration verwenden, um sie zu aktivieren
pasv_enable=YES
pasv_min_port=25003
pasv_max_port=25006
vsftpd
und jeder andere FTP-Server gibt einen PASV
Befehl aus, der im Wesentlichen lautet: „Verbinde dich mit XYWZ auf Port AA“. Jeder FTP-Server muss die Konfiguration des Computers lesen, um die Netzwerkadresse zu erhalten: Aus diesem Grund sagt vsftp im Wesentlichen: „Verbinde dich mit 10.XYZ auf Port 25003“ und deshalb bleibt der Client hängen!!!
Verwenden Sie Folgendes, um vsftpd anzuweisen, eine andere externe Adresse zu verwenden
pasv_addr_resolve=YES
pasv_address=dom.cloudapp.net
Getestet, funktioniert und mit der Community geteilt!
Hinweise: Aktives FTP funktioniert, sobald sich der Client nicht hinter einer Firewall oder einer Great Wall befindet, und SFTP ist die beste Alternative zu FTP, wird aber leider von vielen älteren Anwendungen nicht unterstützt.