测试龙芯 LoongArch .NET之 使用 FastTunnel 做内网穿透远程计算机
龍芯3A5000 已經(jīng)上市,從老伙計哪里搞來一臺3A5000 機(jī)器,安裝統(tǒng)信UOS。使用體驗(yàn)上看還可以,就是軟件生態(tài)急需建設(shè),軟件生態(tài)的建設(shè)上自然有我dotnet 的一份力量。龍芯團(tuán)隊(duì)已經(jīng)完成了LoongArch 的.NET Core 3.1版本的研發(fā),目前還沒有正式對外發(fā)布,從龍芯兄弟們哪里拿到了一份當(dāng)前版本的SDK,開啟UOS的開發(fā)者模式,我們安裝好龍芯.NET SDK, ?拿個復(fù)雜點(diǎn)的應(yīng)用來驗(yàn)證一下龍芯 LoongArch的.NET 的成色如何,迫切的需求就是機(jī)器的內(nèi)網(wǎng)穿透,因此寫成這篇文章。
在文章開始之前,我們先來看下龍芯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 開發(fā)的 開源端口映射工具有好幾個:
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 來做測試,本文的演示需要三臺計算機(jī)設(shè)備,其中一臺是服務(wù)器,服務(wù)器擁有公網(wǎng) ip 地址,使用的是騰訊云服務(wù)器,其中一臺為龍芯3A5000 的開發(fā)機(jī),將這臺電腦的服務(wù)通過FastTunnel 對外發(fā)布。另外測試的電腦可以是任何支持SSH的終端。
首先在騰訊云服務(wù)器上從?https://github.com/FastTunnel/FastTunnel/releases?下載解壓縮 FastTunnel.Server 即可,在服務(wù)器端做一點(diǎn)配置,打開服務(wù)器端的 appsettings.json 文件,這就是服務(wù)器端的配置文件
{
?? "Logging": {
???? "LogLevel": {
?????? // Trace Debug Information Warning Error
?????? "Default": "Trace",
?????? "Microsoft": "Warning",
?????? "Microsoft.Hosting.Lifetime": "Information"
???? }
?? },
?? "AllowedHosts": "*",
?? "ServerSettings": {
???? // 監(jiān)聽地址
???? "BindAddr": "0.0.0.0",
???? // 監(jiān)聽端口
???? "BindPort": 8092,??// 這是用來給 FastTunnel 連接的端口
??? // 綁定域名
???? "WebDomain": "fasttunnel.csharpkit.com",
??? // Http監(jiān)聽端口, 訪問自定義域名站點(diǎn)時url為?http://{SubDomain}.{WebDomain}:{WebProxyPort}/
???? "WebProxyPort": 1270,
??? // 可選,ngixn反向代理后可省略域名后的端口號進(jìn)行訪問
???? "WebHasNginxProxy": false,
??? // 可選,訪問白名單,不在白名單的ip拒絕,為空時所有人有權(quán)限訪問
???? "WebAllowAccessIps": [],
??? // 可選,是否開啟SSH,禁用后不處理SSH類型端口轉(zhuǎn)發(fā).默認(rèn)false。
???? "SSHEnabled": true
?? }
}
以上是我的配置,我更改的部分就是 BindAddr 和 BindPort 兩個值,還有自定義域名。此時我的騰訊云服務(wù)器將開放 8092 端口作為給 FastTunnel 客戶端連接的端口。按照 FastTunnel 的設(shè)計,可以在客戶端要求服務(wù)器端開放任意的其他端口給某個客戶端使用
配置完成之后,dotnet FastTunnel.Server.dll 即可運(yùn)行,如看到大概以下的內(nèi)容就是運(yùn)行成功
[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| 監(jiān)聽客戶端 -> 0.0.0.0:10092
2021-07-28 09:24:09,130 |INFO| 監(jiān)聽客戶端 -> 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 文件,因?yàn)樵壑皇菫榱伺渲肧SH 內(nèi)網(wǎng)穿透而已,因此只需要修改服務(wù)器端公網(wǎng) ip 和服務(wù)器端通信端口,和 SSH 的內(nèi)容。如下面代碼,需要更改部分我標(biāo)記出來
{
?? "Logging": {
???? "LogLevel": {
?????? "Default": "Debug",
?????? "Microsoft": "Warning",
?????? "Microsoft.Hosting.Lifetime": "Information"
???? }
?? },
?? "ClientSettings": {
???? "Common": {
?????? // 服務(wù)端公網(wǎng)ip, 對應(yīng)服務(wù)端配置文件的 BindAddr,支持域名
?????? "ServerAddr": "123.207.20.135",
????? // 服務(wù)端通信端口,對應(yīng)服務(wù)端配置文件的 BindPort
?????? "ServerPort": 8092
???? },
???? "Webs": [
?????? {
???????? // 本地站點(diǎn)所在內(nèi)網(wǎng)的ip
???????? "LocalIp": "127.0.0.1",
??????? // 站點(diǎn)監(jiān)聽的端口號
???????? "LocalPort": 80,
??????? // 子域名, 訪問本站點(diǎn)時的url為?http://{SubDomain}.{Domain}:{ProxyPort_HTTP}/
???????? "SubDomain": "test", // test.test.cc
??????? // 個人域名(需要解析域名A記錄至服務(wù)的ip地址)
???????? "WWW": [ "www.abc.com","test111.test.cc" ]
?????? }
???? ],
??? /**
????? * ssh穿透,ssh訪問內(nèi)網(wǎng)主機(jī)
????? * 訪問方式 #ssh -oPort=12701 {root}@{ServerAddr}
????? * ServerAddr 填入服務(wù)端ip,root對應(yīng)內(nèi)網(wǎng)用戶名
????? */
???? "SSH": [
?????? {
???????? "LocalIp": "127.0.0.1",
???????? "LocalPort": 22,
???????? "RemotePort": 8073
?????? },
?????? {
???????? "LocalIp": "127.0.0.1",
???????? "LocalPort": 3389, // windows遠(yuǎn)程桌面端口為3389
???????? "RemotePort": 1274
?????? }
???? ]
?? }
}
先修改服務(wù)端的 ip 地址,我的騰訊云的 ip 地址是 123.207.20.135 請將此值替換為你自己的服務(wù)器的 ip 地址。接著我在上面服務(wù)器端的配置里面寫了 FastTunnel 開放的端口是 8092 因此需要在客戶端設(shè)置和服務(wù)器端相同的值。從這里可以看到,服務(wù)器端設(shè)置的端口不是說給對外開放的,而只是給 FastTunnel 客戶端用來連接使用的而已。接著為了設(shè)置客戶端的SSH功能,還需要額外配置將本機(jī)的SSH服務(wù)端口開放。
接下來是在客戶端配置連接到服務(wù)器端的哪個端口,也就是說服務(wù)器端對外開放的端口是由客戶端決定的。如上面代碼我設(shè)置了使用 8073 端口,以上配置的實(shí)現(xiàn)就是將 ServerAddr:RemotePort 映射到 LocalIp:LocalPort 地址,如上面配置是將 123.207.20.135:8073映射到相對本機(jī)的 127.0.0.1:22 端口
運(yùn)行命令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èi)網(wǎng)服務(wù)=====\n\n穿透協(xié)議 | 映射關(guān)系(公網(wǎng)=>內(nèi)網(wǎng))\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:
=====隧道已建立成功,可通過以下方式訪問內(nèi)網(wǎng)服務(wù)=====
穿透協(xié)議 | 映射關(guān)系(公網(wǎng)=>內(nèi)網(wǎng))
?? 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
總結(jié)
以上是生活随笔為你收集整理的测试龙芯 LoongArch .NET之 使用 FastTunnel 做内网穿透远程计算机的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
                            
                        - 上一篇: 杀鸡焉用牛刀!放下Windbg,让dot
 - 下一篇: Blazor 事件处理开发指南