我想要一个我拥有的 Linux 节点作为某些包(准确地说是 REST API 包)的“路由器”。
整个情况是这样的,我做了一个web-ui程序,这个程序将是一个客户端(称为node-A),这个客户端将向我拥有的服务器(称为node-B)发送REST API请求,但是……我不想让任何人知道关于节点B的任何事情,甚至包括域名,我什至不想让他们知道它的存在……原因是它对我来说至关重要,而且我还没有还没有达到我对其安全性感到满意的阶段。
因此,我想到使用我拥有的另一台服务器作为中间节点(称为node-int),将连接从node-A转发到node-B。
我希望客户端节点 A 向节点 int 发出 REST API 请求,节点 int 会将请求转发到节点 B ,并接收来自节点 B 的响应并将其转发回节点 A。
唯一的问题是:我不知道如何使用 iptables 执行此操作,我应该使用过滤表:FORWARD 链、mangle 表来更改数据包本身,还是 nat 表?
我不知道什么最适合这项工作,这就是为什么我在这里询问,希望更有经验的人指导我找到最好的方法。
谢谢。
答案1
您不需要使用 IP 表来完成此操作,而是使用 http 服务器配置来完成此操作。
- 设置两个 http 服务器。一个对公众可见(您的node-int),另一个在您的LAN内,无法从外界访问(您的node-B)。
- 在公共服务器上,您启用代理并定义在此处处理哪些 URL,哪些 URL 会发送到节点 B,哪些 URL 会发送到其他服务器。
当然,确切的配置语句取决于 http 服务器,因此在 Apache 上是如何完成的: https://httpd.apache.org/docs/2.4/howto/reverse_proxy.html
其他 http 服务器也会有类似的东西。