我住在 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 的软件都可以使用该代理,但您的浏览器也可以这样做,所以我以此为例。
这实际上取决于您的实际用例,取决于什么才是真正的最佳选择。