FastTunnel-开源内网穿透框架

FastTunnel


     

FastTunnel是用.net core开发的一款跨平台内网穿透工具,它可以实现将内网服务暴露到公网供自己或任何人访问。

与其他穿透工具不同的是:FastTunnel项目致力于打造一个易于扩展、易于维护的内网穿透框架,任何人都可以基于该框架二次开发,你可以直接通过nuget安装依赖进行开发,当然它也是开箱即用的工具。

荣获GVP开源项目


FastTunnel荣获开源中国2020最有价值开源项目

开源仓库地址


github: https://github.com/SpringHgui/FastTunnel

gitee: https://gitee.com/Hgui/FastTunnel 

官网:https://suidao.io

什么是内网穿透?


一般来说,如果你在内网部署一个网站或应用,也只有处于内网之中的其他网络设备才能访问;但如果你想让公网上任何人都可以访问你内网的应用,则必须要采取一些手段,内网穿透在这种背景下应用而生。

FastTunnel能够做什么?


  • 家中建站

  • 微信开发

  • 远程桌面

  • erp互通

  • svn代码仓库

  • 端口转发

  • iot物联网

  • 等等场景,不局限以上

搭建属于自己的内网穿透平台


    1.在仓库的 releases 页面下载对应的程序

    2.根据自己的需求修改客户端以及服务端配置文件appsettings.json

    3.服务端运行FastTunnel.Server

    4.客户端运行FastTunnel.Cient (客户端可运行在内网任何一台设备上)

配置示例


1.用自定义域名访问内网web服务

例如你拥有一台云服务器,公网ip地址为 110.110.110.110 ,同时你有一个域名 suidao.io,你希望访问 test.suidao.io可以访问你自己电脑上部署的一个网站。

你需要新增一个域名地址的DNS解析,类型为A,名称为 * , ipv4地址为 110.110.110.110 ,这样 *.abc.com的域名均会指向110.110.110.110的服务器,由于FastTunnel默认监听的http端口为1270,所以要访问http://test.abc.com:1270。

服务端配置文件:config/appsettings.json

"ServerSettings": {// 必选 默认值"BindAddr": "0.0.0.0",// 必选 默认值"BindPort": 1271,// 自定义域名web穿透必须"WebDomain": "suidao.io",// 服务监听的端口号, 访问自定义域名站点时url为 http://{SubDomain}.{Domain}:{ProxyPort_HTTP}/// web穿透必须"WebProxyPort": 1270,// 可选,ngixn反向代理后可省略域名后的端口号进行访问"WebHasNginxProxy": false,// 可选,访问白名单,不在白名单的ip拒绝"WebAllowAccessIps": [],// 可选,是否开启SSH,禁用后不处理SSH类型端口转发.默认false。"SSHEnabled": true}

客户端配置文件:

"ClientSettings": {"Common": {// 服务端公网ip, 对应服务端配置文件的 BindAddr,支持域名"ServerAddr": "test.cc",// 服务端通信端口,对应服务端配置文件的 BindPort"ServerPort": 1271},"Webs": [{// 本地站点所在内网的ip"LocalIp": "127.0.0.1",// 站点监听的端口号"LocalPort": 8080,// 子域名, 访问本站点时的url为 http://{SubDomain}.{Domain}:{ProxyPort_HTTP}/"SubDomain": "test", // test.test.cc}]}

2.如何去掉域名后的端口号

在服务器端部署nginx,通过nginx反向代理将80端口流量转发至1270端口,nginx的配置示例如下:

http {# 添加resolver resolver 8.8.8.8;# 设置 *.abc.com 转发至1270端口server {server_name  *.abc.com;location / {proxy_pass http://$host:1270;proxy_set_header   Host             $host;proxy_set_header   X-Real-IP        $remote_addr;proxy_set_header   X-Forwarded-For  $proxy_add_x_forwarded_for;}# 可选error_log /var/log/nginx/error_ft.log error;}
}

3.配置端口转发

假设内网有一个mysql服务端口为3306,在内网的ip地址为192.168.1.100,你希望访问suidao.io:33306端口的请求转发至内网的mysql上,则需要如下配置:

1.服务端配置文件不变

2.客户端配置如下

"ClientSettings": {"Common": {// 服务端公网ip, 对应服务端配置文件的 BindAddr,支持域名"ServerAddr": "test.cc",// 服务端通信端口,对应服务端配置文件的 BindPort"ServerPort": 1271},"Webs": [],/*** ssh穿透,ssh访问内网主机* 访问方式 #ssh -oPort=12701 {root}@{ServerAddr}* ServerAddr 填入服务端ip,root对应内网用户名*/"SSH": [{"LocalIp": "192.168.1.100","LocalPort": 3306,"RemotePort": 33306}]}

3.远程内网电脑

windows:只需要将上一步中的3306端口换成3389,

linux:只需要将上一步中的3306端口换成21

结语


相信聪明的你已经看懂了如何配置,以及每个参数代表的意义,如果还有不懂的地方,可以提issue给作者。有兴趣的朋友可以去clone下来耍耍,给作者提提需求、bug,如果能提交代码一起参与开发改进就更完美了。

作者建了qq群,有兴趣的可以加下:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/301739.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

系统架构师-基础到企业应用架构-服务层

一、上章回顾 上篇我们主要讲解了系统架构中的四种架构模式,并且分析了四种架构模式的实现及应用场景,那么先来回顾下架构中的业务逻辑层的使用及总结。 如果大家对图中讲述的内容不明白或者说是不深入那么可以参考上篇讲 解的内容:系统架构师…

Python 10大谬论

全世界只有3.14 % 的人关注了数据与算法之美谬误 #1: Python 是一门新语言伴随着所有的初创公司正在使用它以及孩子们最近也在学习它的事实,这个谬误为何仍然存在是可以理解的。实际上 Python 已经 超过23岁了, 它最初发布于1991年, 早于 HTTP 1.0协议 5年且早于 Ja…

【litrpa专题】首个rpa程序,使用litrpa采集百度地图地铁数据

RPA最近2年里红遍大江南北,人力成本上升,办公自动化势在必行,Excel长期肩负着办公自动化的重任,就算有【Excel催化剂】这些插件的把持,仍然有许多需求未能满足。笔者一直关注RPA领域,从广义来说&#xff0c…

不只是舒适,简直是享受,Google公司用的腰靠,到底有什么秘密?

▲数据汪特别推荐点击上图进入玩酷屋之前小木推荐“德国MINICUTE人体工学腰垫”受到了大家一致的好评和争相购买。小木为什么推荐这一款原因是:据统计,我国腰椎病患者已经突破2亿人。30~40岁人群中,患有颈腰椎病的占比59.1%!而且有…

Python花呗分析模型温馨提醒:支出不规范,收入两行泪

全世界只有3.14 % 的人关注了数据与算法之美春节结束,离开家里混吃混喝的怀抱,我又开始了用花呗、还花呗的无限循环。花呗给人一种“有钱”的感觉,我不禁思考:像我这种发工资前靠花呗活着,一发工资就还花呗的平静什么时…

fiddler插件开发

Fiddler 是优秀的抓包工具,有着众多的优秀插件。Fiddler 软件是由C#语言开发的,运行在.net Framework 框架之上,所以我们也可以使用vs来开发自己的Fiddler插件,下面就介绍fiddler插件开发基本步骤。1.打开visual studio 创建一个V…

2500 万行的代码就问你敢不敢动?!

全世界只有3.14 % 的人关注了数据与算法之美近日,某网友在 Hacker News 上发起了一个 “你见过的最糟糕的代码是什么?” 的问题,引起了广泛关注和讨论,评论数已接近600条。其中,一位 ID 为“oraguy”的程序员对 Oracle…

WPF Grid添加边框的两种方法

最近项目中使用到了Grid表格,居然要加边框,查了一下,grid原生居然是不支持实线边框的。。最终我还是实现了效果,看看吧:左边是直接写的每行一个border,每列写一个border,这样在行列比较少的时候还行,如果多…

当初互联网大佬给的几块钱“羊毛”,现在又要我们加倍还回去!

全世界只有3.14 % 的人关注了数据与算法之美对于上班族来说,春节早就过去了,今天已经是上班的第N天了。不知道大家在春节七天有没有走进电影院呢?在春节档期的八部电影各有各的特色,数据汪一一看完之后真是爽歪歪!但是…

在 dotnet runtime 的容器中安装 dotnet global tool

在 dotnet runtime 的容器中安装 dotnet global toolIntro.NET Core 从 2.1 开始支持 Global tool, 借助 global tool 我们可以通过命令行来实现很多功能,微软提供的一系列的 dotnet 诊断工具也都提供了 global tool,我们可以通过 global tool 比较方便的…

Asymptote 学习记录(2):例子阅读

学习编程的一个有效方式是去读别人写的代码.我学习了这里的代码.代码虽多,但是简单.代码如下(稍微做了修改): import settings; pdfviewer"/usr/bin/okular"; outformat"pdf"; size(400); texpreamble("\usepackage{CJK}\AtBeginDocument{\begin{CJK}…

如何启发孩子的数学思维?你想要的答案或许在这!

▲数据汪特别推荐点击上图进入玩酷屋记得寒假时,超模君七岁小表弟来问了我一道题目:下面线段有多少条?首先我问了他什么是线段?他说:两端有端点,不可以伸长的直线。AB就是线段。我慢慢引导,假如…

.NET Core 服务在 ARM64 服务器中的部署

Linux 服务器 CPU 架构主要可分为:X86_64/AMD64、ARM64/AARCH64 两大类,大多情况使用的都是基于 AMD64 CPU 架构的服务器。但随着国产操作系统、CPU 等自主生态打造的应用产品得到越来越多的用户认可和应用,如:华为鲲鹏、统信 UOS…

php 读取onedrive文件夹,oneindex

oneindexOnedrive Directory Index功能:不用服务器空间,不走服务器流量,直接列onedrive目录,文件直链下载。demochange log:18-03-29: 更新直链获取机制、缓存机制,避免频繁访问的token失效18-03-29: 解决非英文编码问…

50种奇妙装置玩法,将STEM教育一网打尽

▲数据汪特别推荐点击上图进入玩酷屋致砖《小小机器人》套装全新首发电动机械的完美结合先来看看视频过过眼瘾吧来自美国STEAM教育让孩子跨学科学知识积木向来是STEAM教育很重要的一部分,因为它涉及到了多种学科:要搭建得稳固——这是工程学;…

ubuntu php7.4,在Ubuntu 18.04/19.04/16.04版本上安装PHP 7.4的简单方法

以下介绍安装PHP 7.4的方法非常的简单,适用于Ubuntu 18.04/19.04/16.04版本上,所安装的版本是PHP 7.4.0 RC1,只需要添加PHP ppa存储库并运行相关命令即可完成安装。一、添加PHP ppa存储库我们将添加ppa:ondrej/php PPA存储库,它具…

通过Dapr实现一个简单的基于.net的微服务电商系统(十七)——服务保护之动态配置与热重载...

在上一篇文章里,我们通过注入sentinel component到apigateway实现了对下游服务的保护,不过受限于目前变更component需要人工的重新注入配置以及重启应用更新component等等原因,对于真实的环境运维稍有难度,最近我根据sentinel-gol…

NASA成立寻找外星人小组,三全水饺回应猪瘟,微波炉+葡萄=爆炸,94年故宫首次晚间开放,这就是今天的大新闻!...

元宵节刚刚过完汤圆也吃了好几碗是时候来回忆下发生了什么下面是今天的大新闻报!故宫网站崩了,被众多人“围攻”! (搜狐新闻)此前,故宫94年来首开夜场”的消息刷屏了!故宫将在正月十五、十六开夜…

wpf 可以取消的单选checkbox

利用radioButton的groupName分组互斥。。再解决radiobutton的取消选择的问题。给radiobutton加了一个像checkbox的样式 2个方式&#xff1a; 效果图 第一种usecontrol&#xff1a; xaml&#xff1a; View Code <RadioButton x:Class"GEMS.Windows.Controls.UserContro…

表格高亮

引用&#xff1a;http://blog.163.com/ms8712126/blog/static/1899099120122934023200/ //js实现隔行变色window.οnlοadfunction(){var otaldocument.getElementById("otable");for(var i0; i<otal.rows.length; i){ if(i%20){ otal.rows[i].className"e…