Ich versuche, Port 3000 unter Ubuntu 12.04 zu öffnen, da dort ein Webserver lauscht. Ich bin hier etwas außerhalb meiner Komfortzone und habe viele Stunden damit verbracht, das Problem zu lösen, ohne Erfolg.
Port scheint in der Firewall offen zu sein:
$> sudo ufw status
Status: active
To Action From
-- ------ ----
...
3000/tcp ALLOW Anywhere
3000/tcp ALLOW Anywhere (v6)
Der Server überwacht diesen Port in Ordnung:
$> netstat -an | grep "LISTEN "
...
tcp 0 0 127.0.0.1:3000 0.0.0.0:* LISTEN
...
Und ich kann sogar wget
die Indexseite in Ordnung bringen:
$> wget localhost:3000
Connecting to localhost (localhost)|127.0.0.1|:3000... connected.
HTTP request sent, awaiting response... 200 OK
Und die empfangene Datei enthält was ich erwarte ("Hallo Welt" :).
Wenn ich es jedoch von einem anderen Computer aus versuche oder wenn ich einen wget mydomain.com:3000
erhalte "connection refused"
und nmap mir mitteilt, dass der Port nicht offen ist:
$> 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
Irgendeine Idee was ich als nächstes probieren soll ???
BEARBEITEN
Hier ist, was Traceroute gibt:
$> 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
Remote-Computers ein. Sie können die letzten zwei Oktette der letzten (Server-) IP aus Datenschutzgründen ausgeben.Antworten:
Wenn Ihr Server nur die localhost-Schnittstelle überwacht, können Sie nicht von einem Remotecomputer aus darauf zugreifen. Dies scheint Ihr primäres Problem zu sein, da in Ihrer netstat-Ausgabe nur 127.0.0.1:3000 aufgeführt ist.
Sie müssen auch sicherstellen, dass "mydomain.com" in die richtige IP-Adresse für Ihren Computer aufgelöst wird, sodass die Verbindung mit diesem Computer zur Kommunikation mit der externen Schnittstelle dieses Computers führt.
quelle
eth0
oder so ähnlich), die IP-Adresse (192.168.1.99 oder so ähnlich) oder die MAC-Adresse an die richtige Schnittstelle binden . Das hängt vom Programm ab.Ich hatte dieses Problem vor kurzem mit einem nodejs HTTPS-Server, und die Lösung zu ihm war, "localhost", "127.0.0.1" oder sogar den Domain-Namen nicht zu verwenden. Es sollte "0.0.0.0" verwendet werden
Ich glaube, dies fungiert als Platzhalter und ermöglicht nun die öffentliche Auflösung über den Domainnamen und funktioniert auch mit "localhost".
Bearbeiten: Hier ist ein Link zu einer Serverfehlerseite zum Thema 0.0.0.0: /server/78048/whats-the-difference-between-ip-address-0-0-0-0-and- 127-0-0-1
quelle
}).listen(3000, '127.0.0.1');
zu}).listen(3000, '0.0.0.0');
in meinem Code.Besteht die Möglichkeit, dass Sie AWS oder andere Cloud-Dienste verwenden? In diesem Fall sollte der Port auf Inctance (OS) -Konfigurationsebene oder danach geöffnet werden. Insbesondere in AWS sollten Sie nach "Sicherheitsgruppen" suchen, in denen Sie den Zugriff auf Port 3000 öffnen sollten
quelle