仅当两台计算机连接到同一 VPN 服务器时,SSH over VPN 才有效。为什么?

仅当两台计算机连接到同一 VPN 服务器时,SSH over VPN 才有效。为什么?

如果这是一个重复的问题,我提前道歉。我有一台运行 Lubuntu 18 的 PC。它通过 VPN 连接到互联网。

  1. 当 PC 未连接到 VPN 时,我可以从任何地方进行 SSH;
  2. 当PC连接到VPN时,只有当客户端PC与服务器PC连接到同一个VPN服务器时,我才能使用SSH连接;
  3. 我可以随时通过本地网络使用 SSH 进行连接 - 无论是否使用 VPN - 这就是我管理无需显示器的 PC 的方式。

我正在尝试了解这种情况的原因。是不是因为 VPN 接管了连接,当两台计算机连接到同一个 VPN 服务器时,两台 PC 都在“同一个”网络中?我的提供商使用双 NAT。我确实有一个静态公共 IP。但是,我的路由器没有直接连接到互联网 - 它有 ISP 的 IP。不知何故,IPS 已将公共 IP 转发到我的路由器。此外,我能够使用公共 IP 登录到路由器上的远程管理,尽管我收到了此通知 - 我猜是因为路由器的 IP 不是公共 IP;出于安全目的,远程管理已关闭。我只是为了测试 IP 才打开它的 -

远程管理路由器警告 远程管理路由器警告

谢谢!

答案1

默认情况下,您的操作系统不执行基于源的路由(或有助于多宿主的替代功能)。因此,所有传出的数据包(无论它们与哪个连接相关联)都遵循相同的路由并通过相同的接口传出。

结果:当 PC 连接到提供新默认路由的 VPN,并且您尝试通过常规 LAN 建立 SSH 连接时,PC 会尝试通过 VPN 发送回复数据包 - 这些数据包很可能会被反欺骗保护丢弃。


可能的解决方法(均涉及手动配置):

  • Linux 支持 IPv6 的基于源的路由,使用与“发件人”地址 (RTA_SRC) 匹配的路由。例如,如果您要手动添加 VPN 的默认路由,则可以使用:

    ip -6 路由添加::/0来自 fd01:2345:6789::/48通过 fe80::1 dev tap0
  • Linux 使用多个路由表支持所有 IP 版本的基于策略的路由:

    ip -6 路由添加 ::/0 通过 fe80::1 dev tap0 表 1234
    ip -6 规则从 fd01:2345:6789::/48 查找 1234 添加首选项 500

相关内容