问题
我需要同时访问多个不同的VPNnetworking,主要用于HTTP和SSH。 此外,我不允许在我的工作站上使用openvpn(没有法律限制,而是基础设施问题)。 端口转发是好的。
下面的图是试图描绘相关方。 我的工作站想要访问host1.private-network1.de不可见的host1.private-network1.de和host2.private-network1.de 。 该机构要求我input他们的VPN访问这台机器。 这同样适用于第二个专用networking中的第三个主机。 我需要通过端口22访问机器,但这只能在VPN内部进行。
我的预期解决scheme
(其他解决scheme也非常好)
我打算使用我的控制下的代理服务器(例如RPI)通过openvpn连接到不同的networking。 就地而言,代理服务器允许使用SSH进行端口转发。 在我的工作站上,我现在可以设置端口转发,如:
问题是如何在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临时隧道。