我如何将数据转移到 Linux VPN,然后将其转发到目的地?

我如何将数据转移到 Linux VPN,然后将其转发到目的地?

我住在 A 地。我需要连接到 C 地。直接连接 A->C(300 毫秒,以前是 60 毫秒,但目前存在一些 ISP 路由问题)

我在 B 点托管了一个 Ubuntu 服务器。A->BI 需要 20 毫秒。B->CI 需要 50 毫秒。有没有办法在机器 B 上设置 VPN,以便我可以通过 B 将流量从 A 重新路由到 C?如果有,怎么做?我需要 A->B->C 连接。(如果我没有正确提出问题,请见谅,因为我不是以英语为母语的人)

答案1

当然,您需要研究 OpenVPN。您在机器 B 上安装 OpenVPN 服务器(我建议也在机器 B 上添加 DNSMasq,这样所有 DNS 请求也会发送到机器 B 使用的 DNS)。OpenVPN 可以使用选项将路由推送到客户端push-route。在您的情况下,这将是机器 C 的 IP 地址(或 IP 范围)。

最后,您在机器 A 上设置客户端,以便它连接到机器 B。然后它接收到 C 的路由,并且任何到 C 的连接都将通过 B。

我承认,如果我能给你一份完整的 OpenVPN 设置指南就更好了,但这是一项相当复杂的工作。不过有很多不错的教程。

或者,ssh 隧道对你有用吗?这比实际设置完整的 VPN 要容易得多。只需 ssh -L 8080:machine-c:80 youruser@machine-B在机器 A 上执行此操作即可:此操作的作用是打开本地主机机器 A 上的端口 8080,并通过机器 B 将其隧道传输到端口 80 上的机器 C。因此,如果您将浏览器(端口 80 是 http,因此是浏览器)指向http://localhost:80,您将获得机器 C 的(默认)内容。

这也适用于其他端口。

最后,您可以在机器 A 上运行命令ssh -D 8080 youruser@machine-B。这样,您就可以在本地主机上创建一个 SOCKS 代理,该代理将在机器 B 退出。将浏览器的 SOCKS 设置设置为localhost:8080,任何连接都将通过机器 B 路由。

理论上,任何支持 SOCKS 的软件都可以使用该代理,但您的浏览器也可以这样做,所以我以此为例。

这实际上取决于您的实际用例,取决于什么才是真正的最佳选择。

相关内容