使用.NetCore开发的内网穿透工具
Go to file
2019-12-25 11:06:33 +08:00
.circleci Update config.yml 2019-12-24 18:55:02 +08:00
.github Update dotnetcore.yml 2019-12-21 14:52:46 +08:00
FastTunnel.Client 优化客户端感知 2019-12-25 10:11:58 +08:00
FastTunnel.Core 优化客户端感知 2019-12-25 10:11:58 +08:00
FastTunnel.Server 上传遗漏的文件 2019-12-21 13:43:28 +08:00
images 增加图片 2019-12-21 14:29:45 +08:00
.gitignore 优化客户端感知 2019-12-25 10:11:58 +08:00
FastTunnel.sln init project 2019-12-16 10:29:06 +08:00
LICENSE init project 2019-12-16 10:29:06 +08:00
README.md Update README.md 2019-12-25 11:06:33 +08:00

FastTunnel

PRs Welcome Gitter Build status License CircleCI

  • FastTunnel是一款内网络代理工具能够快速进行内网穿透。其核心原理是通过http代理所以使用的前提条件是
  1. 必须有一台公网的服务器。
  2. 拥有自己的域名。
  • 使用 .net core编写可运行于windows、mac、linux等平台。

已实现功能

  • 通过自定义域名访问部署于内网的 web 服务
  • 远程内网主机 linux/windows/mac

快速使用

测试服务器

ip `154.202.58.219`
已开端口号,括号内容为本端口的测试用途  
1270(httpProxy) 1271(bindPort) 1273(ssh) 1274(ssh) 1275(ssh)
域名解析
A *.ft.suidao.io
本服务器已运行 `FastTunnel.Server` 本地可以直接运行客户端连接  
nginx反向代理已开启web穿透可不加端口号1270即可直接访问。

配置服务端和客户端程序

  1. 分别在服务端和客户端PC上安装.net core runtime 运行时(v3.1及以上版本),根据不同操作系统选择对应的运行时安装程序。
  2. 在命令行输入 dotnet -v 检查运行时安装是否成功。
  3. 在 release 页面下载编译好的zip程序包,解压到任意目录。
  4. 分别修改客户端和服务端的配置文件 appsettings.json
  5. 在程序根目录下执行 dotnet FastTunnel.Client.dll(客户端)dotnet FastTunnel.Server.dll(服务端)。

通过自定义域名配置访问

  • 例如你拥有一个服务器公网ip地址为 110.110.110.110 ,同时你有一个顶级域名为 test.cc 的域名,你希望访问 test.test.cc可以访问内网的一个网站。
  • 你需要新增一个域名地址的DNS解析类型为A,名称为 * , ipv4地址为 110.110.110.110 ,这样 *.test.cc的域名均会指向110.110.110.110的服务器,由于FastTunnel默认监听的http端口为1270所以要访问http://test.test.cc:1270
  • 如果不希望每次访问都带上端口号,可以通过nginx转发实现。

远程内网计算机 Windows/Linux/Mac

客户端配置如下内网有两台主机ip如下:

 "ClientSettings": {
    "Common": {
      "ServerAddr": "xxx.xxx.xxx.xxx",
      "ServerPort": 1271
    },
    "SSH": [
      {
        "LocalIp": "192.168.0.100", // linux主机
        "LocalPort": 22,            // ssh远程默认端口号
        "RemotePort": 12701
      },
      {
        "LocalIp": "192.168.0.101", // windows主机
        "LocalPort": 3389,          // windows远程桌面默认端口号
        "RemotePort": 12702
      }
    ]
  }

ssh远程内网linux主机 (ip:192.168.0.100)

假设内网主机的用户名为 root服务器ip为x.x.x.x访问内网的两个主机分别如下

ssh -oPort=12701 root@x.x.x.x

mstsc远程桌面Windows主机(ip:192.168.0.101)

被控制端设置

  • 打开cmd输入指令 sysdm.cpl 在弹出的对话框中选中允许远程连接此计算机
    img1

控制端设置

  • 打开cmd输入指令 mstsc,打开远程对话框,在对话框的计算机输入框,输入 x.x.x.x:12701 然后指定用户名密码即可远程内网的windows主机
    img1

参与开发/PR

  • 安装 vs2019
  • 安装 dotnetcore runtime&sdk 3.1 或以上版本

License

Apache License 2.0