美文网首页网络安全类Linux
Ngrok - 内网穿透工具使用介绍

Ngrok - 内网穿透工具使用介绍

作者: 红薯爱帅 | 来源:发表于2021-04-25 13:22 被阅读0次

1. 概述

ngrok

开源的内网穿透工具有很多,例如ngrok、frp、lanproxy、goproxy、nps等。

  • fatedier/frp
    frp is a fast reverse proxy to help you expose a local server behind a NAT or firewall to the Internet. As of now, it supports TCP and UDP, as well as HTTP and HTTPS protocols, where requests can be forwarded to internal services by domain name.
    Frp also has a P2P connect mode.
  • inconshreveable/ngrok
    ngrok is a reverse proxy that creates a secure tunnel from a public endpoint to a locally running web service. ngrok captures and analyzes all traffic over the tunnel for later inspection and replay.
  • snail007/goproxy
    The GoProxy is a high-performance http proxy, https proxy, socks5 proxy, ss proxy, websocket proxies, tcp proxies, udp proxies, game shield, game proxies

其中,Frp的使用方法可以参考我之前的文章《Frp - 内网穿透工具使用介绍》,更深入的用法,可以阅读官方文档。

Ngrok的商业化工作做得不错。可以在不部署公网服务的情况下,免费使用NAT穿透功能。
有两家基于Ngrok的商业应用,本文重点介绍第一家:

  • ngrok
    Ngrok团队提供的,基于ngrok 2.x,ngrok 1.x开源版本已经不维护,2.x好像不开源
  • NATAPP
    内网穿透 基于ngrok 1.7版本的国内高速内网映射工具

参考:内网穿透工具比较(ngrok,frp,lanproxy,goproxy,nps)

2. Setup与Http服务代理介绍

2.1. Setup

注册并登录ngrok官网,可以看到ngrok dashboard页面
通过Dashboard,可以下载不同Desktop的运行程序,可以查看自己Authtoken,可以查看已创建的Tunnel

image.png
image.png

2.2. 启动需要Nat外被远程访问的Http服务

  • Python2启动方式,For Test
$ python -m SimpleHTTPServer 8001
Serving HTTP on 0.0.0.0 port 8001 ...
10.210.10.183 - - [09/Apr/2021 09:36:15] "GET / HTTP/1.1" 200 -
  • Python3启动方式,For Test
$ python -m http.server 8001
Serving HTTP on 0.0.0.0 port 8001 ...
10.210.10.183 - - [09/Apr/2021 09:36:15] "GET / HTTP/1.1" 200 -

2.3. 启动Ngrok服务,本机需要能够访问到Ngrok官方服务,否则,可以借用http_proxy或者其他proxy

$ ./ngrok http 8001
ngrok by @inconshreveable                                                                                                                                                                        (Ctrl+C to quit)                                                                                                                                                                                                                 Session Status                online
Account                       shuzhang (Plan: Free)
Version                       2.3.39
Region                        United States (us)
Web Interface                 http://127.0.0.1:4040
Forwarding                    http://3a2dbc150775.ngrok.io -> http://localhost:8001
Forwarding                    https://3a2dbc150775.ngrok.io -> http://localhost:8001

Connections                   ttl     opn     rt1     rt5     p50     p90
                              0       0       0.00    0.00    0.00    0.00

2.4. 本地打开Console页面(http://127.0.0.1:4040/status),可以查看Tunnel状态

image.png

2.5. 关键一步,调用http请求http://3a2dbc150775.ngrok.io,结果OK

image.png

3. 其他用法

3.1. ngrok help,查看推荐用法

$ ./ngrok help
...
    ngrok http 80                    # secure public URL for port 80 web server
    ngrok http -subdomain=baz 8080   # port 8080 available at baz.ngrok.io
    ngrok http foo.dev:80            # tunnel to host:port instead of localhost
    ngrok http https://localhost     # expose a local https server
    ngrok tcp 22                     # tunnel arbitrary TCP traffic to port 22
    ngrok tls -hostname=foo.com 443  # TLS traffic for foo.com to port 443
    ngrok start foo bar baz          # start tunnels from the configuration file
...

3.2. 编写ngrok.yml,同时启动一组Tunnel

3.2.1. 编写ngrok.yml

$ cat ~/.ngrok2/ngrok.yml
authtoken: 1quWLs7sdwwz4xxxxxxxxxxxxxHX_osfdsdfd56scfwrwerQH1Jt
http_proxy: "http://10.xxx.yyy.zzz:8000"
web_addr: 0.0.0.0:4040
tunnels:
  test-http:
    addr: 127.0.0.1:8001
    proto: http
    inspect: true
    bind_tls: both
  test-ssh:
    addr: 127.0.0.1:22
    proto: tcp

3.2.2. 启动所有所有Tunnel,也可以启动部分

$ ./ngrok start --all
ngrok by @inconshreveable                                                                (Ctrl+C to quit)
                                                                                                         
Session Status                online                                                                     
Account                       shuzhang (Plan: Free)                                                      
Version                       2.3.38                                                                     
Region                        United States (us)                                                         
Web Interface                 http://0.0.0.0:4040                                                        
Forwarding                    http://84dc8148b639.ngrok.io -> http://127.0.0.1:8001                      
Forwarding                    https://84dc8148b639.ngrok.io -> http://127.0.0.1:8001                     
                                                                                                         
Connections                   ttl     opn     rt1     rt5     p50     p90                                
                              7       0       0.00    0.01    0.00    0.00                               
                                                                                                         
HTTP Requests                                                                                            
-------------                                                                                            
                                                                                                         
GET /                          200 OK                                                                    
GET /                          200 OK                                                                    
GET /                          200 OK

4. References

相关文章

网友评论

    本文标题:Ngrok - 内网穿透工具使用介绍

    本文链接:https://www.haomeiwen.com/subject/inhikltx.html