将端口 80 转发至 8000 不起作用

将端口 80 转发至 8000 不起作用

为了避免以 root 身份运行进程,我想在端口 8000 上运行服务器,同时将进入端口 80 的所有 TCP 数据包路由到端口 8000,反之亦然。

我使用 Arch Linux 并制作了一个iptables 重置根据这个段落

之后我运行了以下命令:iptables -t nat -A PREROUTING -i enp0s25 -p tcp --dport 80 -j REDIRECT --to-port 8000这是到处都推荐的。我enp0s25从我的ip -4 addr输出中得到了。

现在我有一个正在运行的 nodejs 服务器,0.0.0.0:8000并向我的公共 IP 发出请求。如果我使用以下命令,我会得到有效的响应:curl xxx.xxx.xxx.xx:8000。但我想使用 实现相同的有效响应,curl xxx.xxx.xxx.xx但在这里我得到了错误curl: (7) Failed to connect

谢谢你!

答案1

iptables -t nat -A PREROUTING -i enp0s25 -p tcp --dport 80 -j REDIRECT --to-port 8000

将传入的流量重新路由到 enp0s25 (面向外部的接口),不是到本地主机。如果您在同一个框 (localhost) 上运行 curl,它将只能看到 8000。

如果你正在远程访问它,我会检查主机防火墙是否允许传入端口 80

相关内容