J'essaie d'ouvrir le port 3000 sur Ubuntu 12.04, car j'ai un serveur Web à l'écoute. Je suis un peu hors de ma zone de confort ici et j'ai passé de nombreuses heures à essayer 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'attends ("bonjour le monde" :).
Cependant, lorsque j'essaie depuis un autre ordinateur, ou si je wget mydomain.com:3000
reçois "connection refused"
, et nmap me dit 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 ???
MODIFIER
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
traceroute mydomain.com
l'ordinateur distant. Vous pouvez ** sortir les deux derniers octets de la dernière IP (serveur) pour la confidentialité.Réponses:
Si votre serveur écoute uniquement 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» se résout à l'adresse IP correcte pour votre machine, de telle sorte que la connexion à celle-ci entraînera une communication avec l'interface externe de cette machine.
la source
eth0
, ou quelque chose comme ça), l'adresse IP (192.168.1.99, ou quelque chose comme ça), ou l'adresse MAC. Cela dépend du programme.J'ai eu ce problème récemment avec un serveur nodejs HTTPS, et la solution n'était pas d'utiliser "localhost", "127.0.0.1" ou même le nom de domaine. C'était d'utiliser "0.0.0.0"
Je crois que cela agit comme un caractère générique, permettant désormais une résolution publique via le nom de domaine et cela fonctionne également avec "localhost"
Modifier: voici un lien vers une page de défaillance du serveur sur le sujet 0.0.0.0: /server/78048/whats-the-difference-between-ip-address-0-0-0-0-and- 127-0-0-1
la source
}).listen(3000, '127.0.0.1');
à}).listen(3000, '0.0.0.0');
mon code.Y a-t-il une chance que vous utilisiez AWS ou tout autre service cloud? Dans ce cas, le port doit être ouvert au niveau de la configuration d'inctance (OS) ou après. En particulier dans AWS, vous devriez rechercher des «groupes de sécurité» où vous devez ouvrir l'accès au port 3000
la source