端口似乎是开放的,但连接被拒绝

seb*_*piq 30 firewall webserver

我试图在 Ubuntu 12.04 上打开端口 3000,因为我有一个 Web 服务器在那里监听。我在这里有点不适应,花了很多时间试图解决这个问题,但没有成功。

端口似乎在防火墙中打开:

$> sudo ufw status
Status: active

To                         Action      From
--                         ------      ----
...
3000/tcp                   ALLOW       Anywhere
3000/tcp                   ALLOW       Anywhere (v6)
Run Code Online (Sandbox Code Playgroud)

服务器正在该端口上正常侦听:

$> netstat -an | grep "LISTEN "
...
tcp        0      0 127.0.0.1:3000          0.0.0.0:*               LISTEN     
...
Run Code Online (Sandbox Code Playgroud)

我什wget至可以对索引页进行处理:

$> wget localhost:3000
Connecting to localhost (localhost)|127.0.0.1|:3000... connected.
HTTP request sent, awaiting response... 200 OK
Run Code Online (Sandbox Code Playgroud)

收到的文件包含我期望的内容(“hello world”:)。

但是,当从另一台计算机尝试时,或者如果我wget mydomain.com:3000得到"connection refused",并且 nmap 告诉我端口未打开:

$> 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
Run Code Online (Sandbox Code Playgroud)

知道我接下来应该尝试什么吗???

编辑

这是 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
Run Code Online (Sandbox Code Playgroud)

dob*_*bey 24

如果您的服务器仅在 localhost 接口上侦听,您将无法从远程计算机访问它。这似乎是您的主要问题,因为您的 netstat 输出中只列出了 127.0.0.1:3000。

您还需要确保“mydomain.com”解析为您机器的正确 IP 地址,以便连接到它会导致与该机器的外部接口进行通信。


小智 20

我最近在使用 nodejs HTTPS 服务器时遇到了这个问题,解决方案不是使用“localhost”、“127.0.0.1”甚至域名。它是使用“0.0.0.0”

我相信这是一个通配符,现在允许通过域名进行公共解析,它也适用于“localhost”

编辑:这是 0.0.0.0 主题上的 serverfault 页面的链接:https : //serverfault.com/questions/78048/whats-the-difference-between-ip-address-0-0-0-0-and- 127-0-0-1


Где*_*кий 6

您是否有机会使用 AWS 或任何其他云服务?在这种情况下,应该在云服务级别打开端口。特别是在 AWS 中,您应该寻找“安全组”,您需要在其中打开对端口 3000 的访问。