先声明:本文是踩坑记录,我仍然还有很多问题没解决,仅供参考,切勿用于非法目的。

又是一个记录性质的东西,也是太复杂了,我怕不写点什么就忘了……

事情的起因是前两天接到了“花生壳”给我打的电话,我一开始还挺意外,贝锐的账户注册17年了,一直好像也没接到什么电话,这次来难道是老用户福利?简单寒暄之后,说他们看我的服务即将到期了,如果想要续费的话,联系客服可以享受“特大”(这个特大是我加的)优惠,说可以买五年送五年。

当时我和我的小朋友都惊呆了,啥年代了,还敢放这么长的卫星啊,先不说啥条件和情况敢一下续费10年,最关键的问题是,我怎么敢相信对方公司10年后还在。我当即也说了这些,可能对方也只准备了这个优惠,看我没什么想法,就快速的结束了通话。

不过这倒是提醒了我,之前为了家里下载方便,所以需要一个内网穿透的服务,所以就斥巨资买了花生壳的服务。专业版加上一些额外的带宽包,一年933元。使用感觉来说,其实这一年用的次数和机会不太多,所以这个价格对于我来说是比较亏的。从个人使用体验上来讲,我也觉得一般,比较明显的是感觉页面打开速度比较慢。当然,好处就是使用简单,都是成熟软件了,开箱即用,配置简单,比稍后要说的自己折腾要好的多了。

也顺手看了一眼,同样是贝锐旗下的远程控制软件——向日葵,目前到2025年年底到期。这个买的比较早了,在TeamViewer收紧了免费版的使用以后,付费价格离谱,再加上当时还没有ToDesk的竞争,向日葵就几乎成了国内唯一的选择。我记得当年好像不仅限制带宽什么的,最关键的是还限制设备数量,所以只能付费买会员。

所以眼瞅着各个服务又要到期,我就想着有没有什么免费可以替代的产品呢?

什么是内网穿透?

字数不太够,先简单啰嗦一下为什么需要花生壳和向日葵这样的软件。

软件使用上的方便这个暂且不聊了,核心是中国的网络环境比较特殊。大部分情况下家用宽带都很难拿到公网IP地址,我们公司的二手转售宽带也同样拿不到公网IP,所以导致如果你想要连接家里的NAS之类的或者公司的设备就比较困难。当然这可能也有网络安全方面的考虑。

https://service.oray.com/question/5571.html

这个我借用一下花生壳官方文档的教程图片,作为一个半吊子爱好者,反正我的理解就是,NAT也就是拿不到公网IP的用户,住的就像是楼房,所对应的公网IP地址并不是指的某个具体的用户,而是这个单元所有人都用这个IP地址。如果别人想要来主动连接你,那数据包到了楼下就懵了,不知道这个到底找的是谁。而公网IP像是别墅,就这么一家。所以NAT用户如果想要实现比如我不在家控制家里的电脑或者远程下达下载指令,就只能通过一个有公网IP的服务或者服务器,来搭建一个桥梁,我这边访问端和家里的设备都统一去这个桥上见面,交换数据就好了。这大概就是内网穿透技术的原理。

但是在自己家里的局域网环境中,每个在局域网的设备所获取的类似于192.168.10.XXX这样的IP地址,在局域网范围来看,其实每个设备也都是“公网IP”,在局域网内连接比如自己的Windows电脑之类的,可以直接用微软官方的远程桌面软件,简直是又快又流畅。所以这个概念又是相对的。

我们这次聊的还是第一种情况,就是你家里或者公司的宽带本身无法获取公网IP,但是你又需要在外面远控家里的电脑或者访问NSA上的内容。访问速度方面,除了中转服务器的带宽、访问者的网络情况之外,被访问端口也就是比如在家的设备,网络的快慢也有影响。

所以无论是搭建内网穿透还是远程控制,我们都先需要一台有公网IP的服务器。之前写对于我自己的服务器进行降本增效的时候,

https://www.chenhao.net/p/fuwuqihebing.html合并了几台服务器,其中一台是腾讯云的新出的200M峰值带宽的轻量云,感觉这个比较合适。非要说个问题的话,那就是内存仍然不够大,现在所有的业务都搬上去之后,内存占用已经都73%左右了,感觉不太好。倒是还有更高配置,2核8G版本,各种优惠折扣下来估计每个月要81.21,比4G内存要平均55元高大概30%的价格,感觉不太划算……不过我还在纠结,只是看目前的状态应该不用再升了。

自己搭建内网穿透——Frp

这个教程最多只能让启动起来,怎么用我现在也是一头雾水。

这个软件分为服务端和客户端两个部分,我一开始看的教程,都以为大家用的都是最新版,下的也是最新版,结果这个参数是怎么调都用不了。后来才发现,因为我的服务器是Windows的,而且因为一会儿要用的那个桌面版的客户端,版本不能太新。而Frp官方关于i386架构最后一个版本是2023年08月发布的V0.51.3版本。而且这个老版本可能比较好的支持ini的配置文件,虽然官方已经不再推荐ini的配置文件,但是架不住网上的教程可能比较多……

下载的压缩包内同时包含服务端和客户端,frpc是客户端,frps是服务端,可能是c是客户端Client的首字母,s是服务端Server的英文首字母,别弄反了。

服务端

服务端frps.ini配置文件的代码:

[common]
bind_port = 7000
method = token
token = XXXX
vhost_http_port = 80
vhost_https_port = 443
subdomain_host = "XXX.XXX"

如果你需要一个https访问的形式的话,需要配置vhost_http_port、vhost_https_port和subdomain_host域名,如果不需要的话,只填写三个就可以了。token是密码,随机生成一个就行。

然后打开命令提示符,先cd命令进入frp所在的目录,注意目录改成自己所在的目录啊

cd c:\frp

然后继续输入命令,启动服务端

frps.exe -c frps.ini

服务端就完事了,虽然能不能很好的运行不知道,但是这是反复尝试之后,终于能启动起来的办法了……

不过目前的问题是,还要持续开着CMD,好像有办法可以转成系统服务后台运行,但是还没尝试。

客户端

服务端之所以要用一个很老的版本,是因为配置的过程实在是比较麻烦,所以有大佬开发了一个Frpc Desktop的软件,但是这个软件只能用客户端,不能用于服务端,可以可视化配置客户端的设置,也足够了。

仓库地址:https://github.com/luckjiawei/frpc-desktop

下载打开之后,软件内置了版本的下载,不过下载源来自Github,你可能需要点办法才能顺利从这个软件上下载frp。

下载完毕之后,服务器地址、端口、令牌,按照设置的服务端配置来就行,其他默认。软件自己本身也提供了开机自启动、静默启动、自动连接的功能,按需打开。

具体的穿透列表,tcp的类型是最简单的,名称如果你有多个任务的话,我建议还是起一个能区分出来,可能后续有问题查日志也好知道是哪个有问题。如果不在乎也可以随机生成一个就行。内网地址是本地的服务地址,比如nas的IP地址是192.168.0.5:5000,那就用这个填写到对应的内网地址和内网端口上。外网端口是你在外访问的时候要加的端口号,比如xxx.xxx:7002,不过注意上面下面所说的所有端口注意在服务器端的防火墙放开,不然肯定连不通……

简单的配置就是这样了,现在的问题是我想不通为什么https只能配置一个域名,我的通配符证书少了一点用武之地。

=====

2025年3月15日更新,我放弃了!!!改用了成熟的解决方案!

在服务端,我实在是无法解决程序运行变为服务的问题,就是一直有个命令提示符在运行着看着很烦。而且原来那台云服务器上已经有了不少的应用,内存占用比较高,所以思来想去还是通过1Panel面板来安装服务端,客户端不变。

=====

目前的问题是,还没有办法很好的配置https分流,如果本地多个服务,一个客户端现在弄不了,还是只能多端口分流,挺奇怪的问题……

自己搭建远程控制服务——RustDesk

内网穿透搞定了之后,接下来就是远程控制了。这个服务端安装的方式比较多,我最早是在1Panl上的软件商店看到这个软件的,所以才知道还能这样玩。

首先还是要安装服务端,具体的安装方法官网的教程写的是比较详细的,https://rustdesk.com/docs/zh-cn/self-host/rustdesk-server-oss/windows/

我用的是PM2的安装方法,因为看起来比较简单,只不过代价是还需要安装一个node.js。

1、先下载node.js,官网给的就是下面的链接,可能对版本也有一定的要求。

https://nodejs.org/dist/v16.14.2/node-v16.14.2-x86.msi

2、安装完成之后,我们又要打开熟悉的命令提示符CMD了。下列三个命令提示符代码,分别粘贴到命令提示符里面,每一个代码都要粘贴完毕之后回车执行完毕之后,再执行下一个。

npm install -g pm2
npm install pm2-windows-startup -g
pm2-startup install

反正看起来就是在安装一些东西。

3、下载服务端程序

https://github.com/rustdesk/rustdesk-server/releases

展开看看有Windows就是了,如果最新版本没有,可能要看看老版本有没有。下载下来之后,解压到一个简单的目录下面,可能也方便管理和复制出来的路径短一点……启动了之后就无法挪位置了,我有点后悔我放的目录名字有点太长了。当然可能我还没掌握如何停止服务?

完成之后,分别继续打开命令提示符。注意c:\rustdesk-server-windows-x64只是一个示例,修改成自己的。

cd c:\rustdesk-server-windows-x64
pm2 start hbbs.exe
pm2 start hbbr.exe
pm2 save

4、上面的步骤完成之后,在服务端放置的目录里,会出现两个文件,id_ed25519.pub和id_ed25519,反正是一对密钥,具体不重要。打开id_ed25519.pub这个文件,里面会出现一堆字符,记录一下一会要用。

5、服务器防火墙开放以下端口:

TCP(21115, 21116, 21117, 21118, 21119)

UDP(21116)

注意21116端口是TCP和UDP都要打开,其他都只是TCP就行了。

6、服务端的部分已经完事了,接下来是客户端的。

https://rustdesk.com/zh-cn/

访问官网,根据自己客户端的系统下载对应版本的客户端,打开之后点击设置-网络-解锁网络设置

再点击ID/中继服务器,ID服务器的部分输入服务器的IP地址,Key就是刚刚那个密钥复制下来的字符串,粘贴进去,点确认就完事了。

到此所有的配置就完事了,你就可以正常的使用软件来远控电脑了,其他的客户端也遵循这样的配置就可以了,配置起来略有麻烦,但是目前实测下来可能服务器离得比较近,而且带宽比较高,感觉使用起来的流畅程度比向日葵还好多了……

唯一的不方便可能就是,像是向日葵或者todesk之类的应用都有账号体系,不同的电脑绑定上去之后,像是有了个通讯录,连接各个电脑比较方便。但是这个没有这个功能,可能需要你自己找个地方把每天电脑不同的id记录一下,方便之后在没有登录过的电脑上登录。

总结

感觉自己又能省掉一点花销了,真棒!