Я пытаюсь открыть порт 843
в моей Cent OS 5.2 я добавил следующую строку в etc\sysconfig\iptables
:
-A INPUT -p tcp --dport 843 -j ACCEPT
а затем обновил мой iptables
служба. Мне нужно прослушать этот порт в моем приложении node.js, которое запускается пользователем root через sudo node index.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
});
задача решена. вся конфигурация сервера была правильной, очевидно, брандмауэр на стороне клиента блокировал этот порт. поэтому я перехожу на sockjs который использует тот же порт, что и http-сервер (порт 80), поэтому нет риска блокирования соединения со стороны клиента.