Portanto, sei como configurar um servidor FTP básico no IIS 7, mas estou um pouco confuso sobre as portas. Acredito que tive alguns sites FTP diferentes (cada um com seus próprios diretórios) hospedados em minha área de trabalho, cada um também com suas próprias portas, como :2100
, :2101
, :2102
etc. Não muito tempo depois de iniciar todos esses sites, comecei a executar em questões. Ao tentar conectar a uma que não era minha porta padrão: 21 (que levou a C:\inetpub\wwwroot
), isso me daria um erro dizendo:
An error occurred opening that folder on the FTP server.
Make sure you have permission to access that folder.
Details:
200 Type set to A.
227 Entering Passive Mode (192,168,0,114,243,202).
Este erro ocorreu APENAS ao conectar de uma rede externa, não internamente com outros PCs na mesma rede. (Ainda está me dando o mesmo erro ao tentar conectar.)
Aqui é onde estou agora: recentemente adquiri um SSD como substituto do meu antigo HDD, então instalei o Windows novamente e comecei do zero. A mesma coisa está acontecendo, e isso é o que eu reuni até agora:
- O Firewall do Windows Defender não tem nada a ver com isso, pois desliguei completamente e ainda recebi o erro
- Ao alterar a porta externa para algum outro número que não
:21
(como:2121
), consegui conectar, então estou pensando que o problema deve estar no IIS - Meu cliente FTP (seja Windows File Explorer ou Google Chrome) solicita um nome de usuário e senha (o que significa que está encontrando uma conexão em vez de me dizer que o servidor de destino não existe)
Se alguém precisar de mais informações, por favor, sinta-se à vontade para perguntar.
Agradecemos antecipadamente a todas as respostas!
O FTP executa a transferência de dados por meio de conexões TCP dedicadas em portas alocadas aleatoriamente. (No modo ativo, o servidor se conecta de volta ao cliente; no modo passivo, o cliente se conecta ao servidor; mas o mecanismo geral permanece o mesmo.)
Observe como a resposta ao PASV ("Entrando no modo passivo") inclui o endereço IP privado do servidor,
192,168,0,114
bem como um número de porta243,202
(ou seja, 62410). Como seu servidor FTP está atrás de um roteador NAT, o cliente não poderá estabelecer conexões de dados por dois motivos:O endereço é privado e, portanto, inacessível ao cliente. Claro, o cliente poderia simplesmente ignorar este endereço e usar o endereço original do servidor que ele já conhece para a conexão principal de "controle" (e de fato muitos clientes FTP fazem exatamente isso por razões de segurança), mas...
Seu roteador não sabe que as conexões para esta porta temporária devem ser encaminhadas para o servidor FTP, então ele apenas descartará os pacotes levando a um tempo limite. (Isso seria um problema com firewalls mesmo se o NAT não estivesse presente.)
Então, qual é a diferença entre a porta 21 e a porta 2100? Não está no seu servidor FTP, está no seu roteador.
Quando a conexão de controle é executada na porta FTP padrão 21, muitos roteadores realmente examinam a conexão, bisbilhotam os comandos PORT/PASV enviados por ela e adicionam dinamicamente regras temporárias de encaminhamento de porta sempre que o cliente precisa de uma conexão de dados. Portanto, sempre que seu roteador vir "227 Entrando no modo passivo (192,168,0,114,243,202)" na porta 21, ele criará uma regra de encaminhamento de porta para WAN:62410 → 192.168.0.114:62410 e permitirá que a conexão de dados seja feita.
Além disso, muitos roteadores realmente reescrevem o endereço IP em PORT/PASV, alterando o endereço local do servidor para o endereço WAN do roteador. Portanto, mesmo que o servidor envie "227 Entrando no modo passivo (192,168,0,114,243,202)", o cliente recebe magicamente "227 Entrando no modo passivo (<WAN_IP>,243,202)".
Tudo isso é feito apenas na porta 21, porque assim o roteador sabe que está olhando para uma conexão de controle FTP. Ele não pode simplesmente fazer a mesma mágica em todas as portas, porque pode interpretar mal dados completamente não relacionados (por exemplo, pode até detectar erroneamente esta página da Web se não fosse por HTTPS!). E, claro, só funciona enquanto a própria conexão de controle FTP não for criptografada usando TLS/SSL.
As três coisas que você pode fazer (se precisar continuar usando o FTP) são:
Verifique se o IIS7 oferece suporte à configuração de um intervalo de portas específico para conexões PASV de entrada. Habilite esta opção no IIS e crie uma regra de encaminhamento de porta permanente em seu roteador. Por exemplo, você pode designar 64000–64999 como as portas PASV e, em seguida, encaminhar todas elas para o servidor FTP. (O número de portas que você precisa depende de quantas transferências simultâneas você planeja ter, além de sobressalentes. Espero que seu roteador permita o encaminhamento de uma faixa inteira de uma só vez?)
A vantagem desse método é que ele permite usar TLS/SSL para a conexão de controle. Também é uma configuração única para todos os sites no mesmo servidor. (Por outro lado, você precisa contar com clientes que usam o endereço IP correto, mas praticamente a maioria deles já faz isso.)
Como alternativa, verifique se o seu roteador oferece suporte à configuração do FTP "ALG" (gateway de camada de aplicativo) em portas adicionais além de 21. Em caso afirmativo, marque todos os seus sites adicionais (:2100, :2101, etc.) como portas FTP.
Se nenhuma das opções funcionar, você pode definir o servidor FTP como o "host DMZ" em seu roteador - que é como a opção 1, mas configura o encaminhamento de porta para todas as portas em todos os protocolos.