FileZilla Server - Problemas estranhos de conexão FTP

1

Eu tenho um problema estranho com a conexão com o servidor FTP de um cliente, que executa o FileZilla v.0.9.41. O servidor está operando atrás de um roteador NAT, portanto, ele está configurado para aceitar conexões passivas. Isso parece funcionar com alguns clientes, mas não todos. Por exemplo, usando o Transmit do meu Mac, conecto-me bem. Mas usando o Core FTP do Windows, tenho o seguinte erro:

PORT command failed
Error loading directory...

E fica lá indefinidamente. Usando Transmitir, isso não é um problema.

Eu não estou operando atrás de um firewall, nem estou usando um serviço de firewall de software. Cada dispositivo que se conecta está na mesma sub-rede, usando o mesmo roteador para acessar a Internet. As credenciais são as mesmas e a configuração básica é a mesma (Passiva, Binária, etc.).

Onde estou me perdendo é descobrir por que um cliente se conecta sem problemas, enquanto a maioria dos outros se conecta, mas não permite que eu percorra a estrutura de diretórios.

Alguém já viu esse comportamento antes e, em caso afirmativo, alguém tem pensamentos sobre uma solução?

NOTA: Eu não tenho acesso ao FileZilla Server, mas tenho cópias dos arquivos de configuração XML para solução de problemas.

EDIT: Veja o log abaixo.

Welcome to Core FTP, release ver 2.2, build 1798 (x86.U) -- � 2003-2014
WinSock 2.0
Mem -- 2,097,151 KB, Virt -- 2,097,024 KB
Started on Wednesday September 03, 2014 at 15:45:PM
Connect socket #796 to <Server IP Address>, port 21...
220-FileZilla Server version 0.9.41 beta  
220-written by Tim Kosse ([email protected])  
220-FileZilla Server version 0.9.41 beta  
USER <User>  
331 Password required for <User>  
PASS **********  
230 Logged on  
SYST  
215 UNIX emulated by FileZilla  
Keep alive off...
CWD /Inbound/  
250 CWD successful. "/Inbound" is current directory.  
PASV  

PORT command failed
Error loading directory...

E aqui está a configuração do servidor FileZilla:

<FileZillaServer>
    <Groups />
    <Users>
        <User Name="USER">
            <Option Name="Pass">pass</Option>
            <Option Name="Group" />
            <Option Name="Bypass server userlimit">0</Option>
            <Option Name="User Limit">0</Option>
            <Option Name="IP Limit">0</Option>
            <Option Name="Enabled">1</Option>
            <Option Name="Comments" />
            <Option Name="ForceSsl">0</Option>
            <IpFilter>
                <Disallowed />
                <Allowed />
            </IpFilter>
            <Permissions>
                <Permission Dir="C:\inetpub\FTP">
                    <Option Name="FileRead">1</Option>
                    <Option Name="FileWrite">1</Option>
                    <Option Name="FileDelete">1</Option>
                    <Option Name="FileAppend">1</Option>
                    <Option Name="DirCreate">0</Option>
                    <Option Name="DirDelete">0</Option>
                    <Option Name="DirList">1</Option>
                    <Option Name="DirSubdirs">1</Option>
                    <Option Name="IsHome">1</Option>
                    <Option Name="AutoCreate">0</Option>
                </Permission>
            </Permissions>
            <SpeedLimits DlType="0" DlLimit="10" ServerDlLimitBypass="0" UlType="0" UlLimit="10" ServerUlLimitBypass="0">
                <Download />
                <Upload />
            </SpeedLimits>
        </User>
    </Users>
    <Settings>
        <Item name="Serverports" type="string">21</Item>
        <Item name="Number of Threads" type="numeric">2</Item>
        <Item name="Maximum user count" type="numeric">0</Item>
        <Item name="Timeout" type="numeric">120</Item>
        <Item name="No Transfer Timeout" type="numeric">600</Item>
        <Item name="Allow Incoming FXP" type="numeric">1</Item>
        <Item name="Allow outgoing FXP" type="numeric">1</Item>
        <Item name="No Strict In FXP" type="numeric">0</Item>
        <Item name="No Strict Out FXP" type="numeric">0</Item>
        <Item name="Login Timeout" type="numeric">60</Item>
        <Item name="Show Pass in Log" type="numeric">0</Item>
        <Item name="Custom PASV IP type" type="numeric">1</Item>
        <Item name="Custom PASV IP" type="string">SAME AS OUTWARD FACING SERVER IP</Item>
        <Item name="Custom PASV min port" type="numeric">0</Item>
        <Item name="Custom PASV max port" type="numeric">0</Item>
        <Item name="Initial Welcome Message" type="string">%v&#x0D;&#x0A;written by Tim Kosse ([email protected])&#x0D;&#x0A;Please visit http://sourceforge.net/projects/filezilla/</Item>
        <Item name="Admin port" type="numeric">14147</Item>
        <Item name="Admin Password" type="string"></Item>
        <Item name="Admin IP Bindings" type="string"></Item>
        <Item name="Admin IP Addresses" type="string"></Item>
        <Item name="Enable logging" type="numeric">0</Item>
        <Item name="Logsize limit" type="numeric">0</Item>
        <Item name="Logfile type" type="numeric">0</Item>
        <Item name="Logfile delete time" type="numeric">0</Item>
        <Item name="Use GSS Support" type="numeric">0</Item>
        <Item name="GSS Prompt for Password" type="numeric">0</Item>
        <Item name="Download Speedlimit Type" type="numeric">0</Item>
        <Item name="Upload Speedlimit Type" type="numeric">0</Item>
        <Item name="Download Speedlimit" type="numeric">10</Item>
        <Item name="Upload Speedlimit" type="numeric">10</Item>
        <Item name="Buffer Size" type="numeric">32768</Item>
        <Item name="Custom PASV IP server" type="string">http://ip.filezilla-project.org/ip.php</Item>
        <Item name="Use custom PASV ports" type="numeric">0</Item>
        <Item name="Mode Z Use" type="numeric">0</Item>
        <Item name="Mode Z min level" type="numeric">1</Item>
        <Item name="Mode Z max level" type="numeric">9</Item>
        <Item name="Mode Z allow local" type="numeric">0</Item>
        <Item name="Mode Z disallowed IPs" type="string"></Item>
        <Item name="IP Bindings" type="string">LOCAL IP ADDRESS</Item>
        <Item name="IP Filter Allowed" type="string"></Item>
        <Item name="IP Filter Disallowed" type="string"></Item>
        <Item name="Hide Welcome Message" type="numeric">0</Item>
        <Item name="Enable SSL" type="numeric">0</Item>
        <Item name="Allow explicit SSL" type="numeric">1</Item>
        <Item name="SSL Key file" type="string"></Item>
        <Item name="SSL Certificate file" type="string"></Item>
        <Item name="Implicit SSL ports" type="string">990</Item>
        <Item name="Force explicit SSL" type="numeric">0</Item>
        <Item name="Network Buffer Size" type="numeric">65536</Item>
        <Item name="Force PROT P" type="numeric">0</Item>
        <Item name="SSL Key Password" type="string"></Item>
        <Item name="Allow shared write" type="numeric">0</Item>
        <Item name="No External IP On Local" type="numeric">1</Item>
        <Item name="Active ignore local" type="numeric">1</Item>
        <Item name="Autoban enable" type="numeric">0</Item>
        <Item name="Autoban attempts" type="numeric">10</Item>
        <Item name="Autoban type" type="numeric">0</Item>
        <Item name="Autoban time" type="numeric">1</Item>
        <Item name="Service name" type="string"></Item>
        <Item name="Service display name" type="string"></Item>
        <Item name="Enable HASH" type="numeric">0</Item>
        <Item name="Disable IPv6" type="numeric">0</Item>
        <SpeedLimits>
            <Download />
            <Upload />
        </SpeedLimits>
    </Settings>
</FileZillaServer>

EDIT: Depois de usar ftptest.net para solucionar problemas, eu acho o seguinte:

Command: PWD Reply: 257 "/" is current directory. 
Status: Current path is / 
Command: TYPE I 
Reply: 200 Type set to I 
Command: PASV 
Reply: 227 
Entering Passive Mode (172,23,23,130,234,97)

Error: Server returned unroutable private IP address in PASV reply 
Make sure the server is configured to allow passive mode connections. 
If the server is behind a NAT router, make sure the server knows its external IP address. 
The range of ports used for passive mode must be opened in all involved firewalls. 
The range of ports used for passive mode must be forwarded by all involved NAT routers. 
Try uninstalling all firewalls and plug your computer directly into your modem, thus bypassing the router.

Posso inferir que há um problema no lado do servidor, mas agora minha pergunta é: por que posso me conectar com alguns clientes (especificamente Transmitir no Mac) sem problemas, enquanto outros estão ativamente desconectados (como o Core FTP no Windows)?

    
por Dave 03.09.2014 / 18:17

2 respostas

3

Solução:

O cliente precisa alterar a configuração

    <Item name="Custom PASV IP" type="string">SAME AS OUTWARD FACING SERVER IP</Item>

para o IP do roteador fazendo o NATing.

Explicação:

De acordo com a seção 4.1.2 do RFC 959 , após o envio do PASV:

The response to this command includes the host and port address this server is listening on.

Depois disso, o cliente pode responder com outra listagem do endereço IP e da porta que deseja usar.

Alguns clientes, como o FileZilla, verificarão se o endereço IP e a porta fornecidos em resposta estão realmente acessíveis. Outros simplesmente assumirão que podem continuar no mesmo local onde começaram. O primeiro é provavelmente mais correto, já que o protocolo permite uma mudança de porta e endereço, mas falhará nesse caso.

Editar

Se o servidor FTP já estiver usando as configurações corretas, o problema pode estar na configuração do roteador NAT / firewall / etc. Pode estar alterando os dados enviados por ele. A maneira de identificar isso seria fazer um tcpdump em ambos os lados da conexão para verificar se o conteúdo do tráfego é o mesmo.

    
por 04.09.2014 / 08:38
2

Como indicado pelo ftptest.net, o servidor não sabe seu endereço IP externo. Certifique-se de configurá-lo apropriadamente (na Interface do Servidor do FileZilla, vá para Editar > Configurações > Configurações do modo passivo ).

Observe que alguns clientes ignoram silenciosamente os endereços IP inválidos / não-retornados em resposta a PASV e, em vez disso, usam o endereço IP do servidor. É por isso que alguns clientes trabalham mesmo com sua configuração inválida.

Embora eu não tenha certeza de que essa seja a razão pela qual o Core FTP falha. Ele nem registra a resposta de PASV . Mas talvez valide a resposta antes de registrá-la. E a mensagem de erro é bastante genérica (eu esperaria que o "PORT" na mensagem de erro é realmente um erro de digitação e deve ler "PASV").

    
por 03.09.2014 / 21:30

Tags