测试龙芯 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 % 的人关注了青少年数学之旅

LoadRunner Interview Questions

摘自:网络1. What is load testing? Ans. Load testing is to test that if the application works fine with the loads that result from large number of simultaneous users, transactions and to determine weather it can handle peak usage periods.2. Wha…

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…

SQL server 2000安装时提示我”以前的某个程序安装已在安装计算机上创建挂起的文件操作....”...

在运行窗口输入regedit,打开注册表编辑器,在HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\Session Manager中找到PendingFileRenameOperations,删除该键值(这个键值是安装程序暂挂项目,只要找到对应的应用程序清除…

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

编程之美 set 1 不要被阶乘吓倒

总结 1. 使用加法解决指数问题时, 可用背包问题的变形 2. 题目用到的公式和求解 1~N 中 1 出现的次数的公式类似 题目 1. 给定一个整数 N, 那么 N 的阶乘 N! 末尾有多少个 0 呢 2. 求解 N! 的二进制表示中最低位 1 的位置 思路 1. 第一道题相当于求解 N! 分别是 2^a 和 5 ^b, 第…

apache weblogic ssl linux,apache基于ssl配置weblogic(完结篇)

眼睛基本已经无大碍。今天使用apache连接weblogic,并使用ssl,终于完成,最终选用的方式是前端使用apache来进行ssl处理,weblogic只负责相关的业务处理。在apache一边,载入mod_ssl.so、mod_rewrite.so和mod_wl.so&#x…

×××祥解及其配置示例

转载于:https://blog.51cto.com/yaoyao/21464

动态的管理ASP.NET DataGrid数据列【转载】

在ASP.NET的DataGrid数据显示控件编程中,我们有几种方式可以增加DataGrid columns。其中最常见的方法是在web forms设计器中增加,通过在控件工具箱中拖访DataGrid控件到web设计页面,然后在属性生成器中增加Columns列;还有一种方式就是在HTML视…

MTD/MT/MDD/MD以及LIB/DLL之间的一些联系和问题

这个话题要从哪里说起呢。博主小白一个,最近调试程序时(WIN-MSVC)连一些基本问题都没弄懂,本着遇见问题一定要解决的原则,下面来说下MTD/MT/MDD/MD以及LIB/DLL之间的一些联系和问题:一 动态库DLL 静态库LIBMSVC中工程只有三种类型…

WPF开源项目:AIStudio.Wpf.AClient

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

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

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