web-dev-qa-db-ja.com

ポートは開いているようですが、接続は拒否されました

Ubuntu 12.04でポート3000を開こうとしていますが、Webサーバーがリッスンしているためです。私はここのコンフォートゾーンから少し外れており、成功せずに問題を解決しようとして何時間も費やしました。

ファイアウォールでポートが開いているようです:

$> 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
21
sebpiq

サーバーがlocalhostインターフェイスのみでリッスンしている場合、リモートコンピューターからアクセスすることはできません。 netstatの出力には127.0.0.1:3000しかリストされていないため、これが主な問題のようです。

また、「mydomain.com」がマシンの正しいIPアドレスに解決されることを確認する必要があります。これにより、それに接続すると、そのマシンの外部インターフェースと通信することになります。

24
dobey

最近、nodejs HTTPSサーバーでこの問題が発生しましたが、その解決策は「localhost」、「127.0.0.1」、さらにはドメイン名を使用しないことでした。 「0.0.0.0」を使用することでした

これはワイルドカードとして機能し、ドメイン名を介したパブリック解決を可能にし、「localhost」でも機能すると考えています

編集:ここに0.0.0.0トピックのサーバー障害ページへのリンクがあります: https://serverfault.com/questions/78048/whats-the-difference-between-ip-address-0-0-0- 0-and-127-0-0-1

13
Sami Fouad

AWSまたはその他のクラウドサービスを使用している可能性はありますか?その場合、ポートはInctance(OS)構成レベル以降で開く必要があります。特にAWSでは、ポート3000へのアクセスを開く必要がある「セキュリティグループ」を探す必要があります。