Firwat FTP-Lëschten hannert engem VPN-Gateway mat NAT hänke bleiwen
Login a PWD funktionéieren, awer LIST a RETR bleiwen hänke wann NAT just d’Headeren nei schreift. Kuckt wou den FTP-Helper misst stoen a wéi een de passive Modus reparéiert.
De Login funktionéiert, PWD funktionéiert, an dann hänkt LIST bis de Client opgëtt oder an en aneren Datenmodus wiesselt. Déi Spléckung ass d’Signatur: d’Kontrollverbindung op Port 21 ass gesond, wärend d’Datenverbindung vun enger Adress oder engem Port opgebaut gëtt, déi déi aner Säit net erreeche kann. Hannert engem VPN-Gateway deen och NAT mécht, ass de übleche Schëllege en FTP-Befehl, deem seng Notzlaascht eng Tunneladress wéi 10.8.0.6 nennt. D’Iwwersetzung vun den Headere beréiert dee Wäert ni.
Wat duerno kënnt ass, wouhier dee Wäert kënnt, a wéi eng Këscht en däerf änneren.
Et brécht d’Notzlaascht, net den Tunnel
FTP setzt den Endpunkt vun den Daten an de Kontrollstrom. Am aktive Modus schéckt de Client PORT mat senger eegener Adress a sengem Port, an de Server rifft op dee Puer zréck. Am passive Modus äntwert de Server mat 227 an engem Puer, an de Client rifft amplaz deen un.
Déi zwou Formen droen déiselwecht Zort Ausso: verbann dech mat dëser Adress, op dësem Port. En Apparat, deen nëmmen IP- an TCP-Headere nei schreift, léisst d’Ausso wéi se ass, dofir probéiert eng Säit weider, eng Adress z’erreechen, déi et nëmmen op der anerer Säit vun engem Tunnel gëtt. D’Datenverbindung bleift hänke nodeems d’Kontrollverbindung schonn als gesond erkläert gouf.
Dräi Modus, dräi Notzlaaschten
D’Tabell hei drënner weist, wéi enger Säit gesot gëtt ze ruffen, a wat en NAT, deen nëmmen Headere nei schreift, dofir ka maachen.
Liest déi lescht Kolonn als dat, wat als éischt feelt. Am aktive Modus ass et de Server, deen eng privat Adress urifft; am passive Modus ass et de Client; bei FTPS ass d’Notzlaascht verschlësselte Text an d’Mëttelkëscht huet nach manner fir ze schaffen.
| Mode | Value in the control stream | Who dials whom | Header-only NAT leaves |
|---|---|---|---|
| Active (PORT) | client address and port | server dials the client | a server dialing an unreachable tunnel address |
| Passive (227) | server address and port | client dials the server | a client dialing an address it cannot route to |
| FTPS | the same values, inside TLS | as above | ciphertext, so no rewrite happens at all |
Setzt den Helper dohi wou d’Iwwersetzung geschitt
Op Linux mécht den Helper nf_conntrack_ftp d’Neischreiwen vun der Notzlaascht. Hien iwwerwaacht d’Kontrollverbindung, léiert de Port dee ausgehandelt gouf, mécht eng Erwaardung fir den Datenfloss an op enger NAT-Këscht schreift en d’Adress an de Port an der Notzlaascht nei. Hien hëlleft nëmmen op deem Apparat, deen d’Adress vum Client iwwersetzt. En op de Client ze lueden, oder op enger Router déi de Floss just weidergëtt, ännert näischt un der Sëtzung.
Dës dräi Befehler weisen, ob de Modul do ass, ob en ugehaangen ass an ob eng Erwaardung existéiert wärend eng Sëtzung op ass:
modprobe nf_conntrack_ftp
lsmod | grep nf_conntrack_ftp
conntrack -L expect | grep ftp
De Modul lueden ass net datselwecht wéi unhaangen. Käre vun 4.7 un kommen mat net.netfilter.nf_conntrack_helper=0, dofir waart den Helper op eng ausdrécklech Regel, zum Beispill iptables -t raw -A PREROUTING -p tcp --dport 21 -j CT --helper ftp. Wann d’Lëscht vun den Erwaardungen eidel bleift wärend enger Iwwerdroung, ass d’Unhängsel wat ze préiwen ass, net de Modul.
Passive Modus: sot dem Server, wat en annoncéiere soll
De passive Modus ass méi liicht deterministesch ze maachen, well een dem Server ka soen, wat en an d’Äntwert 227 setze soll. An vsftpd ass dat pasv_address, zesumme mat pasv_min_port a pasv_max_port; ProFTPD benotzt MasqueradeAddress a PassivePorts. Setzt déi als éischt, well eng richteg annoncéiert Adress d’Noutwennegkeet ophieft, op där Säit eppes nei ze schreiwen.
Dann loosst genee dee Portberäich duerch de Gateway, zum Beispill -A FORWARD -i tun0 -p tcp --dport 30000:30100 -j ACCEPT, sou datt d’Regel mat deem iwwerenee stimmt, wat de Server annoncéiert.
Déi zwou Astellungen musse sech eens ginn. En Server, deem gesot gëtt 30000-30100 z’annoncéieren, wärend de Gateway 40000-40100 erlaabt, feelt op déi mannst hëllefräich Manéier: d’Kontrollgespréich gesäit gesond aus an all Datenverbindung stierft. Vergläicht d’Zuelen, ier Dir eppes anescht debuggt.
Zwou Feelsignaturen, a wat FTPS ewech hëlt
En Hänke bei LIST weist op déi éischt Datenverbindung vun der Sëtzung, wou souwuel d’Adress-Neischreiwen wéi och d’Erwaardung mussen fonctionéieren. En Hänke bei RETR no engem funktionéierende LIST weist op d’Iwwerdroung selwer, dat heescht de passive Beräich oder d’MTU vum Tunnel. Déi zweet Signatur ass kee Notzlaaschteproblem, an d’Astellunge vum Helper flécken se net.
FTP iwwer TLS hëlt d’Notzlaascht ewech, déi den Helper liest. Eng Mëttelkëscht kann eng PORT- oder PASV-Wäert net nei schreiwen, déi se net kann entschlësselen, dofir bleiwen als Méiglechkeeten en Proxy deen TLS fäerdeg mécht, en Server deen eng erreechbar Adress an engem begrenzte Beräich annoncéiert, oder en anert Iwwerdroungsprotokoll.
Eng Kuerz Reiefolleg vun de Kontrollen
Schafft vum Symptom aus no baussen. Confirméiert, datt LIST feelt wärend PWD geléngt, fänkt d’Adress an der PORT- oder 227-Notzlaascht, a frot wéi en Apparat déi Adress iwwersetzt. Hänkt den Helper do un, beobacht d’Lëscht vun den Erwaardungen wärend enger Iwwerdroung, fléckt duerno de passive Modus um Server a spigelt de Beräich an der Regel vum Gateway.
Halt de Feeler um Datenwee getrennt vum Feeler bei der Massen-Iwwerdroung, well se dech zu verschiddenen Astellunge schécken.