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 的网站,但它用非技术术语描述了所有功能,所以我无法弄清楚这些问题,我更愿意在创建帐户之前了解。
从表面上看,您的校园防火墙不允许从校园外部向您的计算机发起任何连接。因此,为了连接到您的计算机,您必须从内部启动连接。
\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\nssh -R 2242:localhost:22 E sleep 999999999\nRun Code Online (Sandbox Code Playgroud)\n\n这将创建从 E 到 D 的端口转发:在端口 2242 上与 E 建立的任何连接都会在端口 22 上中继到 D。端口 22 是 ssh 端口,因此当您运行 时ssh -p 2242 E,这会将您连接到 D,您可以在其中登录。要自动执行此操作,您可以定义一个别名,~/.ssh/config如下所示(PuTTY 有类似的设置,请参阅其手册):
Host dorm\nUserName bob\nHostName E\nPort 2242\nRun Code Online (Sandbox Code Playgroud)\n\n您可以通过这种方式路由多个端口。例如,要将 E 上的端口 8042 也中继到 D 上的端口 80:
\n\nssh -R 2242:localhost:22 -R 8042:localhost:80 E sleep 999999999\nRun Code Online (Sandbox Code Playgroud)\n\n每次在 D 上启动网络连接时,您都需要重新运行该命令。
\n