我有一台始终处于打开状态并连接到 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.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;
由于您使用的是商业的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,我怀疑他们会允许您联系另一个客户:这有点像让狐狸进入鸡圈,不是吗?
- 解释更复杂的解决方案这里对于第一个 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 团队。