再見二丁目 | yitimo的个人博客

再见二丁目

自己搭建ngrok服务器代理本地服务

发布于: 2019-09-03 15:32

此文章久未修订,请自行甄别内容准确性。

ngrok做了什么

正常的网络拓扑下,一般通过 255.255.255.0 掩码区分不同网段,即IP的前三段都相同视为同一网段,若想要让两个网段通信,则需要通过路由器来完成,通过在路由器中配置路由表,使两个不同网段的IP建立映射关系。

一般我们请求某个服务器地址时,显然本地局域网地址和远程服务器地址不在同一网段,我们是本地通过连接到本地网关,然后连接至互联网,然后连接至远程服务器。

但是反过来就不行了,想象一下远程服务器该如何请求到一个本地的局域网地址?

答案是NAT技术。

个人版的NAT技术的粗暴理解:类比一下本地请求远程时,客户端是如何接收到远程服务器响应的。对于远程服务器来说,其实只知道有另一个外网地址请求了自己,并给了他响应,这个外网地址即本地网关的外网地址,再由本地网关将这个来自服务器的响应精准的返回给本地地址。即本地网关把一个来自外网服务器的响应转发给了一个本地地址。

所以有哪些简单的方法可以做到:在本地运行一个站点,请求一个外网地址访问到这个站点?

  1. 直接给本地分配一个外网IP
  2. 通过一个连接至外网的路由器进行NAT
  3. 通过ngrok

ngrok的内部做法和NAT不一样(目测其建立了一个C/S连接来实时监听并转发请求,而NAT只需一张映射表被动的转发请求),但做的事情类似,远程服务器请求的是我们拥有外网地址的网关(运行了ngrok server的个人服务器),然后由 ngrock server 来映射至建立好连接的本地 ngrok client,并根据 ngrok client 配置好的规则转发至特定端口。总结:整个ngrok(包括运行在本地的client)都属于负责转发请求的网关,这整个过程成为内网穿透。

ngrok能做什么

使用ngrok需要自己准备什么

使用ngrok需要如何配置

此文章还在更新中