使用 nginx 或其他任何工具将所有请求从一台机器代理到另一台机器

使用 nginx 或其他任何工具将所有请求从一台机器代理到另一台机器

可以代理吗全部 请求到另一台服务器并保存相应的端口和协议?

我有一个家庭服务器(没有公共 IP)和 VDS(有公共 IP)。
我还使用 VPN(openVPN)在它们之间建立了连接。
所以现在,我的家庭服务器10.8.0.5在虚拟网络中有 IP 地址。

因此,我正在寻找机会将所有到达 VDS 的请求代理到家庭服务器(通过nginxany another way

例如:

  • 代理 ssh 连接:
    端口:22
    协议:TCP
    应该代理端口 22使用协议TCP
  • 代理 http 请求:
    端口:80
    协议:HTTP
    应该代理端口 80使用协议HTTP
  • 代理特定请求:
    端口:任何港口
    协议:任何协议
    应该代理同一端口使用相同协议

有可能吗?如果可以,我该如何实现它?我可以使用哪些工具?

谢谢你!

答案1

如果我正确理解了您的描述和评论,您将需要在所有端口上执行 DNAT(目标网络地址转换...也称为端口转发),以便入站流量(带有服务器本身的目标地址)通过端口转发到 10.8.0.5。这可以在 iptables nat 表中轻松完成。

iptables --table nat --append PREROUTING --jump DNAT --to-destination 10.8.0.5

如果您需要允许与服务器本身的某些连接,请在此规则之前放置允许它的其他规则,如您的另一篇文章中所述“将所有流量(端口 3336 和其他一些端口除外)从 eth0 路由到特定 IP“关于同一主题,请参阅这篇文章。

相关内容