前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >测试龙芯 LoongArch .NET之 使用 FastTunnel 做内网穿透远程计算机

测试龙芯 LoongArch .NET之 使用 FastTunnel 做内网穿透远程计算机

作者头像
张善友
发布2021-07-29 14:49:09
1.2K0
发布2021-07-29 14:49:09
举报
文章被收录于专栏:张善友的专栏张善友的专栏

龙芯3A5000 已经上市,与龙芯3A5000配套的三大编译器GCC、LLVM、GoLang和三大虚拟机Java、JavaScript、.NET均已完成开发,从老伙计哪里搞来一台3A5000 机器,安装统信UOS。 使用体验上看还可以,就是软件生态急需建设,软件生态的建设上自然有我dotnet 的一份力量。 龙芯团队已经完成了LoongArch 的.NET Core 3.1版本的研发,目前还没有正式对外发布,从龙芯兄弟们哪里拿到了一份当前版本的SDK,开启UOS的开发者模式,我们安装好龙芯.NET SDK, 拿个复杂点的应用来验证一下龙芯 LoongArch的.NET 的成色如何,迫切的需求就是机器的内网穿透,因此写成这篇文章。

在文章开始之前,我们先来看下龙芯LoongArch的.NET SDK情况:

user@user-PC:~$ dotnet --info .NET Core SDK (reflecting any global.json): Version: 3.1.111 Commit: a9538e031d Runtime Environment: OS Name: uos OS Version: 20 OS Platform: Linux RID: linux-loongarch64 Base Path: /home/user/workshop/dotnet/sdk/3.1.111/ Host (useful for support): Version: 3.1.11 Commit: f5eceb8105 .NET Core SDKs installed: 3.1.111 [/home/user/workshop/dotnet/sdk] .NET Core runtimes installed: Microsoft.AspNetCore.App 3.1.11 [/home/user/workshop/dotnet/shared/Microsoft.A spNetCore.App] Microsoft.NETCore.App 3.1.11 [/home/user/workshop/dotnet/shared/Microsoft.NETC ore.App] To install additional .NET Core runtimes or SDKs: http://www.loongnix.org/ Loongson's .NET version: 3.1.11-internal-rc001

RID是 linux-loongarch64,版本是3.1.11-internal-rc001。

使用.NET 开发的 开源端口映射工具有好几个:

https://github.com/yangan666/SuperNAT

https://github.com/SpringHgui/FastTunnel

https://github.com/hemaju/Wireboy.Socket.P2PSocket

https://github.com/xljiulang/HttpMouse

他们的最新版本都是5.0了,我们在龙芯3A5000 上面要部署的是Linux 客户端。上面这几个工具都可以满足要求,这里我选择了FastTunnel 来做测试,本文的演示需要三台计算机设备,其中一台是服务器,服务器拥有公网 ip 地址,使用的是腾讯云服务器,其中一台为龙芯3A5000 的开发机,将这台电脑的服务通过FastTunnel 对外发布。 另外测试的电脑可以是任何支持SSH的终端。

首先在腾讯云服务器上从 https://github.com/FastTunnel/FastTunnel/releases 下载解压缩 FastTunnel.Server 即可,在服务器端做一点配置,打开服务器端的 appsettings.json 文件,这就是服务器端的配置文件

{ "Logging": { "LogLevel": { // Trace Debug Information Warning Error "Default": "Trace", "Microsoft": "Warning", "Microsoft.Hosting.Lifetime": "Information" } }, "AllowedHosts": "*", "ServerSettings": { // 监听地址 "BindAddr": "0.0.0.0", // 监听端口 "BindPort": 8092, // 这是用来给 FastTunnel 连接的端口

// 绑定域名 "WebDomain": "fasttunnel.csharpkit.com",

// Http监听端口, 访问自定义域名站点时url为 http://{SubDomain}.{WebDomain}:{WebProxyPort}/ "WebProxyPort": 1270,

// 可选,ngixn反向代理后可省略域名后的端口号进行访问 "WebHasNginxProxy": false,

// 可选,访问白名单,不在白名单的ip拒绝,为空时所有人有权限访问 "WebAllowAccessIps": [],

// 可选,是否开启SSH,禁用后不处理SSH类型端口转发.默认false。 "SSHEnabled": true } }

以上是我的配置,我更改的部分就是 BindAddr 和 BindPort 两个值,还有自定义域名。此时我的腾讯云服务器将开放 8092 端口作为给 FastTunnel 客户端连接的端口。按照 FastTunnel 的设计,可以在客户端要求服务器端开放任意的其他端口给某个客户端使用

配置完成之后,dotnet FastTunnel.Client.dll 即可运行,如看到大概以下的内容就是运行成功

[root@VM_0_17_centos FastTunnel]# dotnet FastTunnel.Server.dll 2021-07-28 09:24:09,039 |WARN| Unable to bind to http://localhost:5000 on the IPv6 loopback interface: 'Cannot assign requested address'. 2021-07-28 09:24:09,122 |INFO| Now listening on: http://localhost:5000 2021-07-28 09:24:09,125 |INFO| ===== FastTunnel Server Starting ===== 2021-07-28 09:24:09,128 |INFO| 监听客户端 -> 0.0.0.0:10092 2021-07-28 09:24:09,130 |INFO| 监听客户端 -> 0.0.0.0:1270 2021-07-28 09:24:09,251 |INFO| Application started. Press Ctrl+C to shut down. 2021-07-28 09:24:09,252 |INFO| Hosting environment: Production 2021-07-28 09:24:09,252 |INFO| Content root path: /usr/local/FastTunnel

接下来是来配置客户端部分,在Windows 10上从FastTunnel源码编译一个通用的Linux客户端,拷贝到龙芯3A5000电脑,打开的 FastTunnel 客户端的 appsettings.json 文件,因为咱只是为了配置SSH 内网穿透而已,因此只需要修改服务器端公网 ip 和服务器端通信端口,和 SSH 的内容。如下面代码,需要更改部分我标记出来

{ "Logging": { "LogLevel": { "Default": "Debug", "Microsoft": "Warning", "Microsoft.Hosting.Lifetime": "Information" } }, "ClientSettings": { "Common": { // 服务端公网ip, 对应服务端配置文件的 BindAddr,支持域名 "ServerAddr": "123.207.20.135",

// 服务端通信端口,对应服务端配置文件的 BindPort "ServerPort": 8092 }, "Webs": [ { // 本地站点所在内网的ip "LocalIp": "127.0.0.1",

// 站点监听的端口号 "LocalPort": 80,

// 子域名, 访问本站点时的url为 http://{SubDomain}.{Domain}:{ProxyPort_HTTP}/ "SubDomain": "test", // test.test.cc

// 个人域名(需要解析域名A记录至服务的ip地址) "WWW": [ "www.abc.com","test111.test.cc" ] } ],

/** * ssh穿透,ssh访问内网主机 * 访问方式 #ssh -oPort=12701 {root}@{ServerAddr} * ServerAddr 填入服务端ip,root对应内网用户名 */ "SSH": [ { "LocalIp": "127.0.0.1", "LocalPort": 22, "RemotePort": 8073 }, { "LocalIp": "127.0.0.1", "LocalPort": 3389, // windows远程桌面端口为3389 "RemotePort": 1274 } ] } }

先修改服务端的 ip 地址,我的腾讯云的 ip 地址是 123.207.20.135 请将此值替换为你自己的服务器的 ip 地址。接着我在上面服务器端的配置里面写了 FastTunnel 开放的端口是 8092 因此需要在客户端设置和服务器端相同的值。从这里可以看到,服务器端设置的端口不是说给对外开放的,而只是给 FastTunnel 客户端用来连接使用的而已。接着为了设置客户端的SSH功能,还需要额外配置将本机的SSH服务端口开放。

接下来是在客户端配置连接到服务器端的哪个端口,也就是说服务器端对外开放的端口是由客户端决定的。如上面代码我设置了使用 8073 端口,以上配置的实现就是将 ServerAddr:RemotePort 映射到 LocalIp:LocalPort 地址,如上面配置是将 123.207.20.135:8073映射到相对本机的 127.0.0.1:22 端口

运行命令dotnet FastTunnel.Client.dll 然后即可将龙芯3A5000的SSH 开放出去了

user@user-PC:~/workshop/FastTunnel$ dotnet FastTunnel.Client.dll 2021/07/28 09:45:42.655|DEBUG|===== FastTunnel Client Start ===== 2021/07/28 09:45:43.601|DEBUG|通信已建立 2021/07/28 09:45:43.813|DEBUG|recive from server:{"MessageType":5,"Content":{"Ms g":"\n=====隧道已建立成功,可通过以下方式访问内网服务=====\n\n穿透协议 | 映射关系(公网=>内网)\n HTTP | http://test.fasttunnel.csharpkit.com:1270 => 127.0. 0.1:80\n HTTP | http://www.abc.com:1270 => 127.0.0.1:80\n HTTP | http://te st111.test.cc:1270 => 127.0.0.1:80\n TCP | fasttunnel.csharpkit.com:8073 => 127.0.0.1:22\n TCP | fasttunnel.csharpkit.com:1274 => 127.0.0.1:3389\n\n==== ================================================","MsgType":0}}

2021/07/28 09:45:43.945|INFO|From Server: =====隧道已建立成功,可通过以下方式访问内网服务=====

穿透协议 | 映射关系(公网=>内网) HTTP | http://test.fasttunnel.csharpkit.com:1270 => 127.0.0.1:80 HTTP | http://www.abc.com:1270 => 127.0.0.1:80 HTTP | http://test111.test.cc:1270 => 127.0.0.1:80 TCP | fasttunnel.csharpkit.com:8073 => 127.0.0.1:22 TCP | fasttunnel.csharpkit.com:1274 => 127.0.0.1:3389

d47b1a45cbbbf96dea98b7fba77d0df
d47b1a45cbbbf96dea98b7fba77d0df
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2021-07-28 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
云服务器
云服务器(Cloud Virtual Machine,CVM)提供安全可靠的弹性计算服务。 您可以实时扩展或缩减计算资源,适应变化的业务需求,并只需按实际使用的资源计费。使用 CVM 可以极大降低您的软硬件采购成本,简化 IT 运维工作。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档