0x00 背景知识
众所周知,我们的互联网看似可以将全世界的设备进行连接,实际上却被非对称NAT划分为了一个个小的“局域网”。虽然说我们在各种查询网站上可以获取到自己的IP地址,但是这个地址实则是和许多同一区域下的设备共同使用的。这么一来,这个IP地址实际上并不能被你所掌控,你也没办法顺你所愿地用IP地址连接多台设备。诸如MC服务器联机的操作,也无从下手。
当然,你也许常听说“公网IP”这个说法。相对于IP地址完全被运营商掌握、个人设备无法随意使用的普通环境,具有公网IP的家用宽带或服务器,可以直接获得一个IPv4地址的支配权,换句话说,开放一个端口进行联机也是可以的,这个设备IP地址面向整个互联网都可以被连接。很可惜的是,几乎所有的国内运营商都把公网IP的申请卡得死死的,个人(尤其是校园网、家庭等学生非宽带户主的环境)很难取得一个公网IP。
在这种情况下,我们该如何打通内网环境,使得自己真正拥有一个对互联网开放的地址和端口呢?
我们在本文中探讨一种名为FRP的技术用法,这种技术的原理就是:在互联网上有一台具有公网IP的服务器(由服务商提供),作为房主的玩家首先与此服务器进行连接,随后服务器会打开一个端口,转发所有发送和接收的数据包,分发给房主和成员,从而达到MC联机的效果。
注意:本文以 SakuraFrp 和 浮居内网穿透 为例进行讲解,旨在教学图形化操作界面和命令行化FRP.exe的使用,各位可以在网络上自行寻找符合需求的服务提供商,无推广意图。
0x01 对 Minecraft 进行必要的设置
注:若所有成员均拥有 Minecraft 正版,可忽略此步骤
Minecraft 的后期版本引入了联机的正版验证要求,并且使用原生客户端无法关闭或修改认证服务器,如果我们不关闭正版验证,那么即便我们有公网IP也是无法正常联机的(会显示“无效会话:请尝试重启客户端”)。
如果不依赖于Mods,我们就只能通过架设 Minecraft 服务器,关闭 online-mode 配置项,来解决这一问题了。不过作为普通玩家,如果对纯净游戏没有什么执念,其实完全也可以通过添加Mod的方式来关闭正版验证。
这里以HMCL为例添加Mod。
(在已经安装好游戏和模组加载器的前提下)打开HMCL, 进入“实例列表(旧版本:游戏列表)”,点击准备联机的游戏版本。
这里我使用的版本是1.20.1,模组加载器为NeoForge。
依次进入“模组管理”和“下载”。
我们搜索并下载LSP(Lan Server Properties),点击进入后选择正确的游戏版本,并进行安装。
值得一提的是,LSP似乎并不支持所有的游戏版本和模组加载器。如果不能正常使用的话,请检查一下是不是装错版本了(游戏版本和模组加载器版本),如果LSP不支持你的游戏版本,你还可以试试下列类似的Mod:
- Custom LAN(Fabric)
- LAN World Plug-n-Play
等到你的模组安装完成,你就可以启动游戏了。
开启你需要联机的世界,进入游戏菜单,点击“对局域网开放”,出现如下界面。
我们将“端口号”改为25565,并将“正版验证”禁用。此后点击“创建局域网世界。(注意:如果Windows 防火墙弹出警告窗口,请务必选择允许!)当你看见提示”本地游戏已在端口[25565]上开启,你的联机就成功创建了。
0x02 注册你的端口映射服务
打开你的端口映射服务商地址。
我们这里以此两个服务为例:
樱花内网穿透SakuraFRP: https://www.natfrp.com/
优点:免费,有简单的控制面板开启关闭,技术门槛低
缺点:速度较慢,流量每日签到比较麻烦,高峰时段可能遇到严重的拥堵和无空闲隧道可用的情况。你可能需要进行实名认证才能使用端口映射的全部功能。
浮居内网穿透FUJUFrp: https://www.frp.cool/
优点:速度较快,可用的节点一般都比较流畅和空闲,购买后流量速度无限制
缺点:需要购买(10r/月)方可使用,没有图形化启动器只能手动启动隧道,有一点技术门槛
0x03 部署隧道,启动隧道
本节我们分开讲述两个服务的使用方法。
如果你正在使用 SakuraFrp:
请确保你已经在网站管理后台的“用户>实名认证”内完成了实名认证。
进入网站的“服务>软件下载”,点击绿色的下载按钮,下载并安装Windows启动器。
安装好以后打开,主页应该长这样:
啥?你问我为什么你没有隧道?我们还没建呢!看下去,别着急。
我们回到网页端,来到“首页”,这里你可以先签到领个流量包,免得流量跑没了。
点击账号信息右上方的“复制访问密钥”。
复制成功后,来到启动器的”设置“中,把刚刚的访问密钥粘贴到“账户”中的“访问密钥”框框里面,点击登录。不出意外的话,你就可以看见你的用户信息了。这里我们可以修改一下设置,开启开机自启。如果你会魔法,你还可以打开”绕过系统代理“,要不然把另外一个流量跑光了还又卡又慢就不好了(雾)。
我们回到”隧道“页面,点击标题旁边的”+“,进入添加隧道页面。
这里我们一般选择离我们地理位置最近的一个节点。
如果你看到剩下寥寥几个节点可用,而且都是国外的或者很偏远的,那恭喜你,现在是高峰期,等会再来,或者氪个金,或者去试试第二个服务吧。
隧道类型这边我们选择TCP(当然如果你是开基岩版服务器就选UDP,其他FTP、RDP之类的你自己网上搜一下去吧(雾))
隧道名字自己取一个,不重要。本机IP选127.0.0.1,本地端口选择25565.
好了之后就创建,创建以后回到隧道页面,把对应隧道的那个开关给打开。
前往“日志”页面,你应该可用看到“TCP 隧道启动成功“的信息,而后还有两个网址。
这里的“使用xxx:xxx连接你的隧道”就是你的服务器地址了。
如果你正在使用 浮居内网穿透:
打开网页,登录进入后台。点击“创建隧道“,可看见如图所示的页面:
如果没看见可用服务器,那就是你没有买服务。去首页有地方可以买,买好激活码就去首页提供的地址激活就好。
如图填写隧道信息,隧道类型选TCP,本地地址依旧127.0.0.1,本地端口依旧25565.
远程端口你随便填一个五位数上去,如果重复不能用,你就再填一个,直到成功创建为止。
点击“完成创建”保存你的隧道,如果一切顺利的话,显示“隧道创建成功”。
接下来进入网页左侧的“软件下载”,下载amd64架构对应的软件。
解压软件到一个你找得到的位置,可以得到下图所示目录。
我们回到网页,进入“配置文件”。
选择你刚才开隧道的对应的服务器。我这里没马内购买隧道了(月中大学生饿饿QAQ)。
如果一切顺利,“配置文件内容”这个区域会显示一串配置文件内容(其中带有你的隧道名称字样)。我们把它复制下来,回到软件目录下,用记事本或者你喜欢的代码编辑器打开配置文件frpc.ini,将配置文件的所有内容粘贴进去,如图所示。
其中,server_addr的值就是你的服务器域名(图中是cn-zj1-….),remote_port(你刚才自己填的,图中是16991)即为你的服务器端口。用英文冒号“:”连接一下,获得"cn-zi1-a8ldj1kk.frp.cool:16991",这就是你的服务器地址了。
保存(Ctrl+S)配置文件,关闭配置文件窗口,双击"双击运行.bat"。
不出意外的话,现在会弹出一个命令行弹窗:“Start proxy success.”,即为启动成功。
注意:在你不需要玩,关闭联机之前,这个命令行窗口都不可以关上。
0x04 连接到服务器
你的朋友安装与你版本相同、Mods配置正确的Minecraft,并启动游戏。
点击“多人游戏”,添加服务器,名字随便取一个,地址填写上一步获得的服务器地址,随后点击“完成”。
不出意外的话,现在就可以正常联机了。
发表回复