FastTunnel是用.net core开发的一款跨平台内网穿透工具,它可以实现将内网服务暴露到公网供自己或任何人访问。与其他穿透工具不同的是:FastTunnel项目致力于打造一个易于扩展、易于维护的内网穿透框架,任何人都可以基于该框架二次开发,你可以直接通过nuget安装依赖进行开发,当然它也是开箱即用的工具。
相关优秀博文FastTunnel-内网穿透原理揭秘测试龙芯 LoongArch .NET之 使用 FastTunnel 做内网穿透远程计算机使用 FastTunnel 做内网穿透远程计算机桌面服务器
荣获GVP开源项目FastTunnel荣获开源中国2020最有价值开源项目
开源仓库地址github: https://github.com/SpringHgui/FastTunnelgitee: https://gitee.com/Hgui/FastTunnel官网:https://suidao.io
什么是内网穿透?一般来说,如果你在内网部署一个网站或应用,也只有处于内网之中的其他网络设备才能访问;但如果你想让公网上任何人都可以访问你内网的应用,则必须要采取一些手段,内网穿透在这种背景下应用而生。
FastTunnel能够做什么?家中建站微信开发远程桌面erp互通svn代码仓库端口转发iot物联网联机游戏等等场景,不局限以上搭建属于自己的内网穿透平台1.在仓库的 releases 页面下载对应的程序2.根据自己的需求修改客户端以及服务端配置文件appsettings.json3.服务端运行FastTunnel.Server4.客户端运行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 } ] }远程内网电脑windows:只需要将上一步中的3306端口换成3389,linux:只需要将上一步中的3306端口换成22
结语欢迎点赞+转发+关注!大家的支持是我分享最大的动力!!!