web-dev-qa-db-ja.com

Amazon EC2インスタンスのポートを開けません

Amazon AMIインスタンスで正常にホストされたAPIを持っています。カールを使ってローカルで使用できるので、それは確かです。ポート8080でホストされているAPI。

それは私が開いているポートのためにcmdに入れたものです:

su
iptables -I INPUT -p tcp --dport 8080 -m state --state NEW -j ACCEPT
service iptables save
/etc/init.d/iptables restart

ファイアウォールもオフにしました:

service iptables save
service iptables stop
chkconfig iptables off

これが、AWSコンソールでの出入りルールの外観です: enter image description hereenter image description here

それでも、外部からサーバーのパブリックIPを介してアプリにアクセスできません。なぜそれが起こっているのですか?

[〜#〜]更新[〜#〜]

/sbin/iptables -Lの結果:

Chain INPUT (policy ACCEPT)
target     prot opt source               destination

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination

UPDATE 2

netstat -ltpn結果:

Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address               Foreign Address             State       PID/Program name
tcp        0      0 0.0.0.0:22                  0.0.0.0:*                   LISTEN      -
tcp        0      0 127.0.0.1:25                0.0.0.0:*                   LISTEN      -
tcp        0      0 0.0.0.0:111                 0.0.0.0:*                   LISTEN      -
tcp        0      0 127.0.0.1:8080              0.0.0.0:*                   LISTEN      3941/uwsgi
tcp        0      0 0.0.0.0:58704               0.0.0.0:*                   LISTEN      -
tcp        0      0 :::45589                    :::*                        LISTEN      -
tcp        0      0 :::22                       :::*                        LISTEN      -
tcp        0      0 :::111                      :::*                        LISTEN      -
1
neustart47

netstatの出力から、アプリはループバックインターフェイスのみをリッスンしているようです-127.0.0.1:8080であるため、インスタンスの外部でアプリに接続することはできません。

たとえば、 sshサービス-0.0.0.0:22。これは、サービスが「すべてのネットワークインターフェイス」でリッスンしていることを意味します。

ループバックだけでなくリッスンするようにアプリケーションを再構成する必要があります。

もう1つの解決策は、iptables DNATルールを追加して、着信要求がループバックインターフェイスに転送されるようにすることです。

11
dsmsk80

デプロイしたインスタンスに関連付けられているセキュリティグループを調べて、ポート8080でインバウンドトラフィックが許可されていることを確認します。ネットワークACLとセキュリティグループの両方がトラフィックを許可する必要があります。

セキュリティグループの詳細については、こちらをご覧ください: http://docs.aws.Amazon.com/AWSEC2/latest/UserGuide/using-network-security.html

0
Michael Brown