基于FastTunnel在windows的内网穿透
内网穿透 基于FastTunnel在windows平台部署
嵌入式学习交流Q群 679912988
内网穿透 基于FastTunnel在windows平台部署
内网穿透简介
内网穿透(NAT穿透)是一种技术,它允许外部网络访问位于内网(局域网)中的设备或服务。
例如家中路由器下的设备是没有公网IP的,出门后不能够直接访问家中的电脑等网络设备,只能通过第三方软件或服务来实现连接。
而内网穿透就是通过端口映射,隧道技术,中继转发,实现公网对家中路由器下的内网设备进行访问。
FastTunnel简介
FastTunnel是一款高性能跨平台内网穿透工具,使用它可以实现将内网服务暴露到公网供自己或任何人访问。
与其他穿透工具不同的是,FastTunnel项目致力于打造一个易于扩展、易于维护的内网穿透框架。
你可以通过引用FastTunnel.Core的nuget包构建出自己的穿透应用,并针自己所需的业务扩展功能。
项目地址 https://github.com/FastTunnel/FastTunnel
项目文档 https://docs.opentask.run/docs/fasttunel/getting-started
大致的原理就是通过拥有公网IP的设备作为跳板,达到让内网设备已配置的端口拥有公网IP的能力。
FastTunnel部署
通过实现外网访问内网的 Windows 电脑远程桌面服务来展示部署过程。
具体要求
- 拥有公网IP的 Windows 系统的服务器设备(如阿里云ECS示例),运行FastTunnel.server作为跳板。
- 路由器下的内网的 Windows 系统的客户端设备(如公司里的电脑),运行FastTunnel.client作为被访问的对象。
- 不在同一内网的 Windows 系统的测试设备(如家里的电脑),什么都不需要安装。
要求在公司里面的电脑能够通过 windows 自带的远程桌面连接,访问家里的电脑
前期准备
这里我选择的版本是v2.1.1
服务器设备下载 FastTunnel.Server.win-x64.tar.gz
客户端设备下载 FastTunnel.Client.win-x64.tar.gz
测试设备无需下载
地址链接 https://github.com/FastTunnel/FastTunnel/releases
服务器部署
服务器设备即云服务器实例下载FastTunnel.Server.win-x64.tar.gz后, 解压修改config目录下的appsettings.json文件,修改内容如下
{
"Serilog": {
"Using": [ "Serilog.Sinks.Console", "Serilog.Sinks.File" ],
"MinimumLevel": {
"Default": "Information",
"Override": {
"Microsoft": "Warning",
"Microsoft.Hosting.Lifetime": "Information"
}
},
"WriteTo": [
]
},
"AllowedHosts": "*",
// 是否启用文件日志输出
"EnableFileLog": false,
"FastTunnel": {
// 服务监听端口
"BinPort": 1270,
// 可选,绑定的根域名,
// 客户端需配置SubDomain,实现 ${SubDomain}.${WebDomain}访问内网的站点,注意:需要通过域名访问网站时必选。
"WebDomain": "xiaopijiang.cc",
// 可选,访问白名单,为空时:所有人有权限访问,不为空时:不在白名单的ip拒绝。
"WebAllowAccessIps": [ ],
// 可选,是否开启端口转发代理,禁用后不处理Forward类型端口转发.默认false。
"EnableForward": true,
// 可选,当不为空时,客户端也必须携带Tokens中的任意一个token,否则拒绝登录。
"Tokens": [ "TOKEN_FOR_CLIENT_AUTHENTICATION" ],
}
}
- FastTunnel.BinPort 是FastTunnel内部服务器与客户端的连接通讯使用的端口
- FastTunnel.Tokens 相当于是FastTunnel客户端连接服务器时的密码
双击运行FastTunnel.Server.exe 成功运行后如下图所示
客户端部署
客户端设备即公司电脑下载FastTunnel.Client.win-x64.tar.gz后, 解压修改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": "yulc.fun",
// [必选] 服务端监听的通信端口(来自服务端配置文件的urls参数)
"ServerPort": 1270
},
// [可选],服务端Token,必须与服务端配置一致,否则拒绝登录。
"Token": "TOKEN_FOR_CLIENT_AUTHENTICATION",
/**
* [可选] 内网web节点配置
*/
"Webs": [
{
// [必选] 内网站点所在内网的ip
"LocalIp": "127.0.0.1",
// [必选] 内网站点监听的端口号
"LocalPort": 8090,
// [必选] 子域名, 访问本站点时的url为 http://${SubDomain}.${WebDomain}:${ServerPort}
"SubDomain": "test"
// [可选] 附加域名,需要解析CNAME或A记录至当前子域名
// "WWW": [ "www.abc.com", "test111.test.cc" ]
}
],
/**
* [可选] 端口转发 通过专用端口代理,不需要有自己的域名
* 可穿透所有TCP上层协议
* 远程linux示例:#ssh -oPort=12701 {root}@{ServerAddr} ServerAddr 填入服务端ip,root对应内网用户名
* 通过服务端返回的访问方式进行访问即可
*/
"Forwards": [
{
// [必选] 内网服务所在主机ip
"LocalIp": "127.0.0.1",
// [必选] 内网服务监听端口 windows远程桌面端口为3389
"LocalPort": 3389,
// [必选] 服务端端口 访问 服务端ip:1274 即可实现远程window桌面
"RemotePort": 20000,
// [可选] 通讯协议,可选值TCP,UDP,默认值TCP
"Protocol": "TCP"
},
{
"LocalIp": "127.0.0.1",
"LocalPort": 8080, // mysql数据库默认端口
"RemotePort": 1275 // 访问 服务端ip:1275 即可连接内网的mysql服务
},
{
"LocalIp": "127.0.0.1",
"LocalPort": 80, //
"RemotePort": 21222
}
]
}
}
- FastTunnel.Server.ServerAddr 是FastTunnel服务器的公网IP地址或域名
- FastTunnel.Server.ServerPort 是FastTunnel服务器的端口,和服务器的配置FastTunnel.BinPort相同
- FastTunnel.Tokens 相当于是FastTunnel客户端连接服务器时的密码,匹配服务器的配置FastTunnel.Tokens其中一个即可
- FastTunnel.Forwards.LocalIp 本地需要被透传的IP 本机为127.0.0.1
- FastTunnel.Forwards.LocalPort 本地需要被透传的端口 远程桌面端口为3889
- FastTunnel.Forwards.RemotePort 映射到服务器的端口 20000 也就是说访问 yulc.fun:20000 等价于 访问127.0.0.1:3389
双击运行FastTunnel.Client.exe 成功运行后如下图所示
测试设备登录
测试设备即家里电脑打开远程桌面连接,输入服务器ServerAddr:客户端RemotePort 即可访问公司电脑
成功运行后如下图所示
补充说明
错误的配置json格式,会导致运行时的闪退,请仔细检查逗号等标点符号
使用内网穿透暴露3389端口的,一定要注意,电脑的密码一定要设置复杂一点,避免被黑客破解计算机登录密码,造成损失。
使用内网穿透暴露3389端口的,一定要注意,电脑的密码一定要设置复杂一点,避免被黑客破解计算机登录密码,造成损失。
使用内网穿透暴露3389端口的,一定要注意,电脑的密码一定要设置复杂一点,避免被黑客破解计算机登录密码,造成损失。
搭配开机自动运行进程守护脚本,YYDS!
火山引擎开发者社区是火山引擎打造的AI技术生态平台,聚焦Agent与大模型开发,提供豆包系列模型(图像/视频/视觉)、智能分析与会话工具,并配套评测集、动手实验室及行业案例库。社区通过技术沙龙、挑战赛等活动促进开发者成长,新用户可领50万Tokens权益,助力构建智能应用。
更多推荐
所有评论(0)