Search code examples
linuxnode.jssshcentosiptables

Centos 6.4 Nodejs external not responding


I am new to ssh and Centos 6.4 and I want to run nodejs on port 80. But couldn't make it to work external.

When I type netstat -anp | grep 8080 I can see that my node listening.

tcp        0      0 0.0.0.0:8080                0.0.0.0:*                   LISTEN      7976/node

But it is not going external.

I tried to add settings to iptables and result is same again. It is not working.

[root@culturalinfluences ~]# iptables --list
Chain INPUT (policy ACCEPT)
target     prot opt source               destination
ACCEPT     all  --  anywhere             anywhere            state RELATED,ESTABLISHED
ACCEPT     icmp --  anywhere             anywhere
ACCEPT     all  --  anywhere             anywhere
ACCEPT     tcp  --  anywhere             anywhere            state NEW tcp dpt:ssh
REJECT     all  --  anywhere             anywhere            reject-with icmp-host-prohibited
ACCEPT     tcp  --  anywhere             anywhere            tcp dpt:http
ACCEPT     tcp  --  anywhere             anywhere            state NEW tcp dpt:http /* node.js port */
ACCEPT     tcp  --  anywhere             anywhere            tcp dpt:http
ACCEPT     tcp  --  anywhere             anywhere            state NEW tcp dpt:webcache /* node.js port */

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination
REJECT     all  --  anywhere             anywhere            reject-with icmp-host-prohibited

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination

Here is my nodejs

var port = 8080;
app.listen(port, "0.0.0.0" ,function() {
    console.log("Listening on " + port);
});

Thank you four understand cause I am really new into linux and its iptables system. I am sure people like me will search the same issue and I hope they will find answer from this question.

Thank you for your helps.


Solution

  • You have a

    REJECT     all  --  anywhere             anywhere            reject-with icmp-host-prohibited
    

    right before the "http" ports you're allowing, so those rules will never be reached. Move the REJECT all rule to the bottom of the list instead.

    Additionally you may want to use -n on the iptables command line to make sure the port numbers are right and aren't 80 instead of 8080 for example.