龙芯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:
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/FastTunnel/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为 {SubDomain}.{WebDomain}:{WebProxyPort}/
"WebProxyPort": 1270,
// 可选,ngixn反向代理后可省略域名后的端口号进行访问
"WebHasNginxProxy": false,
// 可选,访问白名单,不在白名单的ip拒绝,为空时所有人有权限访问
"WebAllowAccessIps": [],
// 可选,是否开启SSH,禁用后不处理SSH类型端口转发.默认false。
"SSHEnabled": true
}
}