ngrok 本地安全隧道链接内网穿透

发布于 2020-06-29 15:45:03 字数 4712 浏览 2512 评论 2

本地安全隧道:localhost,我想将一个本地服务器暴露在NAT或防火墙后面的互联网,ngrok 是一个反向代理,通过在公共的端点和本地运行的 Web 服务器之间建立一个安全的通道。ngrok 可捕获和分析所有通道上的流量,便于后期分析和重放。

特点

应用不使用 ngrok 和使用 ngrok

不要不断地重新部署正在进行的工作,以获得客户的反馈。 ngrok会在您计算机上的本地Web服务器上创建安全的公共 URL(https://yourapp.ngrok.io)。快速迭代,立即反馈,不中断流量。

简化移动设备测试

针对您计算机上运行的开发后端测试移动应用程序。在本地dev服务器上点ngrok,然后配置你的应用程序使用ngrok URL。它不会改变,即使你改变网络。

轻松构建 webhook 集成

构建webhook集成可能是一个痛苦:它需要一个公共地址和大量的设置来触发钩子。节省自己的时间和沮丧与ngrok。检查流经您的隧道的HTTP流量。然后,通过一次点击重播webhook请求,以便在上下文中快速迭代。

从您自己的专用网络运行个人云服务

拥有您的数据。在您自己的专用网络上托管个人云服务。使用完整的端到端加密在您的硬件上运行 webmail,文件同步和更安全。

使用 ngrok 链接

需要在生产中运行 ngrok? 使用 ngrok 链接 to 来管理物联网设备或作为VPN的轻量级替代品,以便有针对性地访问客户网络。

步骤1:解压缩

在 Linux 或 OSX上,您可以使用以下命令从终端解压缩 ngrok。在 Windows 上,只需双击 ngrok.zip 解压。

$ unzip /path/to/ngrok.zip

步骤2:运行它!

阅读有关如何使用 ngrok 的文档。尝试它通过从命令行运行:

$ ./ngrok help

配置文件

ngrok 的配置文件是完全可选的非常简单 YAML 格式文件,他可以允许你使用 ngrok 一些更高级的功能,例如:

  • 同时运行多个隧道
  • 连接到自定义的 ngrok 服务器
  • 调整 ngrok 一些很神秘的功能

ngrok 的配置文件默认从 ~/.ngrok 加载。你可以通过 -config 参数重写配置文件的地址。

同时运行多个隧道

为了运行多个隧道,你需要在配置文件当中使用 tunnels 参数配置每个隧道。隧道的参数以字典的形式配置在配置文件当中。举个例子,让我们来定义三个不同的隧道。第一个隧道是一个有认证的只转发 https 的隧道。第二个隧道转发我们自己机器的 22 端口以便让我可以通过隧道连接到自己的电脑。最后,我们使用自己的域名创造了一个隧道,我们将要在黑客马拉松中展示这个。

tunnels:
  client:
    auth: "user:password"
    proto:
      https: 8080
  ssh:
    proto:
      tcp: 22
  hacks.inconshreveable.com:
    proto:
      http: 9090

通过 ngrok start 命令,我们可以同时运行三个隧道,后面要接上我们要启动的隧道名。

ngrok start client ssh hacks.inconshreveable.com

终端现在看上去应该是这样的:

ngrok

Tunnel Status                 online
Version                       1.3/1.3
Forwarding                    https://client.ngrok.com -> 127.0.0.1:8080
Forwarding                    http://hacks.inconshreveable.com -> 127.0.0.1:9090
Forwarding                    tcp://ngrok.com:44764 -> 127.0.0.1:22
...

隧道设置

每一个隧道都可以设置以下五个参数:protosubdomainauthhostname 以及 remote_port。每一个隧道都必须定义 proto ,因为这定义了协议的类型以及转发的目标。当你在运行 http/https 隧道时, auth 参数是可选的,同样, remote_port 也是可选的,他声明了某个端口将要作为远程服务器转发的端口,请注意这只适用于 TCP 隧道。 ngrok 使用每个隧道的名字做到子域名或者域名,但你可以重写他:

tunnels:
  client:
    subdomain: "example"
    auth: "user:password"
    proto:
      https: 8080

现在当你运行 ngrok start client 的时候,他将会有这样的效果:example.ngrok.com -> 127.0.0.1:8080。相似的,这对自定义域名同样适用,他可以让你通过别名的方式是隧道名更短。

tunnels:
  hacks:
    hostname: "hacks.inconshreveable.com"
    proto:
      http: 9090

对于 TCP 隧道,你可以会通过 remote_port 参数来指定一个远程服务器的端口作为映射。如果没有声明,服务器将会给你随机分配一个端口。

tunnels:
  ssh:
    remote_port: 60123
    proto:
      tcp: 22

其他设置选项

通过在配置文件的顶级配置中声明其他可选的选项,ngrok 的配置文件还可以让你做一些更有趣的事情。举个例子,当你在与 ngrok.com 服务器交互的时候可能需要声明 auth_token 。当你需要改变 ngrok 自带的 web 调试工具所绑定的端口是,你可能需要声明 inspect_addr

auth_token: abc123
inspect_addr: "0.0.0.0:8888"
tunnels:
  ...

连接到自定义的 ngrok 服务器

ngrok 支持连接到其他的 ngrokd 服务器上,即便他们并不托管在 ngrok.com 上。首先,显然你必须正确的配置好你的 ngrokd 服务器。如何配置你自己的 ngrokd 服务器请看这里:运行你自己的 ngrokd 服务器。当你运行了你自己的 ngrokd 服务器,你需要设置两个参数来让 ngrok 安全的连接到你的服务器。首先,你需要设置 server_addr 来支出你服务器的地址。然后你需要设置 trust_host_root_certs 来确保你的 TLS 连接安全。

server_addr: "example.com:4443"
trust_host_root_certs: true
tunnels:
  ...

在 http 代理下运行

最后,你可以设置 ngrok 在 http 代理下运行,这有时候是很有必要的如果你在一个高度限制的企业网络中时。 ngrok 遵守标准的 Unix 环境变量 http_proxy, 但你也可以通过在配置文件中声明 http_proxy 参数来指定。

http_proxy: "http://user:password@10.0.0.1:3128"
tunnels:
  ...

相关链接

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

JSmiles 回复 jojo 2020-12-31 14:16:53

蜻蜓映射 确实不错,感谢分享!

jojo 2020-12-28 19:02:10

ngrok 用的是国外节点,会有一些丢包,用了下蜻蜓映射,还挺好的

~没有更多了~

关于作者

JSmiles

生命进入颠沛而奔忙的本质状态,并将以不断告别和相遇的陈旧方式继续下去。

0 文章
0 评论
84961 人气
更多

推荐作者

醉城メ夜风

文章 0 评论 0

远昼

文章 0 评论 0

平生欢

文章 0 评论 0

微凉

文章 0 评论 0

Honwey

文章 0 评论 0

qq_ikhFfg

文章 0 评论 0

    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文