Pouvoir donner accès depuis internet à un serveur web (Apache, HTTP) ou FTP (Filezilla Server) peut être très pratique.
On peut par exemple utiliser un serveur FTP pour échanger un fichier avec un amis, sans avoir besoin de passer par un service tiers comme megaupload, ou une boite mail.
Si vous faites du développement web, ça peut servir à montrer à quelqu’un le site que vous developpez (le client, ou un amis), directement sur votre machine, en temps réel.
Votre ordinateur sera accessible via son adresse IP publique (attribuée automatiquement par votre FAI), que vous pouvez connaitre facilement).
Configurer les serveurs
Je ne vais pas m’attarder sur la configuration des serveurs, il y a pleins de tutos sur le net.
Serveur FTP
J’utilise Filezilla Server, la seule chose à faire et de s’assurer que le serveur écoute bien toutes les adresses : menu Edit > Settings > IP bindings : il doit y avoir “*” dans ce champ.
Serveur Web (Apache)
Pour le serveur web c’est un peu plus subtil. Il faut aller dans le fichier de configuration d’apache (httpd.conf), et ajouter l’instruction Listen de manière à ce qu’Apache écoute bien l’IP publique de votre ordinateur.
Le mieux reste d’écouter toutes les IP d’un ou plusieurs ports, n’ayons pas peur de viser large :
Listen 80 #(écoute toutes les IP sur le port 80)
Listen *:81 #(autre notation, écoute toutes les IP du port 81)
Note : pour accéder à un serveur HTTP sur un port autre que 80 (port par défaut), il suffit d’ajouter “:<numero_de_port>” après le domaine.
Exemple : www.google.fr:81 permet d’accèder à google sur le port 81. Bien entendu il n’y a pas se serveur web sur ce port chez google, c’est juste un exemple.
Configurer le routeur
Voila le principal intérêt de ce billet. Bien souvent, les soucis viennent de la configuration du routeur, ou de la “box”.
Maintenant, la majorité des ordinateurs chez les particuliers ne se connecte pas directement à internet (comme au temps des modem ADSL USB ou 56k).
Ils sont reliés à un modem/routeur (une livebox, une freebox, une neufbidule ou encore un matériel tiers : netgear, linksys, bewan, cisco…) via le réseau local.
Et c’est ce modem/routeur qui est connecté à internet…
L’ennui, c’est que les modem/routeur ont tendance à perturber les communications entre internet et l’ordinateur qui héberge vos serveurs web et FTP.
Pour que tout ça fonctionne, il faut effectuer 2 opérations :
- ouvrir les ports utilisés par nos serveurs (80 pour Apache et 21 pour FTP)
- rediriger ces ports vers la machine hôte
L’IP locale de l’ordinateur qui héberge les serveurs (hôte) est 192.168.1.10.
Nous, on souhaite que l’on puisse accéder au serveur FTP via internet, donc via l’IP publique : 94.210.123.123, sur le port 21.
Pour cela, il faut rediriger le port 21 du routeur veut le port 21 de 192.168.1.10.
Idem pour le serveur web, mais sur le port 80.
L’interface d’administration du routeur permet de faire cela (http://192.168.1.1 ou http://192.168.0.1).
Firewall, fais pas chier !
Dernier petit détail, et non des moindre : si vous êtes sous windows (XP, Vista ou Seven), le pare-feu intégré va vous emmerder en bloquant le réseau sans même vous avertir avec une fenêtre style “voulez-vous autoriser le programme xxxxxx à se connecter à internet”.
Avant de vous lancer, commencez par désactiver le pare feu (dans panneau de configuration).
C’est un conseil que je vous donne, si vous ne voulez pas vous arracher les cheveux en hurlant “POURQUOI CA MARCHE PAS !!? B#~@ |$£è !”.
Tester ses serveur
Il existe un certain nombre d’outils sur internet que vous pouvez utiliser pour tester votre configuration.
Scanner de port
C’est un outil qui vous dit si tel ou tel port est ouvert sur votre IP publique.
Je vous recommande celui-ci :
http://www.t1shopper.com/tools/port-scan/
Et dans le même temps, je vous déconseille fortement celui-là :
http://www.frameip.com/scan/
Il répond un peu n’importe quoi (il vous dira que tel port est fermé alors que c’est faux, et vice versa).
Attention, il ne faut pas confondre un port ouvert et un port ouvrable. Si le scanner vous dit que tel port est fermé, ça ne veut pas forcément dire que le routeur bloque ce port, c’est peut être simplement qu’il n’y a aucune application qui écoute actuellement ce port (c’est le cas pour le port 21 si vous arrêtez le Filezilla Server par exemple).
Test FTP
http://www.g6ftpserver.com/fr/ftptest
Super site, vous entrez l’IP, username, password et port, et le site essai de se connecter en FTP depuis internet.
Test serveur web
http://corrigesduweb.com/test-page-code.php
Ce site affiche le code HTML de l’URL que vous lui fournissez.
Méfiez vous des apparences. Parfois l’adresse publique de votre serveur web (ex: http://94.210.123.123:81) sera inaccessible depuis votre réseau local, alors que tout va fonctionner sans problème depuis internet. Donc pensez à utiliser ces service au lieu de tester directement depuis chez vous.