搭建ngrok服务器实现内网穿透
我需要远程用服务器去跑深度学习,所以想用内网穿透去远程登录我们的服务器(不在一个局域网内),特此记录一下过程。本人不是专门搞网络方面的,下面的内容仅就自己在实现过程中查找的资料和自己的理解写的,可能不是很专业,望专业的同学可以指出不足,我加以改正。
官方网站及源码
简介
-
ngrok是一个反向代理,通过在公共的端点和本地运行的Web服务器之间建立一个安全的通道。
-
ngrok是一个内网穿透的解决方案,它使得你本地的服务器可以被局域网外的公网访问到。
-
ngrok服务端会建立http和https服务,以及供客户端连接的服务,默认端口4443
-
ngrok的1.X版本是开源的
-
ngrok使用go语言开发,源代码分为客户端与服务器端。
-
ngrok的工作流程:
访问端输入域名->DNS->ngrok服务端->请求映射到ngrok客户端->客户端返回响应到ngrok服务端->ngrok服务端返回响应到访问端 -
涉及到三个终端:访问端,客户端,服务端
- 客户端:需要远程访问的服务器(在我的需求里就是能跑深度学习的主机)
- 服务端:一个提供端口转发的公网服务器
- 访问段:这个就是我们自己的电脑了,在这台机子上远程登录客户端。
准备工作
环境
ubuntu18.04(用来编译源码)
必要资源
- 一台公网服务器
- 一个域名(我的做了备案,我不知道需不需要一定备案)
安全组
在自己的公网服务器中添加安全组
域名解析
在自己的域名管理中添加解析A记录,如下所示:
将*.ngrok与ngrok都指向您的主机IP(公网服务器ip)。
编译
为了方便书写,这里规定我用的域名是 "abc.top"
-
安装git