将外部流量转发至 127.0.0.1

将外部流量转发至 127.0.0.1

我有一个在 127.0.0.1:8000 上运行的 HTTP 服务器。如何使用 iptables 或其他工具将外部流量路由到该服务器?我希望能够从浏览器访问 my.ip.addr:8000。

iptables -A PREROUTING -i eth0 -p tcp --dport 8000 -j REDIRECT --to-ports 8000

没有帮助

编辑:

为了测试这是否有效,我使用了以下 node.js 脚本:

// Load the http module to create an http server.
var http = require('http');

// Configure our HTTP server to respond with Hello World to all requests.
var server = http.createServer(function (request, response) {
  response.writeHead(200, {"Content-Type": "text/plain"});
  response.end("Hello World\n");
});

// Listen on port 8000, IP defaults to 127.0.0.1
server.listen(8000, "127.0.0.1");

// Put a friendly message on the terminal
console.log("Server running at http://127.0.0.1:8000/");

答案1

您不需要 iptables 来实现这一点,最简单的方法是在“server.listen”行上更改 IP 地址。它可以是公共 IP 或“0.0.0.0”。后者会将 Web 服务器绑定到所有可用 IP。

您的另一个选择是使用在代理配置中设置的另一个 Web 服务器。Nginx 或 Apache httpd 非常适合此用途。

答案2

REDIRECT不将连接重定向到127.0.0.1,这样做将不起作用,因为127.0.0.1无法用于与客户端 IP 进行通信。

REDIRECT将流量重定向到数据包到达的接口的 IP 地址。您必须明确侦听该 IP 地址或绑定到任何地址 0.0.0.0

相关内容