前言
最近看到阿里云还有免费试用云服务器的名额,300块试用三个月,立马就心动了去搞了一个。一开始用的是2核2G的,但是感觉内存太小了不够用,毕竟之前搭个网站都花了差不多1.5G,就想着试试好一些的。最终选择了2核4G的类型,100兆网络按流量收费,前20GB免费。
刚拿到的时候不知道干啥好,毕竟临时的服务器搭网盘吧,流量太小,搭ollama吧,没有gpu。思来想去就想到了搭建frp内网穿透的服务器。很久以前就想试试100兆超高带宽的威力了,能够跑满家里50-60m的上行带宽,比之前我那个小服务器3m的小水管大多了。
废话不多说,立马开干!
准备工作
搭建Frp的话还是很简单的,分为Frps和Frpc,也就是服务端和客户端。服务端就是搭建在有公网ip的服务器上,就比如说这次我使用的阿里云云服务器,有一个公网ip和100m的带宽。而客户端就是搭建在你所需要的机器上的,比如说你的主机,nas什么之类的。
服务端的搭建最好依托于一些linux的管理面板,比如说1Panal和青龙宝塔之类的。这次我选择的就是之前经常用的1Panal。直观易懂,一键下载,改配置文件也很方便。
步骤
1.在云服务商购买一个ecs服务器
阿里云对于认证个人用户有免费的300元额度,三个月期限,可以试用多种不同配置的阿里云服务器,最长的都可以用满3个月,公网带宽都是100mbps,对于frp来说都是够用的。每个月的免费流量是220GB,国内20GB加上国外200GB,超额会额外扣钱,要注意。
2.在服务器中,通过命令行中下载1Panal面板
命令行的话可以用云服务器在线自带的,也可以用第三方软件,如finalshell之类的。
具体你安装的系统命令是怎么样的就要看1Panal官方文档里面的安装命令,我的是ubuntu,就是下面这行:
curl -sSL https://resource.fit2cloud.com/1panel/package/quick_start.sh -o quick_start.sh && sudo bash quick_start.sh
1Panal官网安装命令
在过程中设置账号密码端口号,端口号什么的都可以默认,直接回车跳过,账号密码要自行设置一下比较方便。在设置完所有选项之后,1panal会弹出一个总体的信息,在之后不会再出现,里面包含了账号密码登录方式等信息,要截图保存下来。

1Panal安装完成的信息
3.登录1panal面板,下载并安装frp服务端(frps)
在应用商店——已安装中找到frp服务端,并进入安装目录,在data文件夹中找到frps.toml,打开就可以看到fprs的配置文件,等一下要进行修改,修改示例已经在下面了,可以参考一下。

frps默认安装设置

1Panal进入frps安装目录

frps配置文件
frps配置文件举例
bindAddr = "0.0.0.0" #全局监听
bindPort = 7000 #frps的监听端口(frpc要用)
auth.method = "token" #加密类型
auth.token = "abcdefg" #密钥内容
webServer.addr = "0.0.0.0" #全局监听
webServer.port = 7500 #frps管理面板端口
webServer.user = "admin" #管理面板用户名
webServer.password = "abcdefg" #管理面板密码
主要要记住bindPort和auth.token,这两个在之后的frpc,也就是frp客户端要用。
4.配置frpc
这个是要分情况的。nas套件形式,windows电脑,linux系统。
①Nas
如果是在nas中安装frpc,具体的配置格式如下:

frpc在nas套件中的配置文件
Frpc配置文件举例
serverAddr = "x.x.x.x" #frps服务器公网网址
serverPort = 7000 #frps设置的监听端口
auth.token = "abcdefg" #连接frps的密钥
[[proxies]]
name = "abc" #这个连接的昵称
type = "tcp" #这个连接的类型
localIP = "127.0.0.1" #这个连接的本地主机ip
localPort = 4848 #这个连接的本地端口
remotePort = 1557 #远程连接的映射端口
②Windows
如果你是在windows系统上使用,构建游戏服务器什么的话,可以去下载frpc的图形化软件,比如说GitHub - koho/frpmgr: A user-friendly desktop GUI client for FRP on Windows.这位大佬在github上开源的软件,就非常方便。
在连接frps的时候,要在左侧空白处右键,点击新建配置,填写名称和服务器地址,在上方选择认证一栏并选择类型,一般是token,下面填写密码就可以了。

frpc图形化客户端快捷配置

frpc图形化客户端基础配置
③Linux
对于linux上的配置就不多说了,无非就是启动的时候需要用到命令行。
linux下载的压缩包中时同时包含frps和frpc的,你只需要启动其中一个就可以了。**配置文件就在程序同样的文件夹里面,frpc的配置文件在nas和linux中都是相通的,直接复制过去按照需求修改就可以了。在官方文档中有更详细的说明和解释。
至于开机自启动之类的指令,请参照官方文档,因为时间原因就没有再去深究了QAQ
在文件夹中开启终端,输入以下内容,按需开启就可以了。
./frpc -c ./frpc.toml
./frpc -c ./frpc.toml
5.开放防火墙
找到云服务器的防火墙设置,叫什么开放端口或者是安全组什么的。点击_添加规则_,UDP/TCP,添加远程连接的端口号(remotePort),开放就可以了。
必须要开放三个端口:1panal管理面板,frpc通信端口(7000),frpc管理面板(7500),之这三个可能会不一样,比如说1Panal管理面板的端口就是随机的,另外两个也可以自己设置,就按照实际情况填。
之后要开放的就是你frpc设置的穿透,一个remotePort对应一个规则。

防火墙规则设置
乱七八糟的小贴士
frp优化
设置KCP/QUIC协议(基于udp的优化算法)降低延迟,提升传输效率。
这些在frp的官方文档中都有提到,在之后有机会的时候也会在这里补充。
各种远程连接的sunshine延迟
ps:以下数据都是使用手机流量测得的
zerotier异地组网:80-160ms
ipv6:70-130ms
自建frp:180-240ms
从数据可以看出,其实自建frp的延迟还是很大的,基本可以说是生活不能自理TT。**综合来看还是ipv6是最好的,但是也是需要ipv6的环境,所以说一般都做不到,除非用手机流量。当然,如果你在一个稳定的wifi环境中情况可能会好一些,不过我家wifi默认是开启ipv6的,所以说测试不了,不过我猜wifi中自建frp也好不到哪里去。
一些小问题
在frpc中,手机流量连接时,一旦用内网ip,如192.168.0.106,不是ddns解析过的域名,就会连接不上。**应该是流量所使用的大多是ipv6,而ipv6地址不能直接识别ipv4地址,域名解析之后会自动识别ipv6地址吧。
总结
FRP其实是一个功能全面的内网穿透和反向代理软件,这次尝试的只有简单的内网穿透,并不能发挥出全部的功能,还有很大的学问可以继续研究,等有机会的时候再看看吧QAQ。