值寒假,刚好趁着这个时候和小伙伴进行一波快乐的minecraft联机啦xD

(反正也因为新冠病毒哪里都去不了orz

之前一直都是使用Sakura frp来和小伙伴进行联机,然而在用网高峰期的时候游戏体验极差orz。思来想去,干脆把手头上的服务器拿来做端口映射啦~

话不多说,开始教程

PS:该教程仅适用于Java版minecraft,对基岩版、win10版、网易版等不适用。

PPS:别问我为啥不把服务端直接在服务器打开。。。。我服务器根本带不动orz

开服所需

  • 一台云服务器或者VPS(国内需要提前备案)

云服务器和VPS大家可以在网上进行租赁购买,现在价格已经不算昂贵了。

如果只是想进行短期的尝试这里推荐可以使用Vultr的VPS。我使用的是阿里云的学生服务器。

  • Frp

软件地址:https://github.com/fatedier/frp

  • minecraft服务端

我只测试过官方服务端,其他的例如Spigot应该也是可以的。

  • minecraft客户端

基础知识

首先先在这里给大家简单科普一下关于联机所需要知道的一些常识

如果想直接看怎么去操作的可以直接跳过这一章。

不过这里还是很重要的呢!!建议不清楚的小白阅读一下。

什么是服务器?

我想大家平时都说开服开服什么的,那到底什么是服务器呢?

所谓的服务器,实际上就是一台电脑

这台电脑运行着一些程序以及应用(比如公共API、网站等),这些应用大家都可以来访问使用(没错这个网站就是运行在服务器上的xD)

mc服务器,其实也就只是一台运行着mc服务端程序的电脑而已。

服务端:我们平时进行游玩的叫做客户端,而服务端其实也是mc,只不过是没有界面的mc,只能用来进行开服。

刚刚说了服务器就是电脑,那为什么我的电脑不是服务器呢?

并不是每一台电脑都是服务器的呢

首先我们需要理解一个词:IP

IP大概的意思就是一个计算机在全世界网络中的位置,相当于计算机的门牌号,通过IP就可以访问到你这台电脑提供的服务。比如我运行了mc的服务端程序,那你只需要通过这个IP就可以来访问我的mc服务器了。

然而并不是每一台电脑都是拥有IP的,比如你正在游玩的这台电脑xD

那你是怎么上网的呢?我们待会再详解。

我们把拥有IP地址的电脑,就称作服务器。

通常来说,服务器在无特殊情况下不会关机或者重启,是24小时不间断运行的。

而服务器我们通常可以进行租赁,现在的价格也不是很昂贵的。

什么是内网穿透?

刚刚我们说了,拥有IP的电脑是服务器。

那我们现在所希望的,就是将你的电脑变成一台能使用的服务器,也就是说大家可以通过一个IP来访问到你的电脑提供的信息。

也正因此,内网穿透应运而生。

刚刚我们说了,IP是计算机在网络当中的一个位置。那你又没有IP,岂不是上不了网了?

实际上,我们之前提到的网络,都是”广域网“,也称作公网。你的电脑没有IP地址,但你们家的路由(Wifi)其实是拥有的。这个Wifi会构建一个局域网,也就是一个小片区域的网络,俗称内网。当你电脑连接Wifi之后,路由器会自动分配一个本地地址给你的计算机,一般来说这个本地地址为192.168.x.x。应该大家都尝试过mc的局域网联机,实际上就是通过连接同一个wifi以后大家通过这个本地的地址来访问到开服的主机的。

你想要进行上网,整个流程是这样的:你的计算机告诉路由需要访问的地址以及所发送的数据——路由发送信息告诉服务器——服务器发送数据到路由——路由将信息转发给你。

这里省略了很多中间过程,但大致就是这样的。

基础原理懂了,理解内网穿透也就不难了。

实际上,内网穿透就是将你计算机当中的数据先发送到服务器,再通过服务器转发给别人,从而实现别人与你的计算机实现通信。

内网穿透的应用范围很广,比如拿来进行远程的办公。

开服流程

下载Frp

首先我们需要将Frp部署到服务器。

Frp的github页面下载最新版本的frp。

在这里我们需要下载两个文件:

  • 第一个是在你电脑上运行的客户端,一般大家的都是windows,所以我们就安装windows版本的。注意32位的安装386那个文件,64位安装amd64那个文件。
  • 第二个是在你服务器上运行的服务端。通常来说都是Linux,那你可以直接根据你的主机来安装386或者amd64。

(github下载速度慢的同学可以自行百度一下如何加速,这里不多做说明)

下载到本地以后解压客户端和服务端,建议修改文件名为frp。应该可以看到的文件目录如下:

frp
│  frpc.exe //客户端应用
│  frpc.ini //客户端设置
│  frpc_full.ini
│  frps.exe //服务端应用
│  frps.ini //服务端设置
│  frps_full.ini
│  LICENSE
│
└─systemd
        frpc.service
        frpc@.service
        frps.service
        frps@.service

部署frp到服务器

接下来我们就需要部署frp啦。

首先我们需要远程连接到我们之前准备好的VPS或者服务器。

购买好服务器或VPS之后,在服务器与VPS的控制面板可以查询到你主机的IP地址、用户名以及密码。将这些信息保存好。

有很多这类远程连接软件,我推荐使用winSCP

下载好之后我们启动软件

在主机名、用户名与密码处分别填入主机商提供给你的IP地址、用户名和密码。

点击登录,过一会儿应该就可以连接进去啦~

我们点击进入右侧的home目录,然后把你刚刚安装的frp的服务端拖进home文件夹里面。

上传完成后进入frp文件夹,打开frps.ini

我们对frps.ini稍作修改(//后面是我的注释,不要加上)

frps.ini:

[common]
bind_port = 7000 //frp端口,不用修改
dashboard_port = 7500 //frp的控制面板,不用修改
token = 12345678 //密钥,建议修改成随意字符
dashboard_user = admin //用户名,建议修改成自定义的
dashboard_pwd = admin //密码,修改成自定义的
vhost_http_port = 80 //不用修改
vhost_https_port = 443 //不用修改

修改好之后记得保存文件关闭。

PS:请在执行一下步骤之前先进行确认服务器的7000端口以及7500端口是否已经启用。

由于国内某些服务器运营商会把很多端口关闭保护服务器安全,大家需要在服务器的控制面板来放行7000和7500端口。

设置好之后我们就可以运行frps的服务端了

在winSCP的工具栏中找到按钮“在putty中打开”,先使用cd /home/frp进入frp文件夹内,之后输入指令:./frps -c frps.ini

如果看到以下内容,即表示成功开启。若出现失败提示,请自行检查上述步骤:

[service.go:130] frps tcp listen on 0.0.0.0:7000 
[service.go:172] http service listen on 0.0.0.0:80
[service.go:193] https service listen on 0.0.0.0:443
[service.go:216] Dashboard listen on 0.0.0.0:7500
[root.go:210] Start frps success

访问xxx.xxx.xxx.xxx:7500(xxx为你的主机IP),并用刚刚设置的用户名与密码登录,应该可以看到frp的控制面板了:

你可以使用nohup指令来让frp在后台运行:nohup ./frps -c frps.ini &

打开内网穿透

服务端设置完毕,接下来回到我们的客户端上。

进入客户端的frp目录下,使用notepad3或者vs code打开frpc.ini。

frpc.ini:

[common]
server_addr = x.x.x.x //修改你的主机地址
server_port = 7000
token = 12345678 //修改成你设置的密钥
[rdp]
type = tcp
local_ip = 127.0.0.1           
local_port = 3389
remote_port = 7001  
[smb]
type = tcp
local_ip = 127.0.0.1
local_port = 445
remote_port = 7002

将[rdp]和[smb]下的内容删除,根据你的信息将common下的内容修改完整。

之后将下列内容添加到文件下方:

[minecraft] //frp的名字,你也可以修改成别的
type = tcp //采用tcp连接
local_ip = 127.0.0.1
local_port = 25565 //minecraft服务端的端口,如果你修改过请修改成别的
remote_port = 7003 //你需要使用的端口,可以自定义成任意开放的端口,之后会用到

保存以后在frp目录下按住shift+右键,选择“在此处打开windows powershell窗口”,进入控制台后输入:

./frpc -c frpc.ini

如果你看到以下输出说明已完成内网穿透啦

2020/02/01 01:53:22 [I] [service.go:250] [12345678] login to server success, get run id [12345678], server udp port [0]
2020/02/01 01:53:22 [I] [proxy_manager.go:144] [12345678] proxy added: [minecraft]
2020/02/01 01:53:22 [I] [control.go:164] [12345678] [minecraft] start proxy success

开服!

设置好内网穿透后,启动你的minecraft服务端叭。具体的设置我这里就不多赘述了,在mcbbs中有很多详细教程的。

服务端启动后,进入游戏。在多人游戏中选择“添加服务器”,并在服务器地址处填写上你的主机IP地址+你给mc设置的端口。比如说x.x.x.x:7003

待加载一会后,服务器亮起,开服成功!

你可以把这个IP地址告诉其他小伙伴,他们就可以进来了。

一起来快乐的联机叭!(^∀^●)ノシ

参考资料

【联机教程】如何和小伙伴用最简单联机方式愉快的玩耍?超简单联机办法 最新视频更新~ - MCBBS
使用frp进行内网穿透-少数派


You Are All Stardust.