Network Configuration

From FileZilla Wiki
Jump to navigationJump to search

Setting up network components for FTP is not trivial for use outside your LAN (Local Area Network). Since so many firewalls and routers exist, it is impractical to give detailed step-by-step instructions suitable for every user. To configure FileZilla and the routers and/or firewalls involved, it is important to understand the basics of the FTP protocol. This documentation describes the history of the FTP protocol and how some aspects of the protocol work. Read it carefully, it will save you a lot of trouble setting up FTP.

Contexte == ==

Un aperçu de l'arrière-plan historique et technique du protocole FTP. Pour des informations détaillées en profondeur voir File Transfer Protocol spécifications .

Historique

Dans le monde vivant rapide de l'Internet, le File Transfer Protocol n'est pas vieux, il est ancienne. Les premières versions du protocole de remonter aussi loin que 1971, les normes en vigueur étant de 1985. Le protocole peut-être même plus que vous!

À l'époque, l'Internet était principalement utilisé par les universités et centres de recherche. La communauté est petite, de nombreux utilisateurs se connaissaient et tous ont collaboré ensemble. L'Internet a été un match amical, le lieu de confiance. De sécurité n'était pas une préoccupation.

Depuis lors, beaucoup de choses ont changé. L'Internet est aujourd'hui partout, avec des millions d'utilisateurs de communiquer entre eux de différentes manières. L'Internet est maintenant un endroit hostile. La disponibilité et l'ouverture a attiré des utilisateurs malveillants qui exploitent les limites de conception, implémentation incomplète, bugs et l'inexpérience des autres utilisateurs. Une société de logiciels bien connus situés à Redmond, WA certainement joué un rôle dans ce domaine.

Plusieurs tentatives ont été faites pour résoudre ces problèmes:

  • NAT (Network Address Translation) routeurs. Bon nombre des hôtes et des routeurs sur Internet utilisent le IPv4 Protocole. Le nombre d'hôtes connectés à l'Internet est à la limite de conception IPV4 pour le nombre d'adresses (IPv6 est conçu pour soulager cette). routeurs NAT permet de multiples systèmes sur un réseau local pour se connecter au monde extérieur avec une adresse IP externe.
  • pare-feu personnels essayer de protéger les ordinateurs personnels contre les attaques par des utilisateurs malveillants.

Malheureusement, les deux NAT et pare-feu personnels conflit avec FTP le plus souvent. Pour aggraver les choses, certains d'entre eux ont même des défauts eux-mêmes, provoquant des problèmes supplémentaires concernant FTP. === === Information technique

Ce qui distingue de la plupart des protocoles FTP autre est l'utilisation de connexions secondaires pour les transferts de fichiers. Si vous vous connectez à un serveur FTP, vous établissez la soi-disant'connexion de contrôle, sur laquelle les commandes FTP et leurs réponses sont transférés. Pour transférer un fichier ou un répertoire, le client envoie une commande au cours de la connexion de contrôle pour établir la connexion'de données.

Cette connexion de données peut être établie de deux manières différentes, appelé mode actif et en mode passif.

En mode passif, qui est le deuxième mode, le client envoie la commande PASV sur le serveur et le serveur répond avec une adresse. Le client émet alors une commande pour transférer un fichier ou pour obtenir une liste des répertoires et établit une connexion secondaire par rapport à l'adresse renvoyée par le serveur.

En mode actif, le client ouvre un socket sur la machine locale, et indique son adresse au serveur en utilisant la commande PORT. Une fois que le client émet une commande pour transférer un fichier ou une liste, le serveur se connecte à l'adresse fournie par le client.

Dans les deux cas, le fichier réel ou annonce est ensuite transféré sur la connexion de données.

En général, l'établissement de connexions sortantes nécessite moins de configuration sur les routeurs / pare-feu impliqués que d'établir les connexions entrantes. En mode passif, la connexion est sortante sur le côté client et entrant sur le côté serveur. En mode actif cependant, les rôles sont inversés: La connexion de données entrants sur le côté client et sortant sur le côté serveur. S'il vous plaît noter que cela fait seulement une différence pour l'établissement de connexion: Une fois la connexion établie, il obtient des données peut être utilisée pour des mises ou des téléchargements.

Une configuration réseau commun pourrait ressembler à ceci:

FTP1.png


Ainsi, en mode passif, le routeur et pare-feu sur le côté serveur doit être configuré pour accepter les connexions entrantes et transmettre. Sur le côté client toutefois, que les connexions sortantes doivent être autorisés, ce qui sera déjà le cas la plupart du temps.

Analogues en mode actif, le routeur et pare-feu sur le côté client doivent être configuré pour accepter les connexions entrantes et l'avant. Apparemment, sur le côté serveur, que les connexions sortantes doivent être autorisés.

Comme, en général un serveur fournit un service pour de nombreux utilisateurs, il est beaucoup plus facile de configurer le routeur et pare-feu sur le côté serveur une fois pour le mode passif, que de configurer le routeur du client / pare-feu pour chaque client en mode actif. C'est pourquoi le mode passif est recommandé.

routeurs NAT ==== ====

Pour la plupart des utilisateurs du haut débit, il y aura un NAT (Network Address Translation) routeur entre son ordinateur et l'Internet. Ce routeur NAT peut être un dispositif autonome routeur (peut-être un routeur sans fil), ou il pourrait être intégré à un modem DSL ou modem câble. Dans un environnement NAT, tous les systèmes de derrière le routeur NAT forme unLocal Area Network (LAN)et chaque système dans le réseau local a une adresse IP locale (reconnaissable que quatre petits nombres séparés par des points). Le routeur NAT lui-même a une adresse IP locale ainsi. En outre, le routeur NAT a également une adresse IP externe en vertu de laquelle il est connu de l'Internet. Les adresses IP internes ne sont valables que dans le LAN, d'un système distant auquel ils n'auraient pas de sens. Exemple:

FTP2.png


Supposons qu'un serveur est derrière un routeur NAT. Imaginez ce qui se passe si un client demande le mode passif, mais le serveur ne connaissez pas l'adresse IP externe du routeur NAT. Ainsi, le serveur envoie son adresse interne pour le client. Dans ce cas, deux choses peuvent se produire:

  • Si le client n'est pas derrière un NAT, le client serait avorter depuis l'adresse n'est pas valide.
  • Si le client est derrière un NAT, l'adresse donnée par le serveur peut être le même que dans un système propre réseau local du client.

De toute évidence, dans les deux cas le mode passif serait impossible.

Donc, si un serveur est derrière un routeur NAT, il faut connaître l'adresse IP externe du routeur en mode passif. Dans ce cas, le serveur envoie l'adresse externe du routeur pour le client. Le client établit alors une connexion vers le routeur NAT, qui, dans les routes tourner la connexion au serveur.

Firewalls === ===

Le but d'un'Personal Firewall est de protéger l'utilisateur contre les vulnérabilités de sécurité dans le système d'exploitation ou les applications tournant sur elle. Sur Internet, les logiciels malveillants comme les vers par exemple essayer d'exploiter ces failles pour infecter votre système. Les pare-feu peut aider à prévenir une telle infection.

Surtout si vous utilisez FTP, les utilisateurs de pare-feu peut parfois voir des messages comme celui-ci de leur pare-feu:  Trojan Netbus bloqués sur le port 12345 utilisé par FileZilla.exe

Dans presque tous les cas, il s'agit d'unefausses alarmes. N'importe quel programme peut choisir n'importe quel port il veut pour la communication sur Internet. Il peut donc arriver que FileZilla arrive de choisir un port qui est d'ailleurs le port par défaut d'un trojan ou d'un autre malware. Tant que vous téléchargez FileZilla sur le site officiel, il est propre de tout malware.

Malveillants routeurs, pare-feu et le sabotage de données

Certains routeurs et pare-feu semblant d'être intelligent. Ils analysent les connexions et si ils pensent que c'est FTP, ils silencieusement changer les données échangées entre le client et le serveur. Si l'utilisateur n'a pas explicitement activé cette fonctionnalité, ce problème n'est rien d'autre que le sabotage de données et peut causer divers problèmes.

Pour illustrer par un exemple, supposons qu'il existe un client derrière un routeur NAT tente de se connecter au serveur. Let's supposons en outre que ce client ne sait pas qu'il est derrière un NAT et veut utiliser le mode actif. Ainsi, il envoie la commande PORT avec son local, l'adresse IP non routable sur le serveur:

 PORT 10,0,0,1,12,34

La commande ci-dessus indique au serveur de se connecter à l'adresse 10.0.0.1 sur le port 12 * 256 = 3106 34

Le routeur NAT voit dans cette évolution et en silence la commande à inclure l'adresse IP externe. Dans le même temps, le routeur NAT va également créer une redirection de port temporaire pour la session FTP, éventuellement sur un autre port même:

 PORT 123,123,123,123,24,55

Maintenant, la commande ci-dessus indique au serveur de se connecter à l'adresse 123.123.123.123 sur le port 24 * 256 = 6199 55

Avec ce comportement, un routeur NAT permet à un client mal configuré pour utiliser le mode actif.

Mais pourquoi est-ce mauvais? Si cette fonctionnalité est activée par défaut, sans le consentement explicite de l'utilisateur, il provoque beaucoup de problèmes. les connexions FTP dans sa forme la plus fondamentale semble fonctionner, mais dès qu'il ya un certain écart de l'affaire de base, tout va échouer, laissant l'utilisateur totalement déconcerté:

  • Le routeur NAT prend aveuglément certaines utilisations de connexion FTP en fonction de critères tels que les ports cible ou la réponse initiale du serveur:
    • Il n'y a aucune garantie que le protocole utilisé est vraiment FTP, mais il est détecté en tant que telle (également appeléfauxpositive). Bien que peu probable, il est concevable que dans une future révision du protocole FTP, la syntaxe de la commande PORT pourrait changer. Un routeur NAT modifier la commande PORT serait silencieusement changer les choses il ne supporte pas et donc rompre la liaison.
    • Détection de protocole du routeur peut manquer de reconnaître une connexion FTP (unfauxnégatif). Supposons que le routeur ne regarde que le port cible, et si elle est de 21, il le détecte comme FTP. À ce titre, les connexions en mode actif avec un client mal configuré pour serveurs sur le port 21 va fonctionner, mais les connexions aux autres serveurs sur des ports non standards échouera.
  • De toute évidence, un routeur NAT ne peut plus toucher à la connexion dès que une session cryptée FTP est utilisé, à nouveau en laissant l'utilisateur clueless pourquoi il travaille pour FTP normal, mais pas pour cryptée FTP.
  • Supposons un client derrière un routeur NAT envoie "PORT 10,0,0,1,12,34". Comment fonctionne le routeur NAT de connaissance du client est mal configuré? Il est également possible que le client est correctement configuré, mais veut simplement d'ouvrir une FXP (serveur à serveur) de transfert entre le serveur est connecté à une autre machine et dans le propre réseau local du serveur.

Comme vous pouvez le voir, ayant des caractéristiques spécifiques du protocole est activé dans un routeur NAT par défaut est une mauvaise chose. Un routeur NAT bonne devraient toujours être pleinement protocole agnostique. L'exception est si vous en tant qu'utilisateur ont explicitement activé cette fonctionnalité, sachant toutes ses conséquences.

Bien que cette section seulement discuté de la combinaison d'un routeur NAT sur le côté client en mode actif, la même chose s'applique à un serveur derrière un routeur NAT et la réponse à la commande PASV.

Setting up FileZilla Client

In case you're running FileZilla 3, it's recommended you run the network configuration wizard. It will guide you through the necessary steps and can test your configuration in the end.

Obviously, if you want to connect to any server, you need to tell your firewall that FileZilla should be allowed to open connections to other servers. Most normal FTP servers use port 21, SFTP servers use port 22 and FTP over SSL/TLS (implicit mode) use port 990 by default. These ports are not mandatory though, so it's best to allow outgoing connections to arbitrary remote ports.

Since there are many servers on the internet that are misconfigured and don't support both transfer modes, it's recommended that you configure both transfer modes on your end.

Passive mode

The client has no control over what port the server chooses for the data connection in passive mode, so in order to use passive mode, you'll have to allow outgoing connections to all ports in your firewall.

Active mode

In active mode, the client opens a socket and waits for the server to establish the transfer connection.

By default, FileZilla Client asks the operating system for the machine's IP address and for a free port number. This configuration can only work if you are connected to the internet directly without any NAT router and if you have set your firewall to allow incoming connections on all ports greater than 1024.

If you have a NAT router, you need to tell FileZilla your external IP address or active mode connections will not work with servers outside your local network:

  • If you have a fixed external IP address, you can enter it in the configuration dialog of FileZilla.
  • If you have a dynamic IP address, you can let FileZilla obtain your external IP address from a special website automatically each time you start FileZilla. No matter what version of FileZilla you have, no information will be submitted to that website.

If in doubt, use the second option.

If you do not want to allow incoming connections on all ports, or if you have a NAT router, you need to tell FileZilla to use a specific range of ports for active mode connections. You will have to open these ports in your firewall. If you have a NAT router, you need to forward these ports to the local machine FileZilla is installed on. Depending on your router model, you can either forward a range of ports or you need to forward all ports individually.

Valid ports can be from 1 to 65535, however ports less than 1024 are reserved for other protocols. It is best to choose ports greater than or equal to 50000 for active mode FTP. Due to the nature of TCP (the underlying transport protocol), a port cannot be reused immediately after each connection. Hence the range of ports should not be too small or transfers of multiple small files can fail. A range of 50 ports should be sufficient in most cases.

Screenshot of settings dialog of FileZilla 3 showing configuration page for active mode.

Setting up FileZilla Server

Setting up the server is very similar to setting up the client, the main difference is that the roles of active and passive mode are reversed.

One common mistake done especially from users with NAT routers is the way they test the server. If you are within your local network, you can only test using the local IP address of the server. Using the external address from the inside will probably fail. Basically one of the following could happen if you try to connect using the external address from the inside:

  • It surprisingly works
  • Router blocks access to its own external address from the inside as possible attack
  • Router forwards connection to your ISP which then blocks it as possible attack

Even if that works, there is no guarantee an external user can really connect to your server and transfer files. The only reliable way is to connect to your server from an external system outside of your LAN.

Active mode

Just make sure FileZilla Server is allowed to establish outgoing connections to arbitrary ports, since the client controls which port to use.

For the local end of the connection, FileZilla Server tries to use a port one less than that of the control connection (e.g. port 20 if server is listening on port 21). However this is not always possible, so don't rely on it.

Passive mode

Server configuration is very similar to client configuration for active mode.

In passive mode, the server opens a socket and waits for the client to connect to it.

By default, FileZilla Server asks the operating system for the machine's IP address and for a free port number. This configuration can only work if you are connected to the internet directly without any NAT router and if you have set your firewall to allow incoming connections on all ports greater than 1024.

If you have a NAT router, you need to tell FileZilla Server your external IP address or passive mode connections will not work with clients outside your local network:

  • If you have a fixed external IP address, you can enter it in the configuration dialog of FileZilla Server.
  • If you have a dynamic IP address, you can let FileZilla Server obtain your external IP address from a special website automatically. Except your version of FileZilla Server, no information will be submitted to that website.

If in doubt, use the second option.

If you do not want to allow incoming connections on all ports, or if you have a NAT router, you need to tell FileZilla Server to use a specific range of ports for passive mode connections. You will have to open these ports in your firewall. If you have a NAT router, you need to forward these ports to the local machine FileZilla Server is installed on. Depending on your router model, you can either forward a range of ports or you need to forward all ports individually.

Valid ports can be from 1 to 65535, however ports less than 1024 are reserved for other protocols. It is best to choose ports >= 50000 for passive mode FTP. Due to the nature of TCP (the underlying transport protocol), a port cannot be reused immediately after each connection. Hence the range of ports should not be too small or transfers of multiple small files can fail. A range of 50 ports should be sufficient in most cases.

Screenshot of settings dialog of FileZilla Server showing configuration page for passive mode.

Troubleshooting

Unfortunately, many personal firewalls and consumer routers are flawed or in some cases, are even actively sabotaging FTP (e.g. SMC Barricade V1.2).

First of all, you should keep everything up-to-date. This includes the firewall software as well as the firmware version in your router.

If that does not help, you might want to try to uninstall your firewall to see what happens. Simply disabling your firewall might not work, as some firewalls cannot be fully disabled.

If possible, try to connect directly to the internet without a router.

If you are trying to setup a server and it works fine within your LAN but is not reachable from the outside, try changing the listening port. Some ISPs don't like its customers to host servers and block ports < 1024.

Another problem might be if you are hosting an FTP server on default port 21. There might be a firewall at the ISP side of your connection which can do odd things like changing the port for PASV commands. Try using another non-default port for your FTP server.

If you encounter "cannot open data connection" on a random basis, i.e. the ftp client can connect to the ftp server without problem for many connections until it encounters this problem, one possible reason may be your client PC anti-virus scanner being configured to block outgoing connections on certain ranges of ports. When your ftp connections are running on pasv mode, the client side outgoing ports are selected randomly and when it hits those prohibited ports, you will encounter your problem. To identify this problem, read your anti-virus log on that client. In general, any software e.g. PC firewall, etc that can block certain range of outgoing ports can cause similar ftp grief.

Timeouts on large files

If you can transfer small files just fine, but transfers of larger files end with a timeout, then there is a broken router and/or firewall between the client and the server that is causing this problem.

As mentioned above, FTP uses two TCP connections: One control connection to submit commands and to receive replies as well as one data connection for the actual file transfers. It is the nature of FTP that during a transfer the control connection stays completely idle.

The TCP specifications do not set a limit on the amount of time a connection can stay idle. Unless explicitly closed a connection is assumed to remain alive indefinitely. Many routers and firewalls however automatically close idle connections after a while. Worse, they most of the time don't even notify the endpoints of this, instead they just silently drop the connection. So for FTP this means that during a long transfer the control connection can get dropped, but neither client nor server get to know about it. So when all data has been transferred, the server still thinks the control connection is alive and sends the transfer confirmation reply over the control connection. Likewise, the client as well thinks the control connection is alive and waits for the reply from the server. But since the control connection got silently dropped, this reply never arrives, eventually causing a timeout.

In an attempt to solve this problem, the TCP specifications include a way to send keep-alive packets on otherwise idle TCP connections, to tell all involved parties that the connection is still alive and needed. However, the TCP specifications also make it very clear that these keep-alive packets should not be sent more often than once every two hours. Thus, with added tolerance for network latency, connections can stay idle for up to 2 hours and 4 minutes.

The problem is that many routers and firewalls drop connections that have been idle for less than 2 hours and 4 minutes. Such behavior is violating the TCP specifications, RFC 5382 makes this very clear. In other words, all routers and firewalls that are dropping idle connections too early are broken, they just cannot be used for long FTP transfers. Unfortunately manufacturers of consumer-grade router and firewall vendors do not care about specifications, all they care about is getting your money and thus only deliver barely working lowest quality junk.

To solve this problem you need to uninstall any affected firewall and replace any faulty router with a quality one.

Setting up FileZilla Server with Windows Firewall

If you are having problems with setting up FileZilla Server to run behind Windows Firewall (specifically, it fails on "List" and the client receives a "Failed to receive directory listing" error), you must add the FileZilla Server application to Windows Firewall's Exceptions list. To do this, follow these steps:

  1. Open Windows Firewall under Control Panel.
  2. If using Vista, click "Change Settings"
  3. Select the "Exceptions" tab.
  4. Click "Add program..."
  5. Do NOT select "FileZilla Server Interface" from the list, instead click on "Browse..."
  6. Locate the directory you installed FileZilla Server to (normally "C:\Program Files\FileZilla Server\")
  7. Double click or select "FileZilla server.exe" and press open (Once again, NOT "FileZilla Server Interface.exe")
  8. Select "FileZilla server.exe" from the list and click "Ok"
  9. Verify that "FileZilla server.exe" is added to the exceptions list and that it has a check mark in the box next to it
  10. Press "Ok" to close the window

Passive mode should now work. If you are still having problems connecting (from another computer or outside the network) check your router settings or try to add the port number in the Windows Firewall settings located in the Exceptions tab.

See the Microsoft kb article 931130 about running FileZilla with the "Routing and Remote Access" or the "Application Layer Gateway" service enabled. http://support.microsoft.com/kb/931130