使用 iptables 转发流量

使用 iptables 转发流量

我有一台有 3 个 ip 的服务器,我们称它们为 A、B 和 C。

我需要通过 ip A 端口 5000 连接到该服务器,并通过 ip B 代理我的流量。

并且,当使用 IP A 端口 5001 时,我的流量将通过 C 进行代理。

是否可以只使用 iptables 或者我需要像鱿鱼这样的东西?

我尝试过一些 nat 规则但没有成功。

谢谢!

答案1

我认为这是一个好问题。您可以通过多种方式实现这一目标。但我现在只提供一种解决方案。您可以使用 SSH 隧道,然后让您的应用程序使用 SOCKS 代理。

假设您的流量是 HTTP。从您的客户端计算机(本例中为笔记本电脑)创建两个 SSH 隧道,其本地侦听端口为50015002分别。一条隧道即将贯通服务器-B另一个将突破服务器-C到互联网。流程是这样的:

(笔记本电脑)--->服务器-A---->服务器-B----->互联网

(笔记本电脑)--->服务器-A---->服务器-C----->互联网

从互联网的角度来看,您的流量将来自服务器-B如果应用程序正在使用端口5001作为 SOCKS 代理,以及服务器-C如果应用程序正在使用端口5002作为 SOCKS 代理,同时服务器-A保持透明。

在您的笔记本电脑上,执行以下两个命令来创建两个 SSH 隧道,分别绑定到localhost:5001localhost:5002

ssh -f -N -D 5001 -oProxyCommand="ssh -W %h:%p user@server-A" user@server-B
ssh -f -N -D 5002 -oProxyCommand="ssh -W %h:%p user@server-A" user@server-C

在您的笔记本电脑上,将您的应用程序(例如 Firefox 浏览器)指向127.0.0.1:5001127.0.0.1:5002相应地使用 SOCKS 代理

参考:OpenSSH 维基

相关内容