👑 可能感兴趣 |
---|
🚀『可道云』内网穿透牛刀小试,会敲键盘就能搭建的私有云网盘 |
📣读完这篇文章里你能收获到
- 全程无坑!!动手搭建属于自己的内网穿透平台
- 了解内网穿透的概念以及认识开源工具FastTunnel
- 不通过第三方工具即可直接远程自己家里或者公司的电脑
文章来源:https://www.toymoban.com/news/detail-449420.html
一、概念篇
1 什么是内网穿透?
对于大部分人来说,自己家里的宽带是没有公网IP的。如果你想让公网上任何人都可以访问你内网的应用,则必须要采取一些手段,内网穿透在这种背景下应运而生。
2 FastTunnel是什么?
FastTunnel是用.net core
开发的一款跨平台内网穿透工具,它可以实现将内网服务暴露到公网供自己或任何人访问。
与其他穿透工具不同的是:FastTunnel项目致力于打造一个易于扩展、易于维护的内网穿透框架,任何人都可以基于该框架二次开发,你可以直接通过nuget安装依赖进行开发,当然它也是开箱即用的工具。
3 FastTunnel能够做什么?
- 家中建站
- 远程桌面
- 代码仓库
- 端口转发
- 可结合其他开源的项目实现个人的私有云,后续文章会进行讲解
二、源码篇
1 源码地址
- GITEE:https://gitee.com/Hgui/FastTunnel
- GITHUB: https://github.com/SpringHgui/FastTunnel
- 官网:https://suidao.io
2 源代码结构
- FastTunnel.Api:提供对外API接口
- FastTunnel.Core:核心模块
- FastTunnel.Client:客户端
- FastTunnel.Server:服务端
三、实操篇
1 在Relese页下载对应的发布包
备注:此处为演示,因此直接选择发布包部署,熟悉
.NET
的建议直接编译源码部署
- https://gitee.com/Hgui/FastTunnel/releases
2 服务端搭建.NET运行环境
根据微软官方页面下载安装.Net6运行环境 Install .NET on CentOS - .NET | Microsoft Docs
- 在安装.NET6 之前,运行以下命令将Microsoft包签名密钥添加到受信任密钥列表中,并添加Microsoft包存储库。打开终端并运行以下命令:
sudo rpm -Uvh https://packages.microsoft.com/config/centos/7/packages-microsoft-prod.rpm
- 安装.NET6 SDK可以使用.NET进行程序开发. 安装SDK之后,.NET运行环境也就安装好了.
sudo yum install dotnet-sdk-6.0
- 单独安装.NET运行环境的命令.
sudo yum install aspnetcore-runtime-6.0
- 检查.NET6安装情况
dotnet
3 服务端运行FastTunnel.Server
本示例的服务端为云服务器CentOS 7.x版本
- 将上面下载的服务端Relese包下载后上传到服务端并解压
- 本示例存放至
/home/FastTunnelServer
- 修改配置文件,进入
config/appsettings.json
{
"Serilog": {
"Using": [ "Serilog.Sinks.Console", "Serilog.Sinks.File" ],
"MinimumLevel": {
"Default": "Information",
"Override": {
"Microsoft": "Warning",
"Microsoft.Hosting.Lifetime": "Information"
}
},
"WriteTo": [
//{
// "Name": "File",
// "Args": {
// "path": "Logs/log-.log",
// "rollingInterval": 3
// }
//}
]
},
"AllowedHosts": "*",
// 是否启用文件日志输出
"EnableFileLog": false,
"FastTunnel": {
// 服务监听端口
"BinPort": 1270,
// 可选,绑定的根域名,
// 客户端需配置SubDomain,实现 ${SubDomain}.${WebDomain}访问内网的站点,注意:需要通过域名访问网站时必选。
"WebDomain": "",
// 可选,访问白名单,为空时:所有人有权限访问,不为空时:不在白名单的ip拒绝。
"WebAllowAccessIps": [],
// 可选,是否开启端口转发代理,禁用后不处理Forward类型端口转发.默认false。
"EnableForward": true,
// 可选,当不为空时,客户端也必须携带Tokens中的任意一个token,否则拒绝登录。
"Tokens": [ "TOKEN_FOR_CLIENT_AUTHENTICATION" ],
/**
* 访问api接口的JWT配置
*/
"Api": {
"JWT": {
"ClockSkew": 10,
"ValidAudience": "https://suidao.io",
"ValidIssuer": "FastTunnel",
"IssuerSigningKey": "This is IssuerSigningKey",
"Expires": 120
},
"Accounts": [
{
"Name": "admin",
"Password": "admin123"
}
]
}
}
}
- 启动服务端
chmod +x FastTunnel.Server
./FastTunnel.Server
4 客户端运行FastTunnel.Cient
本示例客户端为windows x64系统
- 将上面下载的服务端Relese包下载后解压
- 并修改配置文件
appsettings.json
{
"Serilog": {
"Using": [ "Serilog.Sinks.Console", "Serilog.Sinks.File" ],
"MinimumLevel": {
"Default": "Debug",
"Override": {
"Microsoft": "Warning",
"Microsoft.Hosting.Lifetime": "Information"
}
},
"WriteTo": [
//{
// "Name": "File",
// "Args": {
// "path": "Logs/log-.log",
// "rollingInterval": 3
// }
//}
]
},
"FastTunnel": {
"Server": {
// [必选] 服务端ip/域名(来自服务端配置文件的urls参数)
"ServerAddr": "xxx.xx.xx.x",//自己的服务器公网IP
// [必选] 服务端监听的通信端口(来自服务端配置文件的urls参数)
"ServerPort": 1270
},
// [可选],服务端Token,必须与服务端配置一致,否则拒绝登录。
"Token": "TOKEN_FOR_CLIENT_AUTHENTICATION",
/**
* [可选] 内网web节点配置
*/
"Webs": [
],
/**
* [可选] 端口转发 通过专用端口代理,不需要有自己的域名
* 可穿透所有TCP上层协议
* 远程linux示例:#ssh -oPort=12701 {root}@{ServerAddr} ServerAddr 填入服务端ip,root对应内网用户名
* 通过服务端返回的访问方式进行访问即可
*/
"Forwards": [
{
"LocalIp": "127.0.0.1",
"LocalPort": 8088, // mysql数据库默认端口
"RemotePort": 1276 // 访问 服务端ip:1276 即可连接内网的服务
}
]
}
}
- 启动客户端
5 远程内网电脑
- windows:需要配置windows可远程,另外需要将上一步中的8088端口换成3389,通过cmd的mstsc命令即可远程连接
- linux:只需要将上一步中的8088端口换成22
四、总结篇
1 查看效果
- 打开http://{服务端公网IP}:1276
- 此处的1276端口是上述例子中客户端配置的端口映射
文章来源地址https://www.toymoban.com/news/detail-449420.html
2 结束语
- 本次实操其实遇到了很多坑,网上资料步骤也都不齐全,包括官方的文档,服务端采用Docker部署也报错,总之跟着我的步骤走,其实已经带你避免我踩的坑了
- 此次主要是用到了其端口映射这部分功能,其实这个工具还可以配置域名映射,只需要在客服端的Webs配置下即可,这部分官方文档说得也比较清楚
- 如果对于配置或者使用有不理解的地方亦或者实操中遇到坑,欢迎留言或者私信共同探讨
到了这里,关于『FastTunnel』荣获GVP的开源内网穿透工具,动手搭建属于自己的内网穿透平台的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!