Ngrok实现内网穿透

Posted 二木成林

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Ngrok实现内网穿透相关的知识,希望对你有一定的参考价值。

目录

 

原生Ngrok

下载Ngrok

注册Ngrok获取authtoken

准备

使用

Sunny-Ngrok

下载

注册获取隧道id

使用


原生Ngrok

下载Ngrok

进入官网https://ngrok.com/download进行下载,Windows系统使用就下载Windows的

注册Ngrok获取authtoken

点击“Sign up"进行注册

输入信息进行注册

注册出现这个提示,那么很难注册成功,因为需要验证,而在国内是不会出现验证选项的,所以需要翻墙科学上网。

科学上网后,就可以注册了

注册成功后跳转的页面是这样的:

点击左侧菜单栏中的"Your Authtoken"中就可以看到我们需要的authtoken了。

准备

创建一个普通的JavaWeb项目。然后创建一个普通的HelloServlet即可。

@WebServlet("/hello")
public class HelloServlet extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        resp.getWriter().print("Hello Ngrok!");
    }
}

使用了@WebServlet注解所以不需要配置web.xml文件,我们把这个项目使用tomcat运行起,在浏览器访问结果如下:

使用

将解压包进行解压,只有一个gnrok.exe文件

通过DOS窗口进入到该目录下

然后执行如下命令(注意:不同版本的Ngrok的命令是不一样的,但如果你执行的命令是错误的它会给出提示,你根据它提示的例子就可以明白正确的命令了):

# 保存密钥到文件中
ngrok authotoken 密钥
# 执行内网穿透
ngrok http -subdomain=二级域名 端口号

各参数注释:

  • 密钥就是注册后得到的authtoken
  • 二级域名一般是项目名
  • 端口号一般是8080

例如

出现如下界面表示成功了,但是这个界面会一闪而过。

因为它收费了,提示如下:

上面的意思是自定义子域名收费了,但是我们可以不自定义子域名啊。

我们只需要执行如下命令即可,不自定义子域名。

ngrok http 8080

执行后效果,表示已经运行成功了,可以通过公网访问

注意,这里 http://fa9af50fdb50.ngrok.io等价于http://localhost:8080,它们是可以相互替换的,但前者能够在公网访问你的项目,但是后者只能在自己的电脑上访问。

效果一样,这样你的项目的就可以在公网访问了,还可以在DOS窗口中查看到请求结果

 

Sunny-Ngrok

使用国内的Ngrok,网速更快,配置方面也更简单,而且免费。

下载

国内Ngrok官网地址:https://www.ngrok.cc/

解压后如下:

注册获取隧道id

还需要关注公众号才能使用

接着需要开通隧道,可以参考官方教程:https://www.ngrok.cc/_book/general/open.html

为了测试,买个不付费的

确定开通

开通后如下:

使用

在安装目录下双击执行"Sunny-Ngrok启动工具.bat"

然后输入隧道id

回车后就启动成功,可以使用了,复制网址直接查看效果

浏览器打开网址后,输入用户名和密码

发现访问不了,出现问题了,因为上面的域名地址映射的是"127.0.0.1:80",而我们本地tomcat项目通常使用的端口号是"8080"

所以我们要修改端口号

修改后重新执行本地的bat文件,发现映射的端口变成了8080。

注意,如果本地没有运行项目,那么会提示:

成功映射,实现内网穿透:

以上是关于Ngrok实现内网穿透的主要内容,如果未能解决你的问题,请参考以下文章

内网穿透简单实现 - 钉钉免费方案 + ngrok.cc

有没有简单的内网穿透工具?

Beef-XSS+Sunny-Ngrok实现内网穿透

求助,FTP使用ngrokc内网穿透如何设置

Mac内网穿透(ngrok)

使用ngrok做内网穿透