これは非常に初心者なので、ご容赦ください。私はubuntu 10.04のポート8080でnode.jsサーバーを実行しようとしています。
サーバーでの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
そして、nmap -p 8080の結果は次のとおりです(すべてがオープンであるか、オープンである必要があるため、IPアドレスを編集しました)。
nmap 173.203.xxx.xxx -p 8080 -A
Starting Nmap 5.00 ( http://nmap.org ) at 2011-05-19 22:52 PDT
Interesting ports on xxx (173.203.xxx.xxx):
PORT STATE SERVICE VERSION
8080/tcp closed http-proxy
なぜ8080は閉じていると見なされるのですか?これを追加しても役に立たなかった:
iptables -A OUTPUT -p tcp --dport 8080 -j ACCEPT
iptables -A INPUT -p tcp --dport 8080 -j ACCEPT
私は本当に混乱しています。
役立つ場合に備えて、これを追加しますが、わかりません
netstat -pan | grep 80
tcp 0 0 127.0.0.1:8080 0.0.0.0:* LISTEN 16785/node
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 16471/Apache2
Apacheのポート80から実行されている通常のWebサイトにアクセスできますが、外部からnode.jsサーバーにアクセスできません。サーバー自体からのアクセスは正常に機能します。
だから私の質問は:これをデバッグするにはどうすればいいですか?一部のポートをブロックしているiptables以外に何かありますか?それが何であるかを知るにはどうすればよいですか?
どんな助けも大歓迎です!
最後のnetstat出力を追加してくれてありがとう、本当に役に立ちました。 node.jsはlocalhost IP、つまり127.0.0.1でリッスンしているため、外部からはアクセスできません。マシンのすべてのIPで接続を受け入れることができるように、0.0.0.0でリッスンするようにnode.jsを構成する必要があります。
var http = require('http');
http.createServer(function (req, res) {
res.writeHead(200, {'Content-Type': 'text/plain'});
res.end('Hello World\n');
}).listen(8080, "0.0.0.0");
console.log('Server running at http://0.0.0.0:8080/');
Netstatの出力によると、ポート8080はlocalhostである127.0.0.1に対してのみ開いているため、サーバー(localhost)からのアクセスは機能しますが、他の場所からのアクセスは機能しません。
正しい出力は次のようになります
0.0.0.0:8080
同じ問題がありました。
私は次のことをしました
ubuntuサーバーで同じポートを有効にするには、次のリンクを使用します https://www.digitalocean.com/community/tutorials/how-to-set-up-a-firewall-with-ufw-on-ubuntu-14- 04
そして、この最後の1つが足りなかった後、ネットワーク->ファイアウォールルール-> default-allow-internal->すべてのIPアドレス0.0.0.0/0
できた