Назад | Перейти на главную страницу

Как открыть порт ниже 1024 в Cent OS для socket.io?

Я пытаюсь открыть порт 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), поэтому нет риска блокирования соединения со стороны клиента.