通过代理主机上的 SSH 隧道提供多个 VPN 实例

通过代理主机上的 SSH 隧道提供多个 VPN 实例

问题

我需要同时访问多个不同的 VPN 网络,主要用于 HTTP,有时也用于 SSH。此外,我不允许在工作站上使用 openvpn(没有法律限制,而是基础设施问题)。端口转发没问题。

下图试图描绘出所涉及的各方。我的工作站想要访问host1.private-network1.de哪些host2.private-network1.de在互联网上不可见。该机构要求我进入他们的 VPN 才能访问这台机器。这同样适用于第二个私有网络中的第三台主机。我需要在端口 22 上访问机器,但这只能在 VPN 内部实现。

可视化:工作站通过端口 22 和 80 访问私有网络 1 中的两台主机,同时还通过端口 22 访问私有网络 2 中的第三台主机

我打算采用的解决方案

(其他解决方案也很好)

我计划使用我控制的代理服务器(例如 RPI)通过 openvpn 连接到不同的网络。代理服务器允许使用 SSH 进行端口转发。在我的工作站上,我现在可以设置端口转发,如下所示:

我想到的解决方案:代理主机同时连接多个 VPN,为目标主机提供端口转发

问题是如何在 Linux 中配置多个 OpenVPN 网络,以便我可以使用简单的端口转发(如图所示)访问不同私有网络中的不同主机。VPN 应该仅有的可用于此端口转发。代理主机上的其余流量(如更新)不应通过任何这些 VPN 连接路由。甚至希望所有剩余流量仍然可以通过第三个 VPN 进行路由,但这可能是另一个问题。

OT:圣诞快乐:)

答案1

我假设两个私有网络都提供了一个可公开访问的 OpenVPN 服务器,并推送适当的路由。

只需从代理服务器同时连接到所有 OpenVPN 服务器。运行ip route show以确保默认流量未通过 VPN。

现在iptables在代理服务器上使用将端口转发到私有主机:

iptables -t nat -A PREROUTING -p tcp --dport 2223 -j DNAT --to host1.private-network1.de:22
iptables -t nat -A PREROUTING -p tcp --dport 8081 -j DNAT --to host2.private-network1.de:80
iptables -t nat -A PREROUTING -p tcp --dport 2224 -j DNAT --to host.private-network2.de:22
iptables -t nat -A POSTROUTING -s <WORKSTATION_IP> -j MASQUERADE

将其替换<WORKSTATION_IP>为工作站的 IP 地址(代理服务器所见)以及host1.private-network1.de代理服务器可访问私有主机的 IP 地址。

现在如果你想通过 ssh 进入host1.private-network1.de,请执行以下操作:

ssh <proxy_server_ip> -p 2223

代理服务器允许使用 SSH 进行端口转发。

不要使用 SSH 隧道。它不可靠且速度慢。它主要用于创建临时隧道。

相关内容