O cliente FTP envia um comando PORT errado

0

Eu tenho uma máquina com Windows 7 conectada a duas sub-redes, com endereços IP 10.0.0.241 e 172.17.240.94 .

Nesta máquina, é executado um aplicativo java de terceiros que inicia internamente uma sessão do cliente FTP, conectando-se a um servidor FTP localizado em 172.17.240.65 .

Em algum ponto, o aplicativo tenta baixar um arquivo, mas mostra um erro de "redefinição de conexão" (uma mensagem de aplicativo proprietário).

Usando um sniffer, descobri que o aplicativo emite um comando FTP errado: PORT 10,0,0,240, x, y (onde x, y é qualquer número de porta).

Portanto, o problema é evidente: o comando PORT escolheu o endereço IP incorreto dentre os dois disponíveis, e o servidor FTP tenta se conectar a um endereço fora de sua rede. O comando correto deve ser PORT 172,17,240,94, x, y .

Em outras máquinas com 2 IPs, o aplicativo funciona bem (e o comando PORT parece bem também), em outros, não ... parece aleatório.

Eu não tenho acesso ao código-fonte do aplicativo.

Eu tentei embaralhar o pedido do IP na configuração do adaptador de rede do Windows, sem sucesso.

Existe uma maneira de o mecanismo java escolher o endereço IP correto?

    
por oscar 20.01.2014 / 19:46

1 resposta

3

Obviamente, o aplicativo java não determina o endereço para PORT com base no IP do peer. Provavelmente apenas pega o endereço que o sistema reporta primeiro, seja ele qual for. Talvez este artigo da base de conhecimento da MS o ajude a mudar a ordem do link do IP (é para versões mais antigas do Windows, mas ainda pode se aplicar ). Você também pode tentar alterar a ordem de ligação Como posso alterar a ordem de ligação dos adaptadores de rede no Windows 7? ou alterar fisicamente as interfaces.

Mas pode ser ainda mais fácil alterar o aplicativo java para usar o modo passivo FTP, onde ele não precisa conhecer o IP de sua própria rede.

    
por 20.01.2014 / 20:43