ngrok 内网穿透/映射神器

ngrok 内网穿透/映射神器

目录

  1. ngrok介绍
  2. ngrok能做什么
  3. ngrok基本使用
  4. ngrok进阶使用
    4.1 自定义子域名
    4.2 tcp端口转发
    4.3 自定义HTTP验证
    4.4 转发到局域网其他的机器
    4.5 绑定顶级域名
  5. ngrok配置文件
    5.1 ngrok将参数写到文件
    5.2 其它配置参数
    5.3 连接到自己搭建的ngrokd 服务器
    5.4 支持http代理服务器

1. ngrok介绍

ngrok 是一个反向代理,通过在公共的端点和本地运行的 Web 服务器之间建立一个安全的通道。ngrok 可捕获和分析所有通道上的流量,便于后期分析和重放

百度百科 baike.baidu.com/view/…

ngrok官方: https://ngrok.com/

2. ngrok能做什么

ngrok不但提供了一个在外网能够安全的访问内网Web主机,还能捕获所有请求的http内容,方便调试,甚至还支持tcp层端口映射,不局限于某一特定的服务。支持Mac OS X,Linux,Windows平台。

通常,映射内网到外网的方法有:

  • 使用路由器做端口映射或DMZ主机
  • 花生壳等动态域名软件
  • 自行搭建VPN,再做端口转发等

DMZ可以理解为一个不同于外网或内网的特殊网络区域,DMZ内通常放置一些不含机密信息的公用服务器,比如Web、Mail、FTP等。这样来自外网的访问者可以访问DMZ中的服务,但不可能接触到存放在内网中的公司机密或私人信息等,即使DMZ中服务器受到破坏,也不会对内网中的机密信息造成影响。

百度百科 baike.baidu.com/view/…

3. ngrok基本使用

  • 下载
  • 解压
    Linux 或 OSX 可以通过以下命令解压,Windows可直接右键或使用解压软件 Winrar 解压。
      
      
1
      
      
$ unzip /path/ to/ngrok.zip
  • 运行

将本机80端口映射到互联网上

      
      
1
      
      
$ ngrok 80

运行正常后的结果

      
      
1
2
3
4
5
6
7
8
9
      
      
ngrok
Tunnel Status online
Version 1. 3/ 1. 3
Forwarding http://3a4bfceb.ngrok.com -> 127.0.0.1:80
Forwarding https://3a4bfceb.ngrok.com -> 127.0.0.1:80
Web Interface http://127.0.0.1:4040
# Conn 0
Avg Conn Time 0. 00ms

这时访问 https://3a4bfceb.ngrok.com 就可以了

4. ngrok进阶使用

使用ngrok时并不强制用户注册,但注册后会附加更多功能。
注册后,登录(管理界面)[https://ngrok.com/dashboard],获取自己的账号秘钥。

例如:1WS0m987654321YFabcd

  • 首次使用 :
      
      
1
      
      
ngrok -authtoken 1WS0m987654321YFabcd 80

注:同一电脑只需使用一次

4.1 自定义子域名

      
      
1
      
      
$ngrok -subdomain yaosansi-app 80

这样会生成 https://yaosansi-app.ngrok.com 代替这样随机生成的子域名 http://3a4bfceb.ngrok.com

4.2 tcp端口转发

      
      
1
      
      
$ngrok -proto tcp 22

这样就可以通过外网ssh到本机了,当然外网端口是随机分配的。

4.3 自定义HTTP验证

      
      
1
      
      
$ngrok -httpauth "user:password" 80

4.4 转发到局域网其他的机器

      
      
1
      
      
$ngrok 192.168. 0.1: 80

4.5 绑定顶级域名(付费可用)

在dashboard中添加域名,将域名test.yaosansi.com cname解析到ngrok.com即可。

      
      
1
      
      
$ngrok -hostname "test.yaosansi.com" 80

5. ngrok配置文件

5.1 ngrok将参数写到文件

默认是放在~/.ngrok。例如:

      
      
1
2
3
4
5
6
7
8
9
10
11
      
      
tunnels:
client:
auth: "user:password"
proto:
https: 8080
ssh:
proto:
tcp: 22
test.yaosansi.com:
proto:
http: 9090

这里定义了三个隧道:

  • client:表示转发http到本机8080,同时要求验证,
  • ssh:表示支持远程访问,
  • test.yaosansi.com: 绑定了域名转发到9090

启动这三个隧道服务:

      
      
1
      
      
$ngrok start client ssh test.yaosansi.com

运行结果如:

      
      
1
2
3
4
5
6
7
8
      
      
ngrok
Tunnel Status online
Version 1.3/ 1.3
Forwarding https://client.ngrok.com -> 127.0 .0 .1: 8080
Forwarding http://test.yaosansi.com -> 127.0 .0 .1: 9090
Forwarding tcp://ngrok.com: 44764 -> 127.0 .0 .1: 22
...

注明:每一个隧道的配置节点都有五个参数,proto,subdomain,auth,hostname和remote_port:

  • proto: 指定本地地址和端口 (必填)。
  • subdomain: 指定二级域名,如果没有配置,ngrok会默认生成一个与隧道节点一样的名字的二级域名。
  • auth: 用于在http(s)中身份认证。
  • hostname: 指定顶级域名。
  • remote_port: 用于在tcp隧道中指定远程服务器端口。

5.2 其它配置参数

      
      
1
2
3
4
      
      
auth_token: abc123
inspect_addr: "0.0.0.0:8888"
tunnels:
...
  • authtoken: 用于设置登录ngrok的授权码,可以在ngrok首页的dashboard中查看到。
  • inspect_addr: 用于设置监听ip,比如设置为 0.0.0.0:8080 意味着监听本机所有ip的 8080 端口上

5.3 连接到自己搭建的ngrokd 服务器

(如何搭建自己的ngrokd服务器?)[http://blog.csdn.net/shikewei0103/article/details/41284815]

搭建好自己的服务器后:

      
      
1
2
3
4
      
      
server_addr: "example.com:4443"
trust_host_root_certs: true
tunnels:
...
  • server_addr: 指向自己的服务器
  • trust_host_root_certs: 确保TLS 连接受信任

5.4 支持http代理服务器

      
      
1
2
3
      
      
http_proxy: "http://user:password@10.0.0.1:3128"
tunnels:
...
  • http_proxy: 指定 http 代理服务器
  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值