我使用 PIVPN 在 Raspberry Pi 上设置了一个 OpenVPN 服务器。此 OpenVPN 服务器位于网络 A。使用动态 DNS 服务,我能够成功将位于不同位置(网络 B)的另一个 Raspberry Pi 连接到网络 A 上的 OpenVPN 服务器。
由于 OpenVPN 服务器为每个连接的客户端保存了一个静态虚拟 IP(10.8.0.0/24),我能够使用网络 A 中路由器上的静态 IPv4 路由表将流量路由到客户端。这样,从网络 A 到 10.8.0.0/24 格式的 IP 地址的任何网络请求将首先发送到默认网关(网络 A 中的本地路由器),然后路由表将请求发送回 openVPN 服务器,该服务器将使用 IP 路由和为每个客户端保存的静态 IP 地址将请求一直发送到位于网络 B 中的客户端。
非常好。这样我就可以轻松地从网络 A 内部访问网络 B 内部的 rasberry pi vpn 客户端上运行的 Web 服务器和应用程序。
现在,我希望能够从网络 A 访问位于网络 B 内的其他网络设备,而无需让每个设备自己作为客户端加入 VPN(这些设备甚至无法做到这一点)。这些设备各自运行自己的 Web 服务器。我希望从网络 A 内通过 HTTP(s) 访问这些 Web 服务器。此外,我希望能够通过 ssh 连接到网络 B 上的其他设备。
我是一个有能力的程序员,但我缺乏网络方面的专业知识。我认为端口转发可能是一个潜在的解决方案。如果加入 openVPN 网络的客户端设备本身就是路由器,那么配置它会相当容易。但由于 VPN 客户端是 Raspberry Pi,我真的不知道该怎么做。另一个潜在的解决方案可能是在 Raspberry Pi 客户端上设置(反向?)代理。是否有任何软件可以在我的 Raspberry Pi 客户端(网络 B)上配置,使我能够将流量从网络 A 一直路由到网络 B 内的其他设备?或者我可以尝试以某种方式将我的 Raspberry Pi 转换为网关?
请注意,我不希望网络 B 中的设备(除了 Raspberry Pi 客户端)直接将数据包发送到网络 A。我只希望反过来。站点到站点 VPN 并不是我真正的目标。我已经使用westermo-mrd-4054G 路由器作为 vpn 客户端,使用端口转发(仅来自 VPN 的流量)没有任何问题。这次我想使用 raspberry pi 作为客户端。