LOGO OA教程 ERP教程 模切知识交流 PMS教程 CRM教程 开发文档 其他文档  
 
网站管理员

【C#】FastTunnel - 打造人人都能搭建的内网穿透工具

admin
2024年6月1日 16:43 本文热度 930

FastTunnel是用.net core开发的一款跨平台内网穿透工具,它可以实现将内网服务暴露到公网供自己或任何人访问。
与其他穿透工具不同的是:FastTunnel项目致力于打造一个易于扩展、易于维护的内网穿透框架,任何人都可以基于该框架二次开发,你可以直接通过nuget安装依赖进行开发,当然它也是开箱即用的工具。

实现原理

《FastTunnel-内网穿透原理揭秘》

荣获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 (客户端可运行在内网任何一台设备上)

配置示例

用自定义域名访问内网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
      }
    ]
  }

如何去掉域名后的端口号

在服务器端部署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;
    }
}

配置端口转发

假设内网有一个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
      }
    ]
  }
CPP复制全屏

远程内网电脑

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

结语

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

有兴趣的可加qq群

 

出处:https://www.cnblogs.com/springhgui/archive/2021/07/13/15005329.html


该文章在 2024/6/1 16:43:26 编辑过
关键字查询
相关文章
正在查询...
点晴ERP是一款针对中小制造业的专业生产管理软件系统,系统成熟度和易用性得到了国内大量中小企业的青睐。
点晴PMS码头管理系统主要针对港口码头集装箱与散货日常运作、调度、堆场、车队、财务费用、相关报表等业务管理,结合码头的业务特点,围绕调度、堆场作业而开发的。集技术的先进性、管理的有效性于一体,是物流码头及其他港口类企业的高效ERP管理信息系统。
点晴WMS仓储管理系统提供了货物产品管理,销售管理,采购管理,仓储管理,仓库管理,保质期管理,货位管理,库位管理,生产管理,WMS管理系统,标签打印,条形码,二维码管理,批号管理软件。
点晴免费OA是一款软件和通用服务都免费,不限功能、不限时间、不限用户的免费OA协同办公管理系统。
Copyright 2010-2024 ClickSun All Rights Reserved