
使用 frp 通过低性能云服务器来实现内网穿透进行我的世界服务器在本地计算机搭建
一、前言
OK,假设一下,你恰好有一群小伙伴想一起玩Minecraft,恰好你和你的小伙伴们地理上相隔甚远只能通过远程联机的方式游玩,恰好你们想一起玩的是Java版而无法使用基岩版那样的官方联机方式(或者想自己加mod不得不选择Java版),恰好你的小伙伴们要求你来当大冤种服主,而你我的朋友,你恰好,有一台性能不错的电脑能够用来当主机但苦于没有公网IP(如果你不清楚什么是公网IP,什么是内网IP,为什么联机要公网IP我会在下面给一个简要的介绍把良心打在公屏上)的同时又恰好有一台性能拉跨的云服务器(⌈2核2G⌋或者⌈2核4G⌋这种),那么这时脑袋尖尖的小朋友要问了:“博主博主🥰,有没有什么方法让我们利用云服务器的公网IP,使我们的小伙伴们连接到本地内网的我的世界服务器呢🧐?”有的😋,兄弟,有的,马上告诉你一种方法 0 成本开服🤓。
免责声明:作者非专业人士,某些解释可能会有不严谨之处,没有蓝色💊就给我憋着。
二、运用场景
使用低性能的云服务器实现本地电脑的内网穿透,从而完成我的世界服务器在本地电脑的搭建,在介绍 frp 时会附上官方文档供有更多需求的读者自行研究。
三、内网IP与外网IP的区别
众所周知,IP地址相当于你的设备在互联网上的门牌号,其他网民能通过唯一的IP地址找到你的设备。However(ノへ ̄),现在的IP地址(现在IP地址有两个版本 IPv4 和 IPv6,地址枯竭的是 IPv4,IPv6 虽然充足但普及率还没有 IPv4 高,大多数情况还是默认使用 IPv4)数量却不够了,不能给每一台设备都分配专属的门牌号,怎么办呢🤔?
欸🤓👆I hava a plan!我们把许多的设备划分为一个小区,这个小区的名字就是公网IP,小区内各个设备的门牌就是内网IP(内网IP的取值范围和外网IP不一样,是能区分的)不就行了。举个栗子👆:A小区的名字是 211.211.211.211(又名紫禁花园),里面有一台设备B他的门牌是 192.168.1.2(又名 4 - 301)。Now(´▽`),在A小区外面的你想和设备B取得联系,于是你打开导航搜索 4 - 301 …… 显而易见你当然找不到设备B的位置🤨(正确的做法是搜索紫禁花园然后在小区里面找 4 - 301)。
Similarly,你想和小伙伴们开服联机,你的小伙伴无法通过内网IP找到你的服务器。什么?你想知道你的设备IP是不是外网IP😂?一般来说,由于我们的IP地址太稀缺了,运营商当然不会将能标识一个“小区”的外网IP给你单独的一台设备的。不死心?按键盘上 windows徽标 + R
,输入 cmd,回车,在弹出来的框里输入 ipconfig
,如果显示IPv4地址是 192.168.X.X 这种,那就说明你是内网IP了(弹出来很多项你就看以太网适配器这一栏的就行了,如果连的 WiFi 那肯定是内网IP)。
四、内网穿透
1、什么是端口号
欸🤓👆!我又要开始举栗子了:把上面小区的例子拿下来,假如你的我的世界服务器正在设备B上运行,这时有脑袋尖尖的小朋友可能又要问了:“博主博主😫,我怎么知道服务器在设备B的哪里运行🦆,是不是有和IP地址一样的门牌号🦆?”有的😋,兄弟,有的,这么好用的门牌号还有很多,我们将用于识别设备上进程的 “门牌号” 叫做端口号。
2、什么是内网穿透
通过外网IP访问到你的内网服务(进程),反正差不多就这个意思。相当于有一栋独立别墅C,它的名字 201.201.201.201(又名天府之国)直接就是外网IP。别墅C里恰好有很多空闲的端口号,我们取别墅C中一个空闲的端口号,在上面运行一个类似于 “专线电话” 的进程,在设备B中也取一个空闲的端口号运行 “专线电话” 。好了🤗,现在你的小伙伴想访问你的我的世界服务器,他们只需要在加入服务器的框框中输入 [外网IP]:[“专线电话的端口号”]
就OK了🙌。相当于在A小区和C别墅外面的你想联系上B设备里的我的世界服务器进程,你只需要在导航中搜索“天府之国”,到了后找到“专线电话”所在的端口号就能直接联系上运行在设备B上的我的世界服务器了🤓。(这也是为什么有的时候叫这个过程为端口映射,反正差不多的意思)
五、frp 介绍
frp 是一个专注于内网穿透的高性能的反向代理应用,支持 TCP、UDP、HTTP、HTTPS 等多种协议,且支持 P2P 通信。可以将内网服务以安全、便捷的方式通过具有公网 IP 节点的中转暴露到公网。(严谨吗?我复制的官方介绍😃,不过在开头加了个超链接)
frp 其实就相当于上面提到的 “专线电话” ,简单又好用。不过只有命令行界面(就是那个只能打字的黑乎乎的框框😫)可能有人用不习惯?不过如果你“恰好”有云服务器,应该用得习惯🤨。
六、frp 下载
frp作者的GitHub项目地址:GitHub - fatedier/frp: A fast reverse proxy to help you expose a local server behind a NAT or firewall to the internet.
点击右侧的release,服务器和主机都要下载根据你的操作系统决定,这里以Linux服务器和Windows主机为例。
下载好之后将两压缩包全部解压,注意! Windows的防火墙会将其视为病毒将它自动删除,如果不想关掉防火墙进入 设置-隐私与安全-Windows安全中心-病毒与威胁防护-保护历史记录
恢复删除我文件(我用的Win11,没有装其他杀毒软件,如果出现其他错误只能自己想办法了)。
七、配置 frp
在配置 frp 之前需要确定下面几个要素:[云服务器外网IP]
、[frp服务端运行端口]
、[内网服务运行端口]
、[云服务器流量接收端口]
。如果你有自己的需求可以自行参考frp中文官方文档。
云服务器IP是你云服务器的公网IP。
frp 服务端运行端口默认 7000 一般不要改。
内网服务运行端口是你我的世界服务器运行的端口号,一般改成 25565。
云服务器流量接受端口是云服务器用来接收其他设备发来的流量的(相当于别墅C的大门),改为 7000 以外的端口就行了,为了方便也改为 25565。
1、配置服务端
进入解压后的 “frp_0.61.1_linux_amd64” 文件夹,找到叫 frps.toml 的文件(不要与 frpc.toml 搞混了,s 的意思是 server,c 的意思是 client,分别代表服务端和客户端,这里我们是要在服务器上使用的,使用选择以 s 结尾的),这是服务端的配置文件。确定 [frp服务端运行端口]
后按下图填就行了。
2、配置客户端
进入解压后的 “frp_0.61.1_windows_amd64” 文件夹,找到叫 frpc.toml 的文件(一样不要和 frpc.toml 搞混了),这是客户端的配置文件。确定[云服务器外网IP]
、[内网服务运行端口]
、[云服务器流量接收端口]
后按下图填就行了。
八、启动 frp
1、启动 frp 服务端
将修改后的 “frp_0.61.1_linux_amd64” 整个文件夹改名为 frp(真的有人会不改名吗🤔?)后上传至云服务器(其实只上传 frps 和 frps.toml 和两个文件也行😋)。打开云服务器,进入上传发 frp 文件夹,输入 ./frps -c ./frps.toml
启动服务端,看到下面这样就说明启动成功了😃(停止按 ctrl + c
就行了)。
2、启动 frp 客户端
将修改后的 “frp_0.61.1_windows_amd64” 整个文件夹改名为 frp 后打开文件夹,在文件浏览器上方的输入栏中输入cmd后回车。
然后在命令行中输入 .\frpc -c .\frpc.toml
启动客户端(我看看是哪位脑袋尖尖的小伙伴把斜杠输反的),看到下面这样就说明启动成功了😃。
这样 frp 算是配置完毕了😋。
九、启动我的世界服务器
这里给出一种快速搭建服务器的教程,如果你想进一步了解我的世界服务器搭建的知识,下面是官方给出的链接:教程:架设Java版服务器 - 中文 Minecraft Wiki
1、下载服务端
我的世界官方下载地址:Download server for Minecraft | Minecraft
当然,官方这个网站只会给出最新的版本的服务端下载地址,如果你想使用旧版本的服务端,除了自己在网上搜索,如果你恰好用的是 PCL2,可以直接在游戏下载界面每个版本最右边找到服务端下载按钮。
2、运行服务端
把下载好的 .jar
文件放在一个文件夹里(PCL2下载的还带一个 .bat
文件,不用管,删了就行了)。双击运行,这时你会发现多出来很多文件,打开 eula.txt
文件(就是一个协议,应该没人会看吧😗),将里面的 eula=false
改为 eula=true
,再双击运行 .jar
文件就 OK 了。
注意,如果你们进行的是盗版联机,将配置文件 server.properties
中的 online-mode=true
改为 online-mode=false
就行了,其他设置自己研究啦( ̄︶ ̄)~~。
3、加入服务器
叫你的小伙伴在服务器地址中输入 [云服务器外网IP]:25565
就行了,如果是自己加入可以输 127.0.0.1:25565
(你自己输云服务器IP+端口号也行,但这相当于自己给自己打电话🤔......)。