【问题标题】:Check if port forwarding worked for node server on AWS machine检查端口转发是否适用于 AWS 机器上的节点服务器
【发布时间】:2014-09-03 08:41:30
【问题描述】:

我已经部署了一个节点应用程序,它在来自 AWS 的免费使用层 ubuntu 机器上侦听端口 5000。

我遵循了以下建议: How to start node.js on port 80 on a linux server? 来自:Best practices when running Node.js with port 80 (Ubuntu / Linode)

这两个问题的答案都建议使用端口转发,我也这样做了。但是我的服务器仍然没有响应端口 80 上的请求。 有什么方法可以检查端口转发是否成功?

已通过 AWS 控制台设置了侦听 HTTP 请求的权限设置。 到目前为止,机器上没有任何东西在监听端口 80。 netstat -l | grep :80 空了。

如果我以http://<elastic-ip>:5000 访问服务器,则服务器运行良好

【问题讨论】:

  • 您是否设置了对您的 aws 实例的权限以接受 http 响应。这些默认情况下被禁用。

标签: linux node.js amazon-web-services


【解决方案1】:

您不会看到端口 80 正在侦听,因为没有使用该套接字的守护程序;内核正在执行数据包重定向。

要检查有多少数据包通过了您设置的端口转发规则,请检查带有sudo iptables -t nat -L PREROUTING -n -vnat 表上的PREROUTING 链。它将显示如下输出:

Chain PREROUTING (policy ACCEPT 15 packets, 1226 bytes)
 pkts bytes target     prot opt in     out     source               destination
    3   180 REDIRECT   tcp  --  *      *       0.0.0.0/0            0.0.0.0/0            tcp dpt:80 redir ports 3000

如果您从 localhost 进行测试,您还必须重定向到 OUTPUT,因为环回接口不使用 PREROUTING。这样做

iptables -t nat -A OUTPUT -p tcp --dport 80 -j REDIRECT --to-port 3000

当然,还要检查端口 80 是否已打开以允许外部流量。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-03-12
    • 2011-12-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-22
    • 2020-11-04
    相关资源
    最近更新 更多