如何远程访问连接到 VPN 的树莓派?

如何远程访问连接到 VPN 的树莓派?

我有一台始终处于打开状态并连接到 VPN 的 Pi,这意味着我无法远程访问它。我正在尝试找到一种解决方案来远程访问它,所以我正在向这里的专家寻求建议。

到目前为止,我最喜欢的/最简单的解决方案是使用我的第二台 Pi,它很快就会到货,用于远程监控。我正在考虑将第一台 Pi 上的共享驱动器安装到那台 Pi 上,然后通过 ssh 进入它,因为它不会连接到 VPN。

不过这还是有点复杂。还有其他选择吗?欢迎提出任何意见/想法。

谢谢

答案1

你和第一个 RPI 是否在同一个 LAN 中?如果是,你根本不应该失去与它的联系。VPN 的工作方式是添加路由,而不是抑制现有路由。因此,如果你有一条类似

    192.168.1.0/24 dev eth0  proto kernel  scope link  src 192.168.1.74  metric 1 

在启动 VPN 之前,VPN 修改路由表后必须继续存在相同的路由。这样您的 RPI 就可以从 LAN 访问。您可能必须通过 IP 地址而不是名称来联系它(当然,除非您使用本地 DNS);也可能您无法从 RPI 通过名称访问 LAN 中的其他 PC,因为 DNS 已通过 VPN 重新路由(不一定如此,但最常见)。

如果零售物价指数不是在您的局域网中,那么情况就不同了;请说明是否是这种情况。

编辑:

您有三种可能性,两种简单,一种稍微复杂一些。

  1. 如果您总是从 1.2.3.4 连接,则只需向第一个 RPI 的路由表添加一条合适的路由:

     ip route add 1.2.3.4./32  via 192.168.0.1 dev eth0
    

这将通过常规 LAN 网关(我假设它是 192.168.0.1,如果不是则相应修改)路由 1.2.3.4 的数据包,完全绕过 VPN;

  1. 由于您使用的是商业的VPN 这个技巧不太可能奏效。如果你在自己的 VPS 上有一个 VPN 服务器(顺便说一句,我一直都是这样做的,便宜的 VPS 每月 3 美元/欧元,有些 VPS 有不计费的连接),那么你只需通过 VPN 连接到 VPN 服务器,然后通过 连接你的 RPI,ssh使用隧道端的 IP 地址作为其 IP 地址!因此,如果你的 VPN 隧道的服务器地址为 10.0.0.1,RPI 客户端的地址为 10.0.0.6,那么

       ssh [email protected]
    

会将您连接到 RPI。由于您使用的是商业 VPN 提供商,即使您可以使用 PC 通过 VPN 连接到他们的服务器,不是RPI,我怀疑他们会允许您联系另一个客户:这有点像让狐狸进入鸡圈,不是吗?

  1. 解释更复杂的解决方案这里对于第一个 RPI:基本思想是建立一个第二路由表,这只能在 Linux 上实现,甚至在 Unix 上都无法实现;第二个路由表不是使用 VPN,只需使用普通的 LAN 网关。要识别要通过第二个路由表路由的数据包,您必须使用 CONNTRACK 模块(而不是 MARK 模块)标记具有特定特征的所有数据包,例如那些进入 RPI 端口 22(ssh 的端口)的数据包:这会标记整个连接,而不仅仅是单个数据包,包括 ESTABLISHED、RELATED 数据包。现在您可以设置一个ip rule选择标记数据包的程序,告诉内核使用第二个路由表,IE没有VPN的那个。

答案2

我遇到了类似的问题,但问题不那么普遍。我当时正在使用NordVPN 的 Linux 安装在运行 Raspbian Buster 的无头 Raspberry Pi 上。它可以正常连接,并且任何已建立的 SSH 连接都将持续,但是 Pi 不会响应来自本地网络的 ping 或新的 SSH 连接。

运行nordvpn whitelist add subnet 192.168.0.0/1解决了该问题。(假设您的本地网络是192.168.x.x

与其设备应用程序不同,命令行 NordVPN 默认阻止本地网络。

如果你也遇到了这个问题你可以去这里,向下滚动到电子邮件链接并告知 NordVPN 团队。

答案3

如果你的意思是 VPN 使你的 Pi 无法访问本地网络(我假设是这样,因为否则 VPN 应该提供 SSH 访问)并且即使连接到同一个路由器你也无法访问它,那么你可以使用虚拟接口来做到这一点。

例如,如果您有一个eth0接口,您可以创建一个新的虚拟接口,如下所示:

ifconfig eth0:0 123.123.22.22

然后,应该应用通常的 Linux 方法进行接口配置。更多的 信息

相关内容