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

龙芯3A5000 已经上市,从老伙计哪里搞来一台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.Server.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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/300206.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

利用jquery给指定的table动态添加一行、删除一行

今天在项目中,刚好用到给指定的table添加一行、删除一行,就直接找google,搜出来的东西不尽如人意,不是功能不好就是千篇一律,简直浪费时间还不讨好,于是乎就自己动手封装个,现就把代码分享出来&…

求求你把输入法调小一点... | 今日最佳

全世界只有3.14 % 的人关注了青少年数学之旅

linux安装卷管理,Linux安装管理ISCSI卷(initiator端)

Internet SCSI(iSCSI)是一种网络协议,使用TCP/IP网络来传输SCSI协议。它是代替FC(Fibre Channel-based,光纤通道?) SAN的很好选Internet SCSI(iSCSI)是一种网络协议,使用TCP/IP网络来传输SCSI协议。它是代替FC(Fibre Channel-base…

Blazor 事件处理开发指南

翻译自 Waqas Anwar 2021年3月25日的文章 《A Developer’s Guide To Blazor Event Handling》 [1]如果您正在开发交互式 Web 应用程序,根据不同的应用程序事件和用户操作动态更新用户界面是十分常见的做法。这些操作会触发事件,而作为开发人员&#xff…

android 开源组件合集-UI篇(2013-11-07更新)

其实也算不上合集,只是将我经常用到的部分整理一下,如果您有好东西,也可以留言补充 1.actionbar http://actionbarsherlock.com/ https://github.com/JakeWharton/ActionBarSherlock (推荐) 2.下拉刷新pulltorefresh https://github.com/chrisbanes/Android-PullToRefresh 支持…

改变世界的5大常数,学过数学的人,这一辈子都不会忘记!

全世界只有3.14 % 的人关注了青少年数学之旅何谓数学?数学家Eduardo曾这样回答“数学是永恒,是真理,是一切的答案。”回首往昔数学始终伴随我们左右纵横交错的几何、繁琐复杂的运算难以求解的方程、无从下手的猜想......尽管在数学道路上有多…

创维linux进入工厂模式,创维电视怎么进入工厂模式?

满意答案zrwemshwt54推荐于 2019.11.03创维彩电进入与退出工厂模式方法的汇总一. D系列5D01机芯:进入:在遥控器屏显键的正下方,加装一个按键(SERVICE键),按该键即可进入工厂模式。退出: 按遥控器上的TV/AV键…

收到在微软商店购买的商品

今天收到了在微软商店购买的商品,送货速度真快,20号下的订单,今天就拿到了,这么快就从美国通过UPS快递到国内,现在的物流越来越发达了。我购买的商品是:1、WM USB Powered Speakers(USB扬声器)2、LifeCam V…

[导入]纹理拼接后的Wrap寻址

拼接后的纹理:正常的草地(不进行WRAP寻址):文章来源:http://blog.csdn.net/xoyojank/archive/2008/11/03/3212425.aspx转载于:https://www.cnblogs.com/xoyojank/archive/2008/11/04/1343671.html

自定义EventSource(一)EventCounter

之前的Counters都是系统内置的,我们只需在进程外,或进程内采集,然后交给专门的展示指标工具即可。本篇说一下自定义EventSource,来采集自己业务中,或自己产品中的指标收集方式。自定义EventSource是以EventCounters作为…

看完这些自动化原理图,有一种豁然开朗的感觉

全世界只有3.14 % 的人关注了青少年数学之旅机械动态图有的可以洞察工作原理,有的可以洞察结构,有的可以表达工作过程,不学机械的也能看得懂!今天的动态图总有一些你没有见过,相当棒!一、机械原理篇球齿机机…

WPF开源项目:AIStudio.Wpf.AClient

介绍Wpf客户端,AIStudio.Wpf.AClient软件架构本框架使用Prism做MVVM,优点咱就不说了,主要了容器注入,消息和DI,比自己写省很多事。网上有很多标准的MVVM的使用方法,但是没有形成一个系统级的框架。本框架从…

有一说一,确实。。 | 今日最佳

全世界只有3.14 % 的人关注了青少年数学之旅来源微博 月刊勇者KuMa君

linux一键启动,Linux一键启动、停止、重启Tomcat sh脚本

使用方式sh service-tomcat.sh {start|stop|restart} {si|cas|fr|all}#使用过程总配置一下即可属性名字#1、COMMANDPREFIX#2、APPS#3、APPS2#4、NAMES############################ 统一启动停止前缀 begin# 统一启动停止前缀 模块名称 tomcat7_si_20080COMMANDPREFIX"to…

颠覆认知!关于c²= b² + a²,你不知道的N个事实

全世界只有3.14 % 的人关注了青少年数学之旅数是什么?毕达哥拉斯会告诉你,数是众神之母,万物之源——节选自《数学之旅闪耀人类的54个数学家》一般人看来,勾股定理只存在于特定的三角形或几何图形中。但实际上,绝大多数…

TinyUI组件开发示例

2019独角兽企业重金招聘Python工程师标准>>> TinyUI实际上并不是一个具体的UI展现组件,它只是一个UI构建体系。它可以适应于各种HtmlCSSJS的体系架构中。 TinyUI主要解决下面的问题: UI中JS的引入与顺序,JS合并的问题 UI中css的…

一键搞定ASP.NET Core Web API幂等性

API的幂等性(Idempotent),是指调用某个方法1次或N次对资源产生的影响结果都是相同的。GET请求默认是幂等的,因为它只是查询资源,而不会修改资源。而POST请求默认是不幂等的,多次调用POST方法可能会产生不同…

你这么爱听歌,一定活得很难过吧 | 今日最佳

全世界只有3.14 % 的人关注了青少年数学之旅让笑声飞沙雕营长大象ROV全球第一最搞搞笑热门神吐槽朱莉生活日记

Web开发中的矢量绘图(vml,svg)处理和应用

为什么80%的码农都做不了架构师?>>> 前言 1991 年物理学家 Tim Berners-Lee 首次在因特网上发布了 HTML 的第一版描述规范文档。经过了 20 多年的发展,HTML 语言成为如今编程最为广泛的语言和互联网上采用最广的文档格式。虽然 HTML 发展十分…

C#新手该如何规划学习【学习路线指南】

花费了几天时间整理了C#学习路线图,可以说是纯野生C#程序员成长路线规划,在这里分享下,希望可以帮助到想从事C#开发的同学们。本人阅历尚浅,有些知识点可能分享不正确,希望广大网友评论区补充,我会同步修正…