是否可以配置反向 VPN 隧道?

是否可以配置反向 VPN 隧道?

基本上,我的目标是拥有一个 100% 便携且独立的服务器。我使用由太阳能电池板和电池供电的 Raspberry Pi 构建它,并使用 4g 热点将其连接到互联网。它只需要具有 2 个功能,即 SSH 服务和 VPN 服务。

这是我的问题。

我开始这个项目时认为我最大的问题将是 IP 漫游。我为自己设置了一个动态 DNS 域,并编写了一个 cron,每 60 秒更新一次。然后我将我的热点端口转发到 Pi(热点基本上是一个路由器,而 pi 有一个 wifi 加密狗)。

但是,我无法使用热点路由器的公共 IP 连接到它。这时我才意识到,所有 4G LTE 设备都会在更大的 NAT 子网上接收 IP。这显然是 4G 的新做法。3G 设备过去会接收可访问的公共 IP。

基本上,我需要一种方法来访问没有唯一 IP 的 VPN 服务器。

VPN 服务器是否可以与客户端建立连接,有点像反向 SSH 隧道?

比如,它可以连续轮询一组 IP 地址(或动态 DNS 域),直到其中一个接受连接,或者轮询另一台包含当前“想要”连接的 IP 列表的服务器(并且这些 IP 基本上会轮询该服务器以请求 VPN 连接)。

我知道这很愚蠢,而且破坏了客户端服务器模型,但我有点绝望。这可能吗?

答案1

如您所见,重新连接系统并不那么简单。问题的本质是,即使您可以进行 DNS 注册(这使得服务器能够相互找到),但您的机器之间的实际 IP 连接仍然是不可能的。

您的问题有多种解决方案。

最简单的方法是,如果您有某种类型的中央服务器(具有公共的固定 IP),并且 VPN 服务器在该服务器上运行。在您的 rasperry pi 上,就像在您的其他客户端上一样,只运行 VPN 客户端。此服务器充当您的 rasperry 和其他设备之间的中间网关。

Raspberry -> Central GW machine <- Your any other system

它既解决了DNS注册的问题,也解决了IP联系的问题。

从网络的角度来看,没有人连接到你的 Raspberry。只有你的 Raspberry 连接出去到你的中央 GW。

OpenVPN 是一个非常棒的解决方案。


还有更棘手的解决方案。例如,你可以对你的 rasperry 说连接 出去到您的客户端并通过它进行 vpn。但是如果您的客户端也位于 NAT 后面,则此方法无效,这种情况目前非常常见,尤其是在移动网络中。

或者你可以使用托尔以及找到你身后的中间服务器。是的,托尔并不是真正的破解工具,它也可以用于常规任务。但它不太可靠,而且速度很慢。

答案2

我在连接到开放热点(我的​​情况是最佳 WiFi)时也遇到了一些连接 Raspberry Pi 的问题(SSH 进入我的 Raspberry Pi 2@Optimum WiFi - Raspberry Pi Stack Exchange)。

因此,我想分享Raspberry Pi 2使用此 ssh 反向隧道进入的方法:

pi@raspberrypi ~ $ crontab -l | tail -1
@hourly     ssh -S alexus -O check XXX > /dev/null 2>&1 ; if [ $? != 0 ] ; then ssh -M -S alexus -fN -R2222:localhost:22 -p 443 XXX ; fi
pi@raspberrypi ~ $ 

这个解决方案需要另外一台主机启动并运行,通过它你可以 ssh 进入你的树莓派。即使这个解决方案对你不起作用,但它可能对其他人有用)

在不久的将来,我还计划探索 openvpn 选项。

答案3

这里有几种技巧,我在完成类似的任务时经常使用它们。

  1. 您可以使用跳转服务器转发 Raspberry PI 和您(您的 ssh 客户端)之间的流量,但是,您应该设法将您的 Raspberry 连接到跳转服务器(使用反向 ssh)。这可以通过 cron 作业或使用 PubSub 消息传递(Amazon IoT、PubNub 等)来实现,以将消息发送到 Raspberry 以连接到中间服务器。但是,您应该妥善管理连接,以免留下攻击漏洞。

  2. 您可以使用以下免费隧道提供商之一https://tunnelin.com或者https://www.dataplicity.com/或另一个。

根据我的经验,Tunnel In 提供真正的隧道,并且可以在其隧道中包装所有类型的 TCP 流量(SSH、VNC、HTTP 等)。它甚至提供基于云的防火墙来控制谁以及何时可以使用隧道。而 Dataplicity 使用套接字传输数据,这限制了它支持基于密钥的 ssh 身份验证或支持其他协议。

答案4

Nikita,你其实有几个选择。我曾以这种方式在专用电源上设置 RP,但电路板上只有一张 mifi 卡。

最简单的解决方案是联系您的 ISP 并请求一个公共或静态 NAT IP 地址。大多数无线提供商都会这样做,但他们可能会向您收费。Verizon 的每个帐户收费 500 美元,但您可以根据需要在帐户上的设备上设置任意数量的公共 IP。我不知道其他提供商是否会收费或收费多少。

另一种选择是使用反向 SSH 设置穷人版 VPN。这允许 Pi 创建与服务器的连接,然后您可以将 SSH 连接传回设备。请参阅本文了解说明http://www.thegeekstuff.com/2013/11/reverse-ssh-tunnel/

还有许多远程管理客户端也可以使用,但请记住,如果没有公共 IP(而不是私有 NAT 的 IP),您将必须让 Pi 建立连接。幸运的是,这是大多数客户端在家庭网络上的操作方式,因此有很多解决方案。

相关内容