ChrisKim
Do not go gentle into that good night.
颢天

【已重制】从零开始搭建 frp 内网穿透服务器进行 mc/tr 联机

warning 文章废弃
因本文已有更优秀的重制版,因此本文废弃。重制版见下。

这是我的第二篇“从零开始”教程,前一篇搭建Minecraft服务器教程转发到BiliBili后反响还不错,真有许多大佬们根据我的教程成功搭建了服务器,这让我也信心百倍。毕竟教程真的帮助到了别人,我也非常的高兴。

这一篇又提到了mc服务器的搭建,是因为使用ECS搭建mc服务器一是配置价格贵,要高配的话每月高达百元。二是服务器的搭建有点复杂。于是我给出了替代方案——使用frp内网穿透,在本机搭建服务器映射到外网,让好基友们可以连接。

本篇文章将会提到利用frp搭建Minecraft/Terraria服务器。注:本教程重点是搭建frp内网穿透服务器,并没有详细的Minecraft、Terraria服务器配置内容,相关内容请自行百度学习。


原理解释

当今IPv4资源紧缺,IP地址不足以全球所有计算机人手一个,于是运营商将一个地区的用户包含到一个“局域网”里,这个地区的用户拥有的IP是这个“局域网”的内网IP,公网上的用户是无法直接访问到你这个内网IP的,所以你的电脑上搭建的我的世界/泰拉瑞亚服务器,你的好朋友是无法连接的。

而我们可以借助租用的拥有公网IP的云服务器,在其上搭建frp内网穿透,这样我们本机搭建的mc服务器(以mc为例,也可以搭建tr服务器),就可以利用frp服务器作为一个“中转站”。好朋友连接frp服务器,就可以通过中转连接到我们的电脑。

我制作了个简化的原理图,让大家更好理解。(我没有专业的网络知识,只是有点兴趣罢了,如果有错误请谅解)

https://assets.zouht.com/img/blog/727-01.webp

购买云服务器

本教程使用阿里云ECS搭建,若你有更实惠的云服务器,你也可以自行购买。

注:使用大陆服务器搭建非http服务的服务器无需ICP备案,可放心使用大陆服务器。

1.进入阿里云官网。https://www.aliyun.com/

2.注册账号并登陆。

3.点击“产品分类”->“云服务器 ECS”->“立即购买”进入购买页面

4.推荐我的配置选择,没提到的东西选择默认选项

frp一点也不吃配置,并且我搭建的服务器是最简单的版本,最多就五六个连接,连接也没有进行压缩,所以更不需要什么配置。我推荐先买最低配的服务器,如果满足不了你再升级。我购置的服务器就是阿里云最便宜的服务器,配置非常足够。

选择一

基本适合任何带宽需求,可进行Minecraft联机。但是流量需付费。(总价:11.5元/月 流量:0.8元/GB)

  • 付费模式:包年包月
  • 地域及可用区:华北3(张家口)
    (在本教程撰写时,本地域最便宜)
  • 实例:
    • 分类选择共享型
    • 点击参考价格列旁的▲符号,将列表价格按从低到高排序。
    • 选择最便宜那款(应该是ecs.t6-c4m1.large ¥ 5.9 /月)
  • 镜像:CentOS 7.3 64位
  • 储存:下调到20G
    (40G根本用不上)
  • 点击“下一步:网络和安全组”
  • 带宽计费模式:按使用流量 0.8元/GB
  • 带宽值:拉满80Mbps(按量付费不同带宽值价格统一)
  • 点击“下一步:系统配置”
  • 登录凭证:自定义密码(自行设置一个强度够高的密码)
  • 直接点击“确认订单”,检查配置是否选择正确,选择购买的时长,购买付款即可。

选择二

(限12~24岁用户)适合带宽需求小的服务,如Terraria或远程桌面连接。带宽只有5Mbps但是无需额外付费(总价:9.5元/月)

  • 在阿里云官网找到阿里云学生机:链接
  • 选择轻量应用服务器 学生专享
  • 点击立即购买
https://assets.zouht.com/img/blog/727-02.webp
  • 地域:随意,如果有个地域无货就换另一个
  • 镜像类型:系统镜像 -> CentOS 7.3 ->
  • 数据盘:0GB 无需数据盘
  • 购买时长:随意

(本教程全部以ECS版本为例,若购买的为学生机轻量应用服务器,请进入轻量应用服务器控制台,操作大同小异,只是菜单位置有区别罢了)


连接并配置云服务器

(本节借用了我上一篇教程的文字和图片,因为操作一模一样没有区别)

1.下载Xshell和Xftp
官方家庭/学校免费版获取链接:链接(填写正确邮箱,选择两者,提交。两封包含下载链接的邮件就会发送到你的邮箱)

2.进入ECS控制台(点击阿里云主页的右上角控制台,再点左上角选择云服务器ECS)
进入你购买实例的控制台,找到配置信息一栏,找到公网IP

https://assets.zouht.com/img/blog/727-03.webp
本服务器是我为了写教程专门开的演示服务器,所以未打码

3.打开本机的Xshell软件,点击“创建新会话”按钮

https://assets.zouht.com/img/blog/727-04.webp

在弹出的对话框中填写公网IP,然后点击确定

https://assets.zouht.com/img/blog/727-05.webp
https://assets.zouht.com/img/blog/727-06.webp

第一次连接服务器会弹出这个安全警告,无需理会直接点击“接受并保存”

https://assets.zouht.com/img/blog/727-07.webp

输入服务器用户名:root
可以勾选上记住用户名,下次就不用再输入

https://assets.zouht.com/img/blog/727-08.webp

输入你设置的服务器密码
可勾选记住密码,下次就不用输入

https://assets.zouht.com/img/blog/727-09.webp

点击确定后,出现“Welcome to Alibaba Cloud Elastic Computer Service”的欢迎语后,即已经连接上服务器
(若没有成功连接,检查密码是否输入正确,IP是否输入正确,再多试几次)

https://assets.zouht.com/img/blog/727-10.webp

4.安装screen命令

连接服务器SSH(即使用Xshell连接服务器),输入以下命令安装screen,安装很快,秒装。

yum install screen

至此,服务器系统配置完成,开始配置frp


下载frp

GitHub项目链接:链接
个人网盘链接:链接

下载下来的压缩包包含了服务端和客户端,需要下载对应操作系统的版本。如果你在Windows系统连接Linux服务器,那你就得把Linux版本和Windows版本都下载一遍了。

解压压缩包,里面frps.exe就是服务端(server),frps.ini就是服务端配置文件,frpc.exe就是客户端(client),frpc.ini就是客户端配置文件。

里面还有个frps_full.ini/frpc_full.ini,那个是完整配置文件,里面写了各种配置的用法,作为参考,不过我们的需求很简单,没必要整这么花里胡哨的东西。


配置frp服务端

本操作建议在自己电脑上配置好后再上传到服务器,更方便。

1.解压下载的linux版frp

https://assets.zouht.com/img/blog/727-11.webp

2.用记事本打开frps.ini(frp服务端配置文件)

按以下方式配置(删除我的注释)

[common]
bind_port = 7000 #这个是客户端与服务端的通信端口,可保持默认 
dashboard_port = 7500 #这个是frp仪表盘的端口,可保持默认 
dashboard_user = xxx #这个是登录仪表盘的账号,自行设置 
dashboard_pwd = xxx #这个是登录仪表盘的密码,自行设置 
token = xxx #这个是客户端连接服务端的密码,自行设置

配置好后,保存frps.ini

https://assets.zouht.com/img/blog/727-12.webp

至此,frps服务端配置完成,开始运行frp服务端


运行frp服务端

上传frp

1.打开Xshell软件,右键之前创建的服务器会话,选择“用Xftp打开”。我们通过Xftp软件上传文件到服务器。

https://assets.zouht.com/img/blog/727-13.webp

2.然后就可以进入到Xftp的界面

https://assets.zouht.com/img/blog/727-14.webp

3.进入/root目录(连接后默认为此目录)

4.在/root目录下新建文件夹(右键 -> 新建 -> 新建文件夹),输入文件夹名“frp”

https://assets.zouht.com/img/blog/727-15.webp

5.双击进入frp文件夹

6.将frps服务端复制到服务器

框选本机的frps相关文件,直接拖动到服务器frp文件夹里就行

https://assets.zouht.com/img/blog/727-16.webp

7.右键上传的frps文件,点击更改权限

https://assets.zouht.com/img/blog/727-17.webp

勾选执行权限,点击确定

https://assets.zouht.com/img/blog/727-18.webp

运行frp

(以后启动frp都是这个操作)

1.打开Xshell连接到你的服务器

2.输入以下命令,创建一个session(可以类比成Windows操作系统的窗口,这样就可以保持服务一直运行)

注意是大写“S”

screen -S frp

2.输入以下命令,定位到/root/frp目录

cd /root/frp

3.输入以下命令,启动frp

./frps -c frps.ini
https://assets.zouht.com/img/blog/727-19.webp

若看到以下字样,frp就开启成功了!

下面附screen相关用法:

screen -S xxx #新建一个名为xxx的session 
按Ctrl + A + D #最小化进入的session 
screen -r xxx #回到名为xxx的session 
screen -D -r xxx #踢掉连接的前一用户,强制进入(若上一行的命令无法进入用这个) 
screen -list #列出当前已打开的session(list可简写为ls) 
screen -S xxx -X quit #关闭名为xxx的session

配置frp客户端

1.解压下载的Windows版frp

https://assets.zouht.com/img/blog/727-20.webp

2.用记事本打开frpc.ini配置文件(请删除我的注释)

[common]
server_addr = xxx #在这里输入你的服务器公网IP
server_port = 7000 #这里是在服务端设置的bind_port
token = xxx #这里是你在服务端设置的客户端连接密码

[xxx] #自己随便起个名字
type = tcp #协议种类,我们要做的服务器都是tcp
local_ip = 127.0.0.1 #就填写这个
local_port = xxx #这两个端口都填你要内网穿透的端口
remote_port = xxx
#本段可以多次添加(名字不用重复),同时进行多个端口的内网穿透

下面给出几个示例(不包含[common]段,使用时请自己添加[common]段)

[mc] #Minecraft Java版示例配置
type = tcp
local_ip = 127.0.0.1
local_port = 25565
remote_port = 25565

[mcbe] #Minecraft 基岩版示例配置
type = tcp
local_ip = 127.0.0.1
local_port = 19132
remote_port = 19132

[tr] #Terraria 示例配置
type = tcp
local_ip = 127.0.0.1
local_port = 7777
remote_port = 7777

[mstsc] #远程桌面连接 示例配置
type = tcp
local_ip = 127.0.0.1
local_port = 3389
remote_port = 3389

配置完成后保存即可

https://assets.zouht.com/img/blog/727-21.webp

至此,客户端配置完成,但现在还无法连接,因为还要放行防火墙。


放行防火墙

进入阿里云ECS控制台(之前复制公网IP的那里)

若是轻量应用服务器,进入轻量应用服务器的控制台,大同小异。

https://assets.zouht.com/img/blog/727-22.webp
https://assets.zouht.com/img/blog/727-23.webp
https://assets.zouht.com/img/blog/727-24.webp
https://assets.zouht.com/img/blog/727-25.webp

需要放行的是上文服务端设置的bind_port和dashboard_port,默认为7000和7500。还需放行客户端设置的对应端口,比如我需要搭建mc服务器和远程桌面连接,就要放行25565和3389端口。


运行frp客户端

1.打开你电脑上的frp客户端文件夹

2.新建一个文本文档

3.文件名随便,后缀改为.bat批处理文件。我改成了run.bat

4.右键run.bat选择编辑,打开记事本

5.输入以下命令

frpc -c frpc.ini

6.保存,双击运行run.bat

https://assets.zouht.com/img/blog/727-26.webp

7.出现success即连接成功了

这时你本机的对应端口就可以在公网中直接访问了。比如你想在公网中访问你电脑上开启的Minecraft服务器,IP就填写你服务器的公网IP,端口就填写25565


配置相关游戏服务端

注:本教程重点是搭建frp内网穿透服务器,并没有详细的Minecraft、Terraria服务器配置内容,相关内容请自行百度学习。

Minecraft服务端配置要点就是将server.properties配置内的server-port设置为25565,server-ip留空。基岩版的端口就是19132。我的另一篇教程结尾也提到了点Minecraft服务器的配置方法,可参见:

Terraria服务端配置要点就是设置端口为7777。

总之,你服务端的端口要和frp中设置的相应端口相同。并且开启服务器时frp的控制台不能关闭,关闭了内网穿透就会断开。


额外配置

如果你想要给你的服务器绑定一个域名,可以到阿里云购买一个域名,然后将域名解析到你服务器的公网IP即可。

https://assets.zouht.com/img/blog/727-27.webp

这样你就能直接在游戏里填写服务器绑定的域名进入游戏了。

本文链接:https://www.zouht.com/727.html
本文使用:CC BY-NC-SA 4.0 许可
# # #
首页      隐藏      【已重制】从零开始搭建 frp 内网穿透服务器进行 mc/tr 联机

颢天

【已重制】从零开始搭建 frp 内网穿透服务器进行 mc/tr 联机
warning 文章废弃因本文已有更优秀的重制版,因此本文废弃。重制版见下。 这是我的第二篇“从零开始”教程,前一篇搭建Minecraft服务器教程转发到BiliBili后反响还不错,真有许多大…
扫描二维码继续阅读
2020-04-24