Cent OS5.2でポート843
を開こうとしていますが、etc\sysconfig\iptables
に次の行を追加しました。
-A INPUT -p tcp --dport 843 -j ACCEPT
次に、iptables
サービスを更新しました。 rootユーザーがSudo node index.js
コマンドを使用して実行しているnode.jsアプリケーションでそのポートをリッスンする必要がありますが、そのポートを介して接続を確立しようとすると、forbidden port
エラーが発生します。
これは、Sudo iptables -L -v
を実行することで得られるものです。
Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
2811 238K ACCEPT tcp -- any any anywhere anywhere tcp dpt:http
112 6224 ACCEPT tcp -- any any anywhere anywhere tcp dpt:hbci
0 0 ACCEPT tcp -- any any anywhere anywhere tcp dpt:843
41 2124 ACCEPT tcp -- any any anywhere anywhere state NEW tcp multiport dports 5901:5903,6001:6003
13093 13M ACCEPT all -- any any anywhere anywhere state RELATED,ESTABLISHED
26 3584 ACCEPT icmp -- any any anywhere anywhere
0 0 ACCEPT all -- lo any anywhere anywhere
109 6404 ACCEPT tcp -- any any anywhere anywhere state NEW tcp dpt:ssh
888K 80M REJECT all -- any any anywhere anywhere
これはSudo netstat -ptl | grep node
の出力です:
tcp 0 0 *:843 *:* LISTEN 12927/node
tcp 0 0 *:http *:* LISTEN 12927/node
tcp 0 0 *:10843 *:* LISTEN 12927/node
そして私はこのコードで socket.io でそのポートをリッスンしようとします:
var io = require('socket.io').listen(
843,
{ log: false,
flashPolicyServer: true,
transports: ['websocket', 'flashsocket', 'htmlfile', 'xhr-multipart', 'xhr-polling', 'jsonp-polling']
}
);
io.sockets.on('connection', function(socket){
// my event listeners
});
問題が解決しました。すべてのサーバー構成が正しく、クライアント側のファイアウォールがそのポートをブロックしていたようです。そのため、httpサーバーと同じポート(ポート80)を使用する sockjs に切り替えています。したがって、クライアント側から接続がブロックされるリスクはありません。