通过 ssh 隧道实现 OpenVPN

通过 ssh 隧道实现 OpenVPN

我正在尝试使用 OpenVPN 连接到我的家庭网络。我的路由器位于 ISP 路由器后面,因此我遇到了双重 NAT 问题(路由器 WAN 端口上的 IP 地址是10.x.x.x)。ISP 无法直接向我提供公共 IP 地址,因为他们没有这样的选项,因此无法进行传入连接。

我的网络配置

我想要通过互联网访问我家庭网络上的计算机。

我想做的是从运行 OpenVPN 服务器的家庭服务器到具有公共 IP 的 VPS 创建 ssh 隧道,如下所示

autossh -M 10984 -i /root/.ssh/pubkey -R 1194:localhost:1194 me@myvps

然后配置 OpenVPN 服务器/客户端以使用tcpudp连接到myvps:1194

我的问题是:

  1. 有一个更好的方法吗?
  2. 这种解决方案对安全/性能有何影响?

答案1

这种解决方案对安全/性能有何影响?

您有两层加密(SSH 和 OpenVPN),这可能会降低性能 - CPU 使用率更高,吞吐量更低,尤其是当您涉及的三台设备中有一台没有硬件加密加速时。(即便如此,SSH 软件也很少能提供最佳性能。)

您还拥有嵌套 TCP 流控制层(您的常规流量、OpenVPN 层内、SSH 层内)。这可能不会起到很好的作用。

最后,仅隧道开销就会降低吞吐量(SSH 和 OpenVPN 数据包头会占用可用的 1500 字节 MTU 基线)。当然,对于 VPN 来说,一层是不可避免的,但将其加倍可能会很明显。

direct: IPv4 <20> |                                                    | TCP <20> | application
vpn:    IPv4 <20> | UDP <8>                 | OpenVPN <41> | IPv4 <20> | TCP <20> | application
yours:  IPv4 <20> | TCP <20> | SSH <~20–40> | OpenVPN <41> | IPv4 <20> | TCP <20> | application

有一个更好的方法吗?

由于您已经拥有 VPS,因此请将 OpenVPN 服务器那里– 并让您的家庭系统连接“出去”到 VPS,而不是相反。(是的,OpenVPN 服务器将毫无问题地在您的“主”客户端和“漫游”客户端之间转发数据。)

这样,只要您在客户端中启用定期 ping 或以其他方式维持隧道上的频繁流量,您甚至可以使用 UDP 而不会出现任何与 NAT 相关的问题。

如果你使用模式VPN,服务器只需要一个用于您的 LAN 子网的内核路由tun0,然后是一个 OpenVPN伊洛特通过家庭 VPN 客户端的地址访问同一子网。(使用轻敲-mode VPN 它只是一个结合两者的单内核路由。)

相关内容