小尹的经历

第一次接触这些东西是购买了正版的Minecraft,想着要和朋友远程联机一起撸生存,但是初出茅庐的我那时只懂局域网联机(大家在一起开个热点组个局域网,房主把端口打开就可以直接联机玩了),迫于无奈开始上网搜索应该如何远程联机,后面就认识到了内网穿透,也接触了Frp这个工具,但是刚开始我并没有亲自部署,而是遇上了Sakura Frp这个提供内网穿透服务的平台,他们还开发有图形化界面程序,使用很方便,站长很大方的为免费用户提供了免费的流量以及不差的国内节点,虽然只有10M带宽,对于MC联机来说也是绰绰有余了,非常感谢站长,并且这个网站到目前依然在提供服务。

但是本人后面又迷上玩服务器,碰巧又有了一台自己的国内的小内存的Nat服务器,刚好就利用其部署了一次Frp。可惜的是国内服务器对于本人来说用处不大,一个月过去之后我就没续费了,后面又碰巧发现校园网内网是没有做隔离的,大家在学校里面连上校园网也可以局域网联机,所以又是好长一段时间没有碰Frp以至于都忘了怎么部署。

暑假期间,我的朋友需要使用校园内网访问校园C语言题库,但是又碍于不能提前返校导致左右为难,作为有留校资格的我就想出了骚点子,用一个连上了校园网的香橙派部署了一个网页远程桌面(这个相当于是一个系统而且里面带有浏览器可以访问网页),然后把这个远程桌面用Frp内网穿透出去这样朋友在家里就可以访问,我有一台线路不错的香港服务器,本人在重庆,部署下来延迟能够接受,办公刷题什么的绰绰有余了,具体这个远程桌面怎么部署我可以在下一个文章里面介绍,不得不说这个东西还是蛮厉害的,也可以部署在你自己的服务器上。(其实这里可以直接用校园网的VPN,但是还是折腾好玩啊!!!)

什么是Frp

Frp 是一个专注于内网穿透的高性能的反向代理应用,支持 TCP、UDP、HTTP、HTTPS 等多种协议,且支持 P2P 通信。可以将内网服务以安全、便捷的方式通过具有公网 IP 节点的中转暴露到公网。

官网

部署(小白向教学)

部署过程其实并不困难,而且十分方便!

首先咱们得拥有一台有公网IP的服务器吧,这里推荐阿里云,腾讯云,微软云等等大厂,只要是大厂闭眼乱买,只不过可能价格稍贵,但是其线路和机器的稳定性是一定是小作坊机房无法提供的,最好购买国内的服务器,内网穿透后的体感延迟更低。

配置服务端

服务器使用Linux系统(Debian)作为演示

首先,去作者GitHub仓库下载对应的Release 版本。(服务器什么架构什么系统就下载什么版本,不要下载错了,不懂的可以网上查)

下好了之后你可以直接使用SFTP从本地上传到服务器上

或者直接对着frp_0.60.0_linux_amd64.tar.gz点击鼠标右键然后复制链接地址,打开你的服务器的终端输入以下指令

sudo -i //提权为root用户
apt update
apt install wget
cd /home
wget https://github.com/fatedier/frp/releases/download/v0.60.0/frp_0.60.0_linux_amd64.tar.gz

这样就让服务器主动把文件下载到home路径下了,我们在终端输入ls可以看到这个文件

解压,并进入解压好的文件夹

tar -xvf frp_0.60.0_linux_amd64.tar.gz  //如果版本不同自行替换文件名
cd frp_0.60.0_linux_amd64.tar.gz

如图我们可以看到frpc.toml和frps .toml两个配置文件,这台服务器作为服务端我们只需配置frps .toml就可以了,frpc.toml是本地客户端配置的,我们暂时先不管。

(可以使用SFTP从服务器上把配置文件下载下来在本地改然后再重新上传文件到服务器上,这个操作实际上并不麻烦甚至我个人认为比Linux自带的文字编辑器好用,目前网络上很多终端软件都自带SFTP并且可以实时修改文件内容并且一键上传,Termius就很好用)

nano frps.toml 

然后我们对配置文件进行修改

bind_port = 7000   //frp服务器与客户端同步端口,与客户端要保持一致

这个端口自定就好了,修改完成后按下Ctrl+X保存,但是一定要注意不要和已有端口冲突,要不然Frp无法启动。接下来我们就可以启动试试看了。

./frps -c frps.toml

这样直接启动可以看到输出的日志文件,如果没有问题的话我们就可以让他后台运行了,先按下Ctrl+C终止其前台运行,然后让其后台启动。

nohup ./frps -c ./frps.toml
配置客户端

这一步要部署在你本地上的需要内网穿透服务的端口上,就比如你是MC世界里的房主你要和你远程的朋友联机,你就需要把你本地通过MC打开的联机端口通过内网穿透给传出去。(老版本联机默认是25565端口,现在貌似可以自定义了,我们的教程默认使用25565端口)

依然先去作者GitHub仓库下载对应的Release 版本。玩MC想必一般人都用的Win系统吧,直接下载frp 0.60.0_windows_amd64.zip就行了,如果你是arm架构的就下arm咯。(不要下错了,不要下错了,不要下错了重要的事情说三遍)

下载下来后,依旧是同样的解压然后进入文件夹,不会有人Windows的解压还要教吧(bushi

这次我们修改frpc.toml文件,双击它

serverAddr = "xxx.xxx.xxx.xxx"  //这里改成你的服务端的服务器的公网IP,就是你上面配置的那个服务器的IP
serverPort = 7000  //这里与服务端配置文件里面的bind_port保持一致

[[proxies]]
name = "test-tcp"
type = "tcp"
localIP = "127.0.0.1"
localPort = 25565  //本地需要穿透的端口,即MC的联机端口25565
remotePort = 25565 //暴露在公网的端口,可以自定,注意这个是服务器上面的端口,不要和服务器上面已有的端口冲突了,防火墙记得打开

配置好了之后保存关闭即可,接下来我们打开终端启动Frp,在该路径下右键鼠标点击在终端中打开。

然后输入启动指令

./frpc.exe -c ./frpc.toml

可以看到终端输出的日志表明我们已经启动成功,让朋友在MC多人游戏内输入你配置好的公网IP和端口就行了,即serverAddr和remotePort,格式是IP:端口的形式,注意冒号要用英文的冒号,同时不要关闭终端哦,要不然Frp客户端就中止运行了。和朋友一起享受联机的乐趣吧 :)

Frp功能强大,其功能远不止于此,还有一些其他的玩法大家可以去官网自行学习。