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

问题

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

下面的图是试图描绘相关方。 我的工作站想要访问host1.private-network1.de不可见的host1.private-network1.dehost2.private-network1.de 。 该机构要求我input他们的VPN访问这台机器。 这同样适用于第二个专用networking中的第三个主机。 我需要通过端口22访问机器,但这只能在VPN内部进行。

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

我的预期解决scheme

(其他解决scheme也非常好)

我打算使用我的控制下的代理服务器(例如RPI)通过openvpn连接到不同的networking。 就地而言,代理服务器允许使用SSH进行端口转发。 在我的工作站上,我现在可以设置端口转发,如:

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

问题是如何在Linux中configuration多个OpenVPNnetworking,以便我可以使用简单的端口转发(如图所示)来访问不同专用networking中的不同主机。 VPN 只能用于此端口转发。 代理主机上的其余stream量(如更新)不应通过任何这些VPN连接进行路由。 甚至所有的剩余stream量仍然可以通过第三个VPN路由,但这可能是另外一个问题。

OT:圣诞快乐:)

我假设两个专用networking都提供一个可公开访问的OpenVPN服务器,并推送适当的路由。

只需从代理服务器同时连接到所有OpenVPN服务器。 运行ip route show以确保默认stream量不通过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>replace为<WORKSTATION_IP>的IP地址(如代理服务器所示)和host1.private-network1.de ,代理服务器可以访问专用主机的IP地址。

现在,如果你想ssh进入host1.private-network1.de ,那么:

 ssh <proxy_server_ip> -p 2223 

就地而言,代理服务器允许使用SSH进行端口转发。

不要使用SSH隧道。 这是不可靠和缓慢的。 它主要用于创build临时隧道。