跨 OpenVPN 隧道的问题

跨 OpenVPN 隧道的问题

我有以下网络拓扑。我的物理位置是 VPN 客户端 1。首先,我成功建立了 VPN 隧道 1,VPN 客户端 1 连接到 VPN 服务器 2,并能够与连接到与 VPN 服务器 2 相同的 LAN 的 VPN 客户端 2 通信。

但是,当我尝试从 VPN 客户端 2 到 VPN 服务器 1 建立 VPN 隧道 2(通过 VPN 隧道 1 通过 SSH 连接到 VPN 客户端 2)时,我失去了与 VPN 客户端 2 的连接,甚至无法 ping 通它(VPN 隧道 1 仍然处于打开状态)。您知道这里可能出了什么问题吗?

所有 VPN 隧道均使用 OpenVPN 服务器/客户端实现。

多谢!

拓扑图

答案1

这是我们得到的结果(您的图片很快将不可用)

           v-------<<--VPN2---------------v
[CLI1]---[SRV1]---{Internet}---[SRV2]---[CLI2]
   ^------------VPN1->>-----------^

建立第二个 VPN 时,您要做的就是为 CLI1 到 CLI2 的同一链路设置第二条路由。因此,当 CLI2 尝试使用 VPN2 到达 CLI1 时,CLI1 将使用 VPN1 返回到 CLI2。因此,我很确定您在途中遇到了一些不允许 TCP 建立的 NAT 或 MASQUERADE。

一旦您的第一个 VPN 建立,您就应该使用这个 VPN 作为返回路径,这样 CLI2 将使用 CLI1 已经知道的路由到达 CLI1,并且它会起作用。基本上您可能不会建立 VPN2,而是在 SVR2 的 openvpn 将路由返回到您的 CLI1

另一种(更好、更简单)的方法是在 SRV1 和 SRV2 之间建立 VPN,并指示对方的路由,这样该集合将被视为两个 LAN 之间的简单路由,两侧的每个客户端都将使用该路由连接到 VPN 另一端的任何其他客户端。

[CLI1]---[SRV1]---{Internet}---[SRV2]---[CLI2]
            ^-------VPN1->>-------^

请记住,openVPN 有两个功能:1/ 一个在本地和远程接口之间加密的接口管理器;2/ 一个通常充当路由器的机器内部路由器。因此,您必须为 SRV1 和 SRV2 提供路由为您的 openVPN 进程提供路由 => 查看openVPN 中的选项irouteclient-config-dir

[CLI1]---[SRV1]---{Internet}---[SRV2]---[CLI2]
            ^                     ^
        RouteToLAN2        RouteBackToLAN1
            ^-------VPN1->>-------^

相关内容