设置 VPN 服务器

设置 VPN 服务器

我租用了一台服务器,但不允许我访问某个 URL。我可以使用家用电脑作为 SSH 隧道桥接器从服务器访问该 URL 吗?在服务器中,我只能访问命令行。

我可以访问一些 URL,但这些 URL 不在白名单中。这是我得到的结果。

wget https://jenkins-ci.org/debian/jenkins-ci.org.key
--2015-03-30 13:21:20--  https://jenkins-ci.org/debian/jenkins-ci.org.key
Resolving jenkins-ci.org... 199.193.196.24
Connecting to jenkins-ci.org|199.193.196.24|:443... failed: Connection timed out.
Retrying.

我想使用 SSH 隧道或类似的东西来下载密钥文件和服务器上的软件包。

答案1

根据您后来的一条评论,重新表述您的问题,您想要

使用没有开放端口的个人计算机作为隧道从无法访问该 URL 的服务器访问 [网站] - Helio

乍一看,你的要求似乎是不可能的。仔细检查后,你需要的是一些非常先进的网络巫术。具体来说:

  • 在您的个人计算机上运行的 VPN 服务器(我们称之为 herpyderp)
  • 在远程服务器上运行的 SSH 服务器(称之为.... megatron。为什么不呢?)
  • megatron 上的 VPN 客户端。

设置 VPN 服务器

设置 VPN 服务器的过程……相当复杂,远远超出了本回答的范围。我会在最后为你提供一些资源链接。

无论如何,将其设置为监听127.0.0.1,并禁用推送默认路由。(您可能还需要将其设置为使用 tcp;我不确定 udp 在这种奇怪的情况下会如何反应。)

通过 SSH 转发端口

为了简单起见,我假设你在 herpyderp 上有一个 OpenVPN 服务器,并且正确设置了它并监听了127.0.0.1:1194。连接到 megatron 并将适当的端口转发回 herpyderp (在 上localhost):

ssh -R 8088:localhost:1194 awesomeuser@megatron

连接 VPN

再次,为了简单起见,我假设您在 上有一个 OpenVPN 客户端的配置文件megatron。确保它配置为不是设置默认路由,并连接到地址为的服务器127.0.0.1:8088

请注意,如果megatron已经在 8088 上监听某些内容,则需要使用其他端口号。

添加路线

最后,您需要使用命令通过 VPN 将请求路由到被阻止的 IP ip route add。使用ifconfig获取 VPN 适配器的 IP 地址及其目标地址。使用pingnslookup获取相关站点的 IP 地址。然后,根据此信息添加路由:

ip route add <SITE_IP_ADDR> via <VPN_DEST_ADDR> dev <VPN_ADAPTER>

如果一切顺利正好,您应该能够megatron通过herpyderp的互联网连接访问被阻止的 IP。

但...

话虽如此,我敢肯定,任何看到这个问题的网络管理员现在要么哭泣,要么震惊。这种设置没有任何...好处...。我觉得我甚至因为提出这个建议而犯了罪。

另外,我并不期望有任何显著的吞吐量。而且只是……天文数字般的延迟。

最后免责声明:我不知道这是否会实际上可以工作。应该可以,但由于此设置涉及大量工作,我还没有实际测试过。大约有一百万个可能出错的地方。祝你好运,一路顺风。

资源

编辑:提醒一下

这绝对有可能使您的服务器完全无法通过网络访问。ip尤其是命令;错误的路由可能会阻止所有网络活动。

答案2

从你的家用机器运行以下命令:

curl https://jenkins-ci.org/debian/jenkins-ci.org.key|ssh <username>@<ssh server> 'cat > jenkins-ci.org.key'

<username>@<ssh server>用适当的 ssh 信息替换。

Example: curl https://jenkins-ci.org/debian/jenkins-ci.org.key|ssh [email protected] 'cat > jenkins-ci.org.key'

这会将文件放置在用户主目录中。您可以更改此设置,也可以在复制后直接移动它。

假设您的家用机器使用 Linux。如果不是,您可以使用便宜/免费的云 Linux 机器来执行相同操作(例如:c9.io)。

答案3

您可以尝试使用 SSH 隧道:

ssh -f user@yourserver -L 2000:jenkins-ci.org:443 -N

然后你就可以查询localhost:2000你想要的内容:

wget https://localhost:2000/debian/jenkins-ci.org.key

如果遇到域问题,只需添加:

127.0.0.1 jenkins-ci.org

/etc/hosts文件并运行:

wget https://jenkins-ci.org:2000/debian/jenkins-ci.org.key

这有点“黑客”,但我认为这就是你想要的。

相关内容