7200 Star!开源免费的内网穿透工具

Stella981
• 阅读 707

【导语】:inlets是一个基于WebSocket隧道实现的内网穿透工具,可以将本地服务暴露到公网。

简介

inlets利用反向代理和Websocket隧道,将内部或开发中的服务通过出口节点暴露到公网。出口节点可以是一个VPS,也可以是任何带有公网IPv4的电脑。

类似的工具还有Ngrok、Argo Tunnel等,但这两者都是闭源的,有其本身的限制,价格不菲,以及对arm/arm64的支持有限。Ngrok还经常会被公司防火墙策略拦截而导致无法使用。而其它开源的隧道工具,基本只考虑到静态地配置单个隧道。inlets 旨在动态地发现本地服务,通过 Websocket 隧道将它们暴露到公网 IP 或域名,并自动化配置 TLS 证书。

inlets已完成以下功能:

  • 基于客户端的定义,自动在出口节点创建服务入口
    • 通过 DNS / 域名实现单端口、单 Websocket 承载多站点
  • 利用 SSL over Websockets 实现链路加密(wss://)
  • 自动重连
  • 通过 Service Account 或 HTTP Basic Auth 实现权限认证
    • 通过 HTTP01 challenge 使用 LetsEncrypt Staging 或 Production 签发证书
  • 原生跨平台支持,包括 ARMHF 和 ARM64 架构
  • 提供 Dockerfile 以及 Kubernetes YAML 文件
  • 自动发现并实例化 Kubernetes 集群内 LoadBalancer 类型的 Service - inlets-operator
  • 除 HTTP(s) 以外,还支持在隧道内传输 Websocket 流量

项目地址: https://github.com/inlets/inlets

简单使用

详细的安装部署步骤参考官网,小秋这里简单介绍一下上手安装的步骤(也是参考官网的操作),省去了token的生成。

安装inlets服务

官网推荐使用brew或curl安装:

# 安装到当前目录
curl -sLS https://get.inlets.dev | sh

# 安装到 /usr/local/bin/
curl -sLS https://get.inlets.dev | sudo sh
# 使用brew安装
brew install inlets

小秋在windows上使用,直接下载inlets.exe文件并在命令行中执行,下载地址为:

https://github.com/inlets/inlets/releases

启动隧道服务端

这一步需要在有公网IP的机器上操作,以达到将内网服务映射出网的目的。(小秋没有这样的服务器,直接在本机安装,无法映射出公网,但是也能完成代理映射的过程,而过程都是一样的)

下载了inlets.exe,放到F盘下,执行命令启动:

/f/inlets/inlets.exe server --port=8090

如下图:

7200 Star!开源免费的内网穿透工具

运行HTTP服务

使用Python内置的HTTP服务做测试:

mkdir inlets-test
cd /inlets-test
touch hello-world
python -m http.server 3000

如下图:

7200 Star!开源免费的内网穿透工具


访问localhost:3000

7200 Star!开源免费的内网穿透工具

启动inlets客户端

在和HTTP服务同一台机器上启动inlets客户端,执行以下命令:

/f/inlets/inlets.exe client --remote=192.168.244.1:8090 --upstream=http://127.0.0.1:3000
  • --remote参数必须设置为出口节点的IP
  • --upstream参数即为需要暴露的内网服务的ip和端口

如下图:

7200 Star!开源免费的内网穿透工具

访问出口节点:

7200 Star!开源免费的内网穿透工具

其他

以上可以说是inlets最基本也最常用的功能,inlets还有更多高级功能,感兴趣的童鞋可以试试:

  • 支持Docker安装部署
  • 单出口节点多服务
  • 为控制平面设定笃定端口

开源前哨 日常分享热门、有趣和实用的开源项目。参与维护 10万+ Star 的开源技术资源库,包括:Python、Java、C/C++、Go、JS、CSS、Node.js、PHP、.NET 等。

点赞
收藏
评论区
推荐文章
blmius blmius
3年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
皕杰报表之UUID
​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为
待兔 待兔
4个月前
手写Java HashMap源码
HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22
Wesley13 Wesley13
3年前
SSH 隧道实现内网穿透
家里买了台NETGEAR路由器刷了梅林固件,可以在USB接口上挂个存储当NAS用,发现家里的移动宽带是没有公网ip的,于是在外网访问不到内网,ddns也没法用了(不要给我推荐花生壳内网版😝)。那么,需求就是如何让外网访问到内网ip。于是想到了从内网到公网上的某台机器建立一条ssh隧道,通过访问公网机器把数据穿透到内网,实现方法:在内
Souleigh ✨ Souleigh ✨
3年前
前端性能优化 - 雅虎军规
无论是在工作中,还是在面试中,web前端性能的优化都是很重要的,那么我们进行优化需要从哪些方面入手呢?可以遵循雅虎的前端优化35条军规,这样对于优化有一个比较清晰的方向.35条军规1.尽量减少HTTP请求个数——须权衡2.使用CDN(内容分发网络)3.为文件头指定Expires或CacheControl,使内容具有缓存性。4.避免空的
GoCoding GoCoding
2年前
FRP 内网穿透、反向代理
是一个专注于内网穿透的高性能的反向代理应用,支持TCP、UDP、HTTP、HTTPS等多种协议。可以将内网服务以安全、便捷的方式通过具有公网IP节点的中转暴露到公网。本文将以暴露内网Web服务为例,实践frp的安装部署。更多应用场景,可见。安装frp主要由客户端(frpc)和服务端(frps)组成,服务端通常部署在具有公网IP
Wesley13 Wesley13
3年前
35岁是技术人的天花板吗?
35岁是技术人的天花板吗?我非常不认同“35岁现象”,人类没有那么脆弱,人类的智力不会说是35岁之后就停止发展,更不是说35岁之后就没有机会了。马云35岁还在教书,任正非35岁还在工厂上班。为什么技术人员到35岁就应该退役了呢?所以35岁根本就不是一个问题,我今年已经37岁了,我发现我才刚刚找到自己的节奏,刚刚上路。
Stella981 Stella981
3年前
Holer一款局域网服务器代理到公网的内网穿透工具
Holer简介Holer(https://www.oschina.net/action/GoToLink?urlhttps%3A%2F%2Fgithub.com%2FWisdomProjects%2Fholer)是一个将局域网服务器代理到公网的内网穿透工具,支持转发基于TCP协议的报文。!(https://static.o
融云IM即时通讯 融云IM即时通讯
10个月前
内网部署,移动端如何使用,且保障电脑端安全
"A.在企业内网自建DNS服务,然后使用域名代替公网IP重新配置;B.在互联网区域,使用互联网DNS服务将域名解析到公网IP;C.在内网区域,使用自建DNS服务将域名解析到服务器内网IP,这样内网电脑不能联网也能正常使用,互联网手机也能正常收发消息;D.如