Aparentemente, esse problema foi relatado por outras pessoas que possuem o modem-roteador Netgear D6000, por exemplo:
A solução (que funcionou para mim também) é desativar o recurso "Port Scan e DoS Protection" do roteador.
Eu tenho um problema com um servidor FTP (ftp.cluster003.ovh.net), ocorrendo especificamente quando me conecto a ele de casa (seja qual for o cliente, computador ou SO).
O problema não aparece quando me conecto a outro servidor FTP (ftp.phpnet.org) ou quando me conecto ao ftp.cluster003.ovh.net do meu escritório.
Em casa, estou conectado por meio de um roteador modem DSL Netgear D6000.
Os sintomas são os seguintes: sempre que tento recuperar alguns dados do servidor, quando a quantidade de dados a recuperar não cabe em um único pacote de rede, a transação nunca termina. Isso acontece, é claro, ao recuperar um arquivo, mas também ao listar o conteúdo de um diretório quando há mais de 20 arquivos no diretório (a resposta do servidor contém as permissões e os proprietários dos arquivos, portanto, cada arquivo listado corresponde a aproximadamente 70 bytes de dados).
Exemplo de uma sessão (no Linux):
% for i in 'seq 1 385';do printf "$i-";done > file1
% for i in 'seq 1 395';do printf "$i-";done > file2
% ftp ftp.cluster003.ovh.net
Connected to ftp.cluster003.ovh.net.
220- ~~~ Welcome to OVH ~~~
220 This is a private system - No anonymous login
Name (ftp.cluster003.ovh.net:XXXXXXXX): XXXXXXXX
331 User XXXXXXXX OK. Password required
Password:
230-OK. Current restricted directory is /
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> put file1
local: file1 remote: file1
200 PORT command successful
150 Connecting to port 56721
226-File successfully transferred
226 0.087 seconds (measured here), 16.14 Kbytes per second
1432 bytes sent in 0.00 secs (24.3868 MB/s)
ftp> put file2
local: file2 remote: file2
200 PORT command successful
150 Connecting to port 39725
226-File successfully transferred
226 0.111 seconds (measured here), 12.93 Kbytes per second
1472 bytes sent in 0.00 secs (17.9975 MB/s)
ftp> ls
200 PORT command successful
150 Connecting to port 46431
drwx---r-x 2 644709 users 4 Jan 2 13:02 .
drwx---r-x 4 644709 users 8 Dec 31 12:58 ..
-rw----r-- 1 644709 users 1432 Jan 2 13:02 file1
-rw----r-- 1 644709 users 1472 Jan 2 13:02 file2
226-Options: -a -l
226 4 matches total
ftp> get file1
local: file1 remote: file1
200 PORT command successful
150 Connecting to port 35507
226-File successfully transferred
226 0.001 seconds (measured here), 2.71 Mbytes per second
1432 bytes received in 0.00 secs (529.3102 kB/s)
ftp> get file2
local: file2 remote: file2
200 PORT command successful
150 Connecting to port 56107
^C
receive aborted
waiting for remote to finish abort
226-File successfully transferred
226 0.000 seconds (measured here), 2.91 Mbytes per second
500 ?
Se eu não interromper com Ctrl + C , nada acontece e o servidor eventualmente expira. Ao observar o que acontece com o Wireshark, pode-se ver que o arquivo1 se encaixa em um único pacote, enquanto o arquivo2 não o faz.
O último pacote de arquivo2 é recebido, mas não os anteriores. Isso é completamente determinista. Alguma idéia do que causa esse problema e como resolvê-lo?
Tags networking ftp tcpip