龙芯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

测试龙芯 LoongArch .NET之 使用 FastTunnel 做内网穿透远程计算机的更多相关文章

  1. ngrok内网穿透(微信调试:只试用于微信测试账号)

    一.简介 ngrok:https://ngrok.com 功能:就是把外网地址映射到本地的内网地址 缺点: 1.免费版生成的域名是随机的(由于我是用于调试,就没什么关系,如果是正式生产环境可能需要一个 ...

  2. 龙芯fedora28日常生存指南

    2021-01-30 v0.0.5 从0.0.1开始改了非常多,一月余时间的花费渴望为其他人提供一点帮助,能够快速上手. 这主要是这一年来我从3B1500到3A4000再到福珑2的日常使用记录,是之前 ...

  3. [转帖]龙芯3A/3B3000通用处理器出货超30万 获得“中国芯”大奖

    龙芯3A/3B3000通用处理器出货超30万 获得“中国芯”大奖 http://www.eetop.cn/cpu_soc/6946247.html 2019.10 的新闻 出后量 30万 我们贡献了 ...

  4. 内网服务器设置NAT123端口映射,方便外网连接;如何测试端口连通情况。

    一.nat123设置端口映射. 1)首先去nat123官网注册账号. http://www.nat123.com/ 2)下载nat123客户端 http://www.nat123.com/Pages_ ...

  5. 龙芯 3A4000 安装 Debian stable

    2022-01-17 版权声明:原创文章,未经博主允许不得转载 3A5000 开始,龙芯转向 loongarch ,新的架构虽然甩掉了历史包袱,但也需要一段时间来积累生态.在这半年多的时间里, loo ...

  6. 在龙芯小本上安装Debain8.10

    (图片是LEMOTE8089D笔记本,来自互联网) YX原来送了一个LEMOTE笔记本给我.CPU是首款真正的国产,龙芯2F,兼容mips的指令集. 笔记本原来的操作系统是Debian6,后来升级到了 ...

  7. 使用U盘为龙芯笔记本安装操作系统

    摘要:在没有光驱的情况下,可以使用dd命令或者ultraISO软件制作Linux安装U盘,方法适合龙芯和X86.AMD64的设备. 前段时间,由于开发需要,拿到了一部龙芯3A3000的笔记本.出厂的安 ...

  8. [转帖]全国产 台式机/笔记本/服务器都有 方正龙芯3A3000整机三连发

    台式机/笔记本/服务器都有 方正龙芯3A3000整机三连发 2019年03月29日 17:17 4171 次阅读 稿源:快科技 7 条评论 https://www.cnbeta.com/article ...

  9. [转帖]龙芯下一代处理器微结构GS464E细节曝光

    龙芯下一代处理器微结构GS464E细节曝光 [日期:2015-05-26] 来源:Linux公社  作者:Linux [字体:大 中 小] http://www.linuxidc.com/Linux/ ...

随机推荐

  1. windows10下JDK9的环境配置

    JDK版本:jdk-9.0.4_windows-x64_bin.exe windows版本:windows10 专业版 64位 需要在系统变量中新建如下3个变量: JAVA_HOME=jdk安装路径J ...

  2. Task02:基础查询与排序

    2.1 SELECT语句基础 2.1.1 从表中选取数据 SELECT语句 从表中选取数据时需要使用SELECT语句,也就是只从表中选出(SELECT)必要数据的意思.通过SELECT语句查询并选取出 ...

  3. 空闲时间研究一个小功能:winform桌面程序如何实现动态更换桌面图标

    今天休息在家,由于天气热再加上疫情原因,就在家里呆着,空闲时想着,在很早以前(约3年前),产品人员跟我提了一个需求,那就是winform桌面程序的图标能否根据节日动态更换,这种需求在移动APP上还是比 ...

  4. Redis 面试题 - 收藏版 (持续更新、吐血推荐)

    文章很长,建议收藏起来,慢慢读! 疯狂创客圈为小伙伴奉上以下珍贵的学习资源: 疯狂创客圈 经典图书 : <Netty Zookeeper Redis 高并发实战> 面试必备 + 大厂必备 ...

  5. Java JDK 动态代理(AOP)使用及实现原理分析

    一.什么是代理? 代理是一种常用的设计模式,其目的就是为其他对象提供一个代理以控制对某个对象的访问.代理类负责为委托类预处理消息,过滤消息并转发消息,以及进行消息被委托类执行后的后续处理. 代理模式U ...

  6. [翻译]Go与C#对比 第三篇:编译、运行时、类型系统、模块和其它的一切

    Go vs C#, Part 3: Compiler, Runtime, Type System, Modules, and Everything Else | by Alex Yakunin | S ...

  7. SpringCloud-OAuth2(四):改造篇

    本片主要讲SpringCloud Oauth2篇的实战改造,如动态权限.集成JWT.更改默认url.数据库加载client信息等改造. 同时,这应该也是我这系列博客的完结篇. 关于Oauth2,我也想 ...

  8. 如何利用Python计算景观指数AI

    可使用工具包 pylandstats 此工具包基本是根据fragstats形成的,大部分fragstats里面的景观指数,这里都可以计算.但是,还是有一小部分指数这里没有涉及. LS_METRICS ...

  9. ShardingSphere 看这一篇就够了

    1.什么是shardingSphere ​ Apache ShardingSphere 是一套开源的分布式数据库中间件解决方案组成的生态圈,它由 JDBC.Proxy 和 Sidecar(规划中)这 ...

  10. vue3,后台管理列表页面各组件之间的状态关系

    技术栈 vite2 vue 3.0.5 vue-router 4.0.6 vue-data-state 0.1.1 element-plus 1.0.2-beta.39 前情回顾 表单控件 查询控件 ...