如何访问我不管理的受限 NAT 网关后面的机器?

use*_*668 6 networking ssh-tunneling vpn

我有一台 Linux 机器,我希望能够通过 SSH、FTP、HTTP 等远程访问它。我使用 No-IP.com 注册了动态 DNS,但这还不够,因为我在大学校园网络中,在 NAT 后面,并且无权访问路由器以设置端口转发。我不知道校园路由器是否支持 UPnP 或 NAT-PMP,但我对此表示怀疑。

无论如何,我想知道是否有办法使用 VPN 来解决这个问题。我知道,例如,如果我在两台机器上都安装了 VPN 软件,那么 VPN 将允许我从我的笔记本电脑访问我的 linux 机器。但是我希望能够从任何计算机访问我的 linux box,而无需安装软件。或者至少能够以这种方式访问​​ HTTP 部分。虽然我知道许多 VPN 服务提供用于文件传输等的 Web 界面,但我更愿意使用常规 FTP 和 SSH 客户端软件访问我的 linux 机器。

无论如何,这是您可以用 VPN 做的事情吗?或者有没有办法以某种方式将 VPN 与动态 DNS 链接起来?我查看了 Hamachi VPN 的网站,但它用非技术术语描述了所有功能,所以我无法弄清楚这些问题,我更愿意在创建帐户之前了解。

Gil*_*il' 5

从表面上看,您的校园防火墙不允许从校园外部向您的计算机发起任何连接。因此,为了连接到您的计算机,您必须从内部启动连接。

\n\n

因此,您必须在宿舍计算机 D 和校园外的某些外部计算机 E 之间建立某种连接。然后,当您想从某个客户端 C 连接到宿舍计算机时,请改为连接到 E 并设置 E 以便它中继连接。

\n\n

对于 D\xe2\x86\x92E 连接,您可以使用 VPN。这需要 D 和 E 上的根级访问。VPN 在 D 和 E 之间提供 IP 连接,因此从 C 您将能够访问 D 上 E 愿意在 C 和 D 之间路由的任何网络服务。

\n\n

更轻量级的解决方案是从 D 和 E 建立 SSH 连接,只需要双方都有 shell 帐户(当然,E 必须允许 SSH)。从 D 开始,运行

\n\n
ssh -R 2242:localhost:22 E sleep 999999999\n
Run Code Online (Sandbox Code Playgroud)\n\n

这将创建从 E 到 D 的端口转发:在端口 2242 上与 E 建立的任何连接都会在端口 22 上中继到 D。端口 22 是 ssh 端口,因此当您运行 时ssh -p 2242 E,这会将您连接到 D,您可以在其中登录。要自动执行此操作,您可以定义一个别名,~/.ssh/config如下所示(PuTTY 有类似的设置,请参阅其手册):

\n\n
Host dorm\nUserName bob\nHostName E\nPort 2242\n
Run Code Online (Sandbox Code Playgroud)\n\n

您可以通过这种方式路由多个端口。例如,要将 E 上的端口 8042 也中继到 D 上的端口 80:

\n\n
ssh -R 2242:localhost:22 -R 8042:localhost:80 E sleep 999999999\n
Run Code Online (Sandbox Code Playgroud)\n\n

每次在 D 上启动网络连接时,您都需要重新运行该命令。

\n


Qua*_*dom 0

VPN 可以解决这个问题,是的。

具体来说,您需要一个允许端口转发的 VPN。我只有Mulvad的经验,他们就是这样做的,但我确信许多其他 VPN 也提供这种服务。

对于大多数服务,您可能无法期望转发任意端口(例如 ssh 的 22),因此您必须使用一些“随机”高编号端口。但为此配置 ssh/ftp 应该非常简单。