J'essaie d'ouvrir le port 3000 sur Ubuntu 12.04, car un serveur Web y écoute. Je suis un peu en dehors de ma zone de confort et j'ai passé de nombreuses heures à tenter de résoudre le problème sans succès.
Le port semble être ouvert dans le pare-feu:
$> Sudo ufw status
Status: active
To Action From
-- ------ ----
...
3000/tcp ALLOW Anywhere
3000/tcp ALLOW Anywhere (v6)
Le serveur écoute bien sur ce port:
$> netstat -an | grep "LISTEN "
...
tcp 0 0 127.0.0.1:3000 0.0.0.0:* LISTEN
...
Et je peux même wget
bien la page d’index:
$> wget localhost:3000
Connecting to localhost (localhost)|127.0.0.1|:3000... connected.
HTTP request sent, awaiting response... 200 OK
Et le fichier reçu contient ce que j'attendais ("hello world" :).
Cependant, lorsque j'essaie depuis un autre ordinateur ou si je wget mydomain.com:3000
, je reçois "connection refused"
, et nmap m'indique que le port n'est pas ouvert:
$> nmap -A -T4 mydomain.com
Host is up (0.00032s latency).
...
Not shown: 999 closed ports
PORT STATE SERVICE VERSION
22/tcp open ssh OpenSSH 5.9p1 Debian 5ubuntu1 (protocol 2.0)
...
Service Info: OS: Linux
Une idée de ce que je devrais essayer ensuite ???
EDIT
Voici ce que donne traceroute:
$> traceroute mydomain.com
traceroute to mydomain.com (176.31.x.x), 30 Hops max, 60 byte packets
1 mydomain.com (176.31.x.x) 0.034 ms 0.013 ms 0.010 ms
Si votre serveur n'écoute que sur l'interface localhost, vous ne pourrez pas y accéder à partir d'un ordinateur distant. Cela semble être votre principal problème car seul 127.0.0.1:3000 est répertorié dans votre sortie netstat.
Vous devrez également vous assurer que "mydomain.com" résout l'adresse IP correcte pour votre machine, de sorte que sa connexion entraînera une communication avec l'interface externe de cette machine.
J'ai eu ce problème récemment avec un serveur HTTPS de nodejs, et la solution à ce problème n'était pas d'utiliser "localhost", "127.0.0.1" ou même le nom de domaine. C'était pour utiliser "0.0.0.0"
Je crois que cela fonctionne comme un joker, permettant maintenant une résolution publique via le nom de domaine et fonctionnant également avec "localhost"
Edit: Voici un lien vers une page serverfault sur la rubrique 0.0.0.0: https://serverfault.com/questions/78048/whats-the-difference-between-ip-address-0-0-0- 0 et 127-0-0-1
Existe-t-il une chance que vous utilisiez AWS ou tout autre service cloud? Dans ce cas, le port doit être ouvert au niveau de configuration inctance (OS) ou après. En particulier dans AWS, vous devez rechercher des "groupes de sécurité" dans lesquels vous devez ouvrir l'accès au port 3000.