利用ngrok做内网穿透

内网穿透

内网穿透,即NAT穿透,让外网与内网的计算机节点进行连接通信。
有时候我们需要在外网访问我们局域网里的应用,这时候就需要使用内网穿透技术。

NAT

NAT英文全称是“Network Address Translation”,中文意思是“网络地址转换”,它是一个IETF(Internet Engineering Task Force, Internet工程任务组)标准,允许一个整体机构以一个公用IP(Internet Protocol)地址出现在Internet上。顾名思义,它是一种把内部私有网络地址(IP地址)翻译成合法网络IP地址的技术。
NAT 可以让那些使用私有地址的内部网络连接到Internet或其它IP网络上。NAT路由器在将内部网络的数据包发送到公用网络时,在IP包的报头把私有地址转换成合法的IP地址。

Ngrok

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

Ngrok工作原理

ngrok分为服务端和客户端。
ngrok会根据配置的域名生成具有证书加密的服务端程序和客户端程序。
ngrok服务端程序启动以后,会监听来自客户端的链接。
当客户端启动的时候,通过验证后服务器端和客户端会建立一条TCP连接通道。由客户端维持心跳。毕竟服务器无法主动联系客户端。当连接建立时,服务器会记录客户端启动时配置的url与通道信息。做一个映射。可以理解该连接为一个master进程。
当用户有数据需要请求客户端里的服务时,服务端会根据请求的域名找到已经建立的通道,传输一些控制信息给客户端。大意是让客户端发起一个传输数据的通道过来。然后后续的传输数据走新建立的数据通道。可以理解为worker进程。
说白了ngrok就是一个流量中转站。通过一定的协议,负责公网和内网建立传输通道的工具。
因此ngrok必须需要一个公网的服务器来做中转。

Ngrok使用

安装

本文介绍使用docker安装方式。
ngrok没有官方的docker镜像。因此从github上找到了一个用于构建ngrok镜像的项目。
感谢 https://github.com/hteen/docker-ngrok
我修改了一些东西。一个是换了go的版本为最新版。换了ngrok为github上星星最多的版本库。换了n个端口。
修改以后的Docker

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值