포트가 열려 있지만 연결이 거부되었습니다

Ubuntu 12.04에서 포트 3000을 열려고하는데 웹 서버가 수신 대기 중입니다. 나는 여가 활동 구역에서 약간 벗어 났으며 성공하지 않고 문제를 해결하기 위해 많은 시간을 보냈습니다.

방화벽에서 포트가 열려있는 것 같습니다.

$> sudo ufw status
Status: active

To                         Action      From
--                         ------      ----
...
3000/tcp                   ALLOW       Anywhere
3000/tcp                   ALLOW       Anywhere (v6)

서버가 해당 포트에서 올바르게 듣고 있습니다.

$> netstat -an | grep "LISTEN "
...
tcp        0      0 127.0.0.1:3000          0.0.0.0:*               LISTEN
...

wget색인 페이지 도 괜찮습니다.

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

그리고 수신 된 파일에는 내가 기대하는 것 ( “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

다음에 무엇을 시도 해야할지 생각하십니까 ???

편집하다

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


답변

서버가 로컬 호스트 인터페이스에서만 수신 대기중인 경우 원격 컴퓨터에서 액세스 할 수 없습니다. netstat 출력에 127.0.0.1:3000 만 나열되어 있기 때문에 이것은 주요 문제인 것으로 보입니다.

또한 “mydomain.com”이 컴퓨터의 올바른 IP 주소로 확인되어 연결되면 해당 컴퓨터의 외부 인터페이스와 통신 할 수 있어야합니다.


답변

최근 nodejs HTTPS 서버에서이 문제가 발생했으며 이에 대한 해결책은 “localhost”, “127.0.0.1”또는 도메인 이름을 사용하지 않는 것이 었습니다. “0.0.0.0”을 사용했습니다

나는 이것이 와일드 카드의 역할을한다고 믿습니다. 이제 도메인 이름을 통한 공개 해결이 가능하며 “localhost”와도 작동합니다.

편집 : 여기 0.0.0.0 주제의 serverfault 페이지에 대한 링크가 있습니다 : /server/78048/whats-the-difference-between-ip-address-0-0-0-0-and- 127-0-0-1


답변

AWS 또는 다른 클라우드 서비스를 사용하고있을 가능성이 있습니까? 이 경우 포트는 OS 구성 수준 또는 그 이후에 열어야합니다. 특히 AWS에서는 포트 3000에 대한 액세스 권한을 열어야하는 “보안 그룹”을 찾아야합니다.