Newsgroup: it.comp.os.linux.sys
Titolo: Connessione FTP va in timeout

Problema: un mio cliente A ha un server ftp (Serv-u su windows 2000 
server, IP pubblico aaa.aaa.aaa.aaa), un firewall gestito da me (linux 
come bridge da cui i log di cui sotto con ethereal) e un suo cliente B 
che deve effettuare delle operazioni FTP.
Tutto bene fino a quando la scorsa settimana B ha cambiato il firewall, 
con un non meglio specificato Astaro (che conosco per aver letto 
qualcosa, ma niente di più). Questo fa da NAT alla rete di B, e il 
cliente B lavora con dei client dietro questo NAT, il cui indirizzo IP 
pubblico è bbb.bbb.bbb.bbb.
Questo un estratto di una sessione FTP sul mio bridge:
4185.706335 bbb.bbb.bbb.bbb -> aaa.aaa.aaa.aaa FTP Request: USER XXX
4185.710671 aaa.aaa.aaa.aaa -> bbb.bbb.bbb.bbb FTP Response: 331 User 
name okay, need password.
4185.788004 bbb.bbb.bbb.bbb -> aaa.aaa.aaa.aaa FTP Request: PASS XXX
4185.790604 aaa.aaa.aaa.aaa -> bbb.bbb.bbb.bbb FTP Response: 230 User 
logged in, proceed.
4185.864055 bbb.bbb.bbb.bbb -> aaa.aaa.aaa.aaa FTP Request: TYPE I
4185.866196 aaa.aaa.aaa.aaa -> bbb.bbb.bbb.bbb FTP Response: 200 Type 
set to I.
4186.163000 bbb.bbb.bbb.bbb -> aaa.aaa.aaa.aaa FTP Request: PORT 
bbb,bbb,bbb,bbb,19,139
4186.165407 aaa.aaa.aaa.aaa -> bbb.bbb.bbb.bbb FTP Response: 200 PORT 
Command successful.
4186.282786 bbb.bbb.bbb.bbb -> aaa.aaa.aaa.aaa FTP Request: SIZE xxx
4186.286216 aaa.aaa.aaa.aaa -> bbb.bbb.bbb.bbb FTP Response: 213 421
4186.362226 bbb.bbb.bbb.bbb -> aaa.aaa.aaa.aaa FTP Request: RETR /xxx.xx
4186.367651 aaa.aaa.aaa.aaa -> bbb.bbb.bbb.bbb FTP Response: 150 Opening 
BINARY mode data connection for xxx.xx (421 bytes).
4186.505036 aaa.aaa.aaa.aaa -> bbb.bbb.bbb.bbb FTP-DATA FTP Data: 421 bytes
4186.637971 aaa.aaa.aaa.aaa -> bbb.bbb.bbb.bbb FTP Response: 226 
Transfer complete.
4241.696353 aaa.aaa.aaa.aaa -> bbb.bbb.bbb.bbb FTP Response: 220 ...
4241.777250 bbb.bbb.bbb.bbb -> aaa.aaa.aaa.aaa FTP Request: USER XXX
4241.778956 aaa.aaa.aaa.aaa -> bbb.bbb.bbb.bbb FTP Response: 331 User 
name okay, need password.
4241.856796 bbb.bbb.bbb.bbb -> aaa.aaa.aaa.aaa FTP Request: PASS XXX
4241.859254 aaa.aaa.aaa.aaa -> bbb.bbb.bbb.bbb FTP Response: 230 User 
logged in, proceed.
4241.937965 bbb.bbb.bbb.bbb -> aaa.aaa.aaa.aaa FTP Request: TYPE I
4241.939399 aaa.aaa.aaa.aaa -> bbb.bbb.bbb.bbb FTP Response: 200 Type 
set to I.
4242.038770 bbb.bbb.bbb.bbb -> aaa.aaa.aaa.aaa FTP Request: PORT 
bbb,bbb,bbb,bbb,19,140
4242.040269 aaa.aaa.aaa.aaa -> bbb.bbb.bbb.bbb FTP Response: 200 PORT 
Command successful.
4242.144397 bbb.bbb.bbb.bbb -> aaa.aaa.aaa.aaa FTP Request: SIZE /xxx.xx
4242.147819 aaa.aaa.aaa.aaa -> bbb.bbb.bbb.bbb FTP Response: 213 421
4242.251078 bbb.bbb.bbb.bbb -> aaa.aaa.aaa.aaa FTP Request: RETR /xxx.xx
4242.255564 aaa.aaa.aaa.aaa -> bbb.bbb.bbb.bbb FTP Response: 150 Opening 
BINARY mode data connection for xxx.xx (421 bytes).
4242.351184 aaa.aaa.aaa.aaa -> bbb.bbb.bbb.bbb FTP-DATA FTP Data: 421 bytes
4242.646060 aaa.aaa.aaa.aaa -> bbb.bbb.bbb.bbb FTP Response: 226 
Transfer complete.
4304.958779 aaa.aaa.aaa.aaa -> bbb.bbb.bbb.bbb FTP Response: 220 ...
4305.049545 bbb.bbb.bbb.bbb -> aaa.aaa.aaa.aaa FTP Request: USER XXX
4305.051190 aaa.aaa.aaa.aaa -> bbb.bbb.bbb.bbb FTP Response: 331 User 
name okay, need password.
4305.140475 bbb.bbb.bbb.bbb -> aaa.aaa.aaa.aaa FTP Request: PASS XXX
4305.142869 aaa.aaa.aaa.aaa -> bbb.bbb.bbb.bbb FTP Response: 230 User 
logged in, proceed.
4305.224262 bbb.bbb.bbb.bbb -> aaa.aaa.aaa.aaa FTP Request: TYPE I
4305.225678 aaa.aaa.aaa.aaa -> bbb.bbb.bbb.bbb FTP Response: 200 Type 
set to I.
4305.419316 bbb.bbb.bbb.bbb -> aaa.aaa.aaa.aaa FTP Request: PORT 
bbb,bbb,bbb,bbb,19,137
4305.420765 aaa.aaa.aaa.aaa -> bbb.bbb.bbb.bbb FTP Response: 200 PORT 
Command successful.
4305.522057 bbb.bbb.bbb.bbb -> aaa.aaa.aaa.aaa FTP Request: SIZE /xxx.xx
4305.525383 aaa.aaa.aaa.aaa -> bbb.bbb.bbb.bbb FTP Response: 213 421
4305.644200 bbb.bbb.bbb.bbb -> aaa.aaa.aaa.aaa FTP Request: RETR xxx.xx
4305.648731 aaa.aaa.aaa.aaa -> bbb.bbb.bbb.bbb FTP Response: 150 Opening 
BINARY mode data connection for xxx.xx (421 bytes).
4305.776930 aaa.aaa.aaa.aaa -> bbb.bbb.bbb.bbb FTP-DATA FTP Data: 421 bytes
4305.921229 aaa.aaa.aaa.aaa -> bbb.bbb.bbb.bbb FTP Response: 226 
Transfer complete.
4646.034363 aaa.aaa.aaa.aaa -> bbb.bbb.bbb.bbb FTP Response: 220 ...
4646.104012 bbb.bbb.bbb.bbb -> aaa.aaa.aaa.aaa FTP Request: USER XXX
4646.105692 aaa.aaa.aaa.aaa -> bbb.bbb.bbb.bbb FTP Response: 331 User 
name okay, need password.
4646.183094 bbb.bbb.bbb.bbb -> aaa.aaa.aaa.aaa FTP Request: PASS XXX
4646.185412 aaa.aaa.aaa.aaa -> bbb.bbb.bbb.bbb FTP Response: 230 User 
logged in, proceed.
4646.260016 bbb.bbb.bbb.bbb -> aaa.aaa.aaa.aaa FTP Request: TYPE I
4646.261486 aaa.aaa.aaa.aaa -> bbb.bbb.bbb.bbb FTP Response: 200 Type 
set to I.
4646.351995 bbb.bbb.bbb.bbb -> aaa.aaa.aaa.aaa FTP Request: PORT 
bbb,bbb,bbb,bbb,19,137
4646.353500 aaa.aaa.aaa.aaa -> bbb.bbb.bbb.bbb FTP Response: 200 PORT 
Command successful.
4646.430460 bbb.bbb.bbb.bbb -> aaa.aaa.aaa.aaa FTP Request: SIZE /xxx.xx
4646.435037 aaa.aaa.aaa.aaa -> bbb.bbb.bbb.bbb FTP Response: 213 421
4646.510066 bbb.bbb.bbb.bbb -> aaa.aaa.aaa.aaa FTP Request: RETR /xxx.xx
4646.514713 aaa.aaa.aaa.aaa -> bbb.bbb.bbb.bbb FTP Response: 150 Opening 
BINARY mode data connection for xxx.xx (421 bytes).
4646.584918 aaa.aaa.aaa.aaa -> bbb.bbb.bbb.bbb FTP-DATA FTP Data: 421 bytes
4646.736242 aaa.aaa.aaa.aaa -> bbb.bbb.bbb.bbb FTP Response: 226 
Transfer complete.
4712.072780 aaa.aaa.aaa.aaa -> bbb.bbb.bbb.bbb FTP Response: 220 ...
4712.154187 bbb.bbb.bbb.bbb -> aaa.aaa.aaa.aaa FTP Request: USER XXX
4712.155768 aaa.aaa.aaa.aaa -> bbb.bbb.bbb.bbb FTP Response: 331 User 
name okay, need password.
4712.235065 bbb.bbb.bbb.bbb -> aaa.aaa.aaa.aaa FTP Request: PASS XXX
4712.237358 aaa.aaa.aaa.aaa -> bbb.bbb.bbb.bbb FTP Response: 230 User 
logged in, proceed.
4712.326294 bbb.bbb.bbb.bbb -> aaa.aaa.aaa.aaa FTP Request: TYPE I
4712.327758 aaa.aaa.aaa.aaa -> bbb.bbb.bbb.bbb FTP Response: 200 Type 
set to I.
4712.427134 bbb.bbb.bbb.bbb -> aaa.aaa.aaa.aaa FTP Request: PORT 
bbb,bbb,bbb,bbb,19,138
4712.428641 aaa.aaa.aaa.aaa -> bbb.bbb.bbb.bbb FTP Response: 200 PORT 
Command successful.
4712.531179 bbb.bbb.bbb.bbb -> aaa.aaa.aaa.aaa FTP Request: SIZE /xxx.xx
4712.545002 aaa.aaa.aaa.aaa -> bbb.bbb.bbb.bbb FTP Response: 
213 3534287
4712.653202 bbb.bbb.bbb.bbb -> aaa.aaa.aaa.aaa FTP Request: RETR /xxx.xx
4712.657566 aaa.aaa.aaa.aaa -> bbb.bbb.bbb.bbb FTP Response: 150 Opening 
BINARY mode data connection for xxx.xx (3534287 bytes).
4712.777817 aaa.aaa.aaa.aaa -> bbb.bbb.bbb.bbb FTP-DATA FTP Data: 1460 bytes
4712.779049 aaa.aaa.aaa.aaa -> bbb.bbb.bbb.bbb FTP-DATA FTP Data: 1460 bytes
4715.718120 aaa.aaa.aaa.aaa -> bbb.bbb.bbb.bbb FTP-DATA [TCP 
Retransmission] FTP Data: 1460 bytes
4721.753220 aaa.aaa.aaa.aaa -> bbb.bbb.bbb.bbb FTP-DATA [TCP 
Retransmission] FTP Data: 1460 bytes
4733.823417 aaa.aaa.aaa.aaa -> bbb.bbb.bbb.bbb FTP-DATA [TCP 
Retransmission] FTP Data: 1460 bytes
4757.963771 aaa.aaa.aaa.aaa -> bbb.bbb.bbb.bbb FTP-DATA [TCP 
Retransmission] FTP Data: 1460 bytes
4806.244511 aaa.aaa.aaa.aaa -> bbb.bbb.bbb.bbb FTP-DATA [TCP 
Retransmission] FTP Data: 1460 bytes
Non sono un esperto di TCP-IP, vorrei un vostro parere. L'idea che mi 
sono fatto è che l'Astaro non riesca a gestire i pacchetti di dimensione 
1460, o che  abbia problemi con il tracking della sessione ftp, che come 
vedete per un po' va, poi basta, non c'è più risposta...
Altre considerazioni:
- B riesce a lavorare su altri server ftp di altre reti (così dicono)
- Molti altri clienti di A riescono ad accedere senza problemi al suo 
server FTP
- Se B si connette con un modem (bypassando quindi l'Astaro) riesce ad 
accedere al server ftp di A
- io riesco ad accedere al server FTP di A.
Se prendiamo per vera la prima considerazione c'è qualcosa che non va 
tra le due reti...e non posso escludere che non sia solo un problema di 
B. Ma cosa posso guardare dal mio lato? Ho accesso a tutta la rete di A 
volendo fare delle prove.
Grazie

 vedete per un po' va, poi basta, non c'è più risposta...
Vale la pena provare con passive ftp?
Alex.

APB ha scritto:

Mi dicono che hanno già provato. Purtroppo dall'altra parte non c'è 
molta collaborazione, per cui non posso verificare di persona. Potessi 
accedere ad un pc della loro rete in remoto fare io le mie prove, ma non 
posso.

 Vale la pena provare con passive ftp?
IMHO è un problema di tcp MSS e quindi di MTU.

 IMHO è un problema di tcp MSS e quindi di MTU.
Era una delle mie ipotesi. Considerando che io non faccio nessun NAT 
immagino che la cosa sia da modificare su B che fa da NAT. So come si fa 
con pppoe ma nel loro caso hanno una hdsl, come si agisce su questi 
parametri?

 Era una delle mie ipotesi. 
Guarda, per verificare la cosa al volo potresti provare col target TCPMSS
di iptables.
Tutto ciò che va e viene dal loro indirizzo in tcp potresti trattarlo con
-j TCPMSS --set-mss <valore_basso>, ammesso che su Astaro tu possa
intervenire a tale livello e che TCPMSS ci sia.
Se ciò è possibile e con un mss, ad esempio, di 1000 le cose funzionano,
allora avresti individuato il problema ed a quel punto potresti procedere
con un troubleshooting più definitivo, ammesso di non voler tenere per
buono il workaround di cui sopra.

 parametri?
Non vuoi agire sul tuo MTU? (parametro MTU di ifconfig).
-- 
Per rispondermi, togli il nome del poeta

 
Mi dicono che hanno risolto "alzando" il loro MTU...
Il mio attualmente è:
MTU:1500
Avrei dovuto alzarlo o abbassarlo?

 Avrei dovuto alzarlo o abbassarlo?
Abbassarlo.
La mia soluzione sarebbe stata più smart perchè avrebbe modificato il mss
solo per le sessioni tcp con loro.
Resta da capire perchè questi geni tenessero MTU più basso del massimo
consentito.