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

自建内网穿透实现 Minecraft 联机 [重制]

暑假将至,放假一起和朋友们联机玩游戏是多么快乐的事情啊。但是目前家庭宽带没有公网IP,对游戏联机造成了极大的阻碍。不过我们可以自建内网穿透服务器,解决这个问题。本教程搭建的是内网穿透服务器,只用于联机数据的传输,游戏服务器还是得搭建在本地。

此方法所需条件:(开始教程前先评估条件,以免浪费人力物力财力)
1.开服者没有公网IP。假如说你有公网IP,不需要浪费钱做这个了,直接开服即可。
2.开服者网络质量较优秀。一般来说,只要是三大运营商网络,质量一般不差。长城宽带等运营商,可能会极度影响联机体验。
3.开服者需在自己电脑上开服。本教程搭建的是内网穿透服务器,只用于联机数据的传输,游戏服务器还是得搭建在本地。

此方法价格:(开始教程前请先规划预算)
1.服务器价格:¥15.50/月(可按周购买)
2.流量价格:¥0.80/GB(实测,5个玩家生存游玩6小时左右消耗1GB,跑图开销更大)

此方法实现的效果:(若对效果满意,再开始教程)
1.搭建简单。完成本教程大约只需要半小时(不包含配置Minecraft服务端)
2.价格便宜。本教程约等于只花费流量费,无需购买昂贵的高配置的云服务器搭建。
3.服务器配置高。服务器配置取决于开服者电脑配置,只要不是远古电脑,配置肯定比便宜的云服务器高。

此方法的缺点:(如果有无法忍受的缺点,那就不要继续了)
如果想要游戏服务器一直运行,必须让开服者电脑挂着游戏服务器。

此方法的简单原理图:(若有不严谨的地方,可以评论区指正)

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

购买云服务器

本教程使用阿里云云服务器,如果你有更实惠的选项,可以更改,操作基本相同。

1.访问阿里云并注册账号

阿里云官网:https://www.aliyun.com/

访问阿里云官网,注册账号,完成实名等相关认证。

2.进入购买页面

在“产品”选项中,找到“云服务器 ECS”选项访问,点击“立即购买”。(如果你处在一键购买页面,请切换到自定义购买)

https://assets.zouht.com/img/blog/2504-02.webp

3.选择服务器配置

从上到下,若没提到的保留默认

付费模式:包年包月

地域及可用区:华东2(上海)、随机分配
上海服务器,在大陆访问延迟都很不错,我比较推荐。如果有距离你更近的服务器,也可以自行调整。

实例规格:筛选2核0.5G的服务器
其实就是最便宜那款

镜像:CentOS 7.9 64位

存储:高效云盘 20GB
其实就是最便宜选项,这都远远过剩

点击右下角“下一步:网络和安全组”。弹出“突发性能实例产品特性确认”,直接确认即可(我们这服务器不存在这问题,因为CPU几乎无占用)

公网 IP:勾选“分配公网 IPv4 地址”,选择“按使用流量”,带宽选择30Mbps
10个人绰绰有余,你可以自己改,反正价格一样。不选固定带宽是因为太昂贵。

点击右下角“下一步:系统配置”。

登录凭证:自定义密码

登录密码:设置一个一定强度的密码,防止被暴力破解(重要!!!)

直接点击右下角“确认订单”。

购买时长:按自己需要,最低按周购买。

点击右下角“确认下单”。支付费用。(强烈建议等会给账号充值一定金额,因为流量是按量扣费的)

4.进入服务器控制台

找到公网IP一栏,复制此IP留存备用。(下图服务器是我写教程专门开的,写完就释放了,因此不打码)

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

连接云服务器

1.下载安装Xshell和Xftp

Xshell是一款SSH软件,用于控制服务器。如果你有自己喜欢的SSH软件,可以自行更改。Xftp可以方便地向你的服务器上传文件。

(1)访问NETSARANG官网

https://www.xshell.com/zh/

(2)下载免费的家庭/学校版Xshell

在“所有下载”选项里,选择“家庭/学校免费”

https://assets.zouht.com/img/blog/2504-03.webp

填写姓名(不重要)、邮箱(重要),勾选两者,点击下载。

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

访问你的邮箱,会发现两封邮件,分别是Xshell和Xftp的安装包下载链接。点击下载链接,下载Xshell和Xftp的安装包。然后安装Xshell和Xftp。

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

2.连接服务器

(1)打开Xshell

(2)点击左上角添加服务器

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

(3)填写框内信息

名称随便起,主机填写之前复制的IP地址,其他都默认,然后点击确定。

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

(4)连接服务器

点击左侧一栏刚才新建的会话,连接你的服务器。

第一次连接陌生服务器会弹出以下对话框,点击“接受并保存”

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

然后就要输入用户名,默认是“root”

然后输入你购买服务器时设置的服务器密码。

若一切正确,将会看到欢迎语:“Welcome to Alibaba Cloud Elastic Compute Service !”,此时,你已经连接到了你的云服务器。

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

下载并配置frp

1.下载frp

我们使用的内网穿透软件是frp,简单,易操作。以下是frp的GitHub页面,如果你不会用GitHub,那么就用下面我的云盘链接分享吧。

云盘下载:https://run.sh.cn/frp

2.配置frp服务端

解压Linux版的frp,用记事本打开frps.ini,清空里面的内容,粘贴以下内容,替换中括号的内容然后保存。

[common]
bind_port = 7000
dashboard_port = 7500
dashboard_user = [仪表盘用户名]
dashboard_pwd = [仪表盘密码]
token = [客户端连接密码]

示例:

[common]
bind_port = 7000
dashboard_port = 7500
dashboard_user = ChrisKim
dashboard_pwd = awa
token = test

3.配置frp客户端

解压Windows版的frp,用记事本打开frpc.ini,清空里面的内容,粘贴以下内容,替换中括号的内容然后保存。

[common]
server_addr = [服务器IP]
server_port = 7000
token = [客户端连接密码]

[mc]
type = tcp
local_ip = 127.0.0.1
local_port = 25565
remote_port = 25565

示例:

[common]
server_addr = 106.15.189.200
server_port = 7000
token = test

[mc]
type = tcp
local_ip = 127.0.0.1
local_port = 25565
remote_port = 25565

上传frp至服务器并运行

1.上传frp服务端

打开Xshell,点击如下按钮进入Xftp页面。

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

Linux版的frp拖入右侧上传至服务器。然后就可以关闭Xftp了。

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

2.安装Screen

Screen可以让软件持续运行,即使我们断开了SSH。在SSH中输入以下命令安装。

yum install screen -y

安装基本上秒装,然后就可以进行下一步

3.运行frp

创建一个新的session(注意大小写):

screen -S frp

进入frp的目录:

cd frp_0.37.0_linux_amd64/

给frps运行的权限:

chmod +x frps

检查frps的权限:(若显示名称是绿色的,则可以运行)

ll

运行frp服务端:(出现以下内容既运行正常)

./frps -c frps.ini

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

退出此session:

Ctrl + A 然后按 D

放行安全组

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

点击“手动添加”,端口范围填写7000、7500、25565(分三次添加),授权对象选择“0.0.0.0/0”

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

运行frp客户端

在本机打开frp Windows版,在文件夹内新建一个文本文档,重命名为“run.bat”

用记事本打开新建的批处理,填入以下命令:

frpc -c frpc.ini

保存后双击批处理运行,若出现以下画面既正常运行。

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

你本机的25565端口已经可以在公网访问了。公网访问你的云服务器IP的25565端口,即可访问到你本机的25565端口。

此时只要在本机运行Minecraft服务器,在游戏中输入你的云服务器IP,就可以连接上服务器啦。

附:Minecraft服务端配置方法(精简)

这其实不是我这篇教程需要介绍的内容,但是想着教程的完整性,尽量让新手一篇教程就搞定全部操作,我就也顺便说说吧。不过我只会介绍最简单的配置方法,即原版官方服务器。如果你要安装forge、fabric,或是开插件服,请自行百度教程学习。

1.下载服务端

官方启动器有服务端下载选项,点击即可下载server.jar。

(温馨提示,1.17需要Java14以上来运行,如要开1.17服务器,请至Java官网下载Java16)

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

2.首次运行服务端

将server.jar放到一个文件夹内,在里面新建文本文档,重命名为run.bat批处理,编辑批处理,填入以下内容保存。1G和8G分别是最小内存和最大内存占用,依据你的电脑配置决定。

java -Xms1G -Xmx8G -jar server.jar -nogui
pause

运行批处理,首次运行服务器会报错,因为要同意EULA协议。

https://assets.zouht.com/img/blog/2504-19.webp

打开文件夹内新生成的eula.txt,将false改为true来同意协议,保存。

3.配置服务端

用记事本打开文件夹内新生成的server.properties,可自行编辑配置。(我一般只改游戏模式、难度、命令方块,其他不需要改)

#Minecraft server properties 
#Sat Mar 14 16:12:18 CST 2020 
spawn-protection=16 
max-tick-time=60000 
query.port=25565 
generator-settings= 
force-gamemode=false 
allow-nether=true #是否允许进入地狱 
enforce-whitelist=false 
gamemode=survival #游戏模式 survival生存 creative创造 adventure冒险 
broadcast-console-to-ops=true 
enable-query=false 
player-idle-timeout=0 
difficulty=easy #难度 peaceful和平 easy简单 normal中等 hard困难 
broadcast-rcon-to-ops=true 
spawn-monsters=true #是否生成怪物 
op-permission-level=4 
pvp=true #是否启用玩家互相伤害 
snooper-enabled=true 
level-type=default 
hardcore=false #极限模式 
enable-command-block=false 
network-compression-threshold=256 
max-players=20 #最大玩家数 
max-world-size=29999984 
resource-pack-sha1= 
function-permission-level=2 
rcon.port=25575 
server-port=25565 #服务器端口,可自行修改,也可以不修改 
server-ip= #服务器IP,留空即可 
spawn-npcs=true 
allow-flight=false 
level-name=world #存档名称,也就是读取的存档文件夹的名称,默认为world 
view-distance=10 #视距 
resource-pack= 
spawn-animals=true 
white-list=false #是否启用白名单,启用后只有白名单用户能进入服务器 
rcon.password= 
generate-structures=true 
online-mode=true #是否连接正版验证,开启后只有正版玩家能进入,开盗版服请改为false 
max-build-height=256 
level-seed= #地图种子,默认留空 
prevent-proxy-connections=false 
use-native-transport=true 
motd=A Minecraft Server #在多人游戏界面显示的服务器介绍语 
enable-rcon=false

4.再次启动服务端

再运行批处理,服务器就可以正常启动了。如要关闭服务器,请在命令行内输入stop命令,直接叉掉会回档。

额外:给服务器解析域名

如果想要给服务器解析一个域名,可以在阿里云上注册一个域名,然后解析A记录为你的服务器IP。这样在游戏中填写你的域名,就可以连上服务器了。

https://assets.zouht.com/img/blog/2504-20.webp
本文链接:https://www.zouht.com/2504.html
本文使用:CC BY-NC-SA 4.0 许可
# # #
首页      教程      自建内网穿透实现 Minecraft 联机 [重制]

发表回复

textsms
account_circle
email

  • 服务器怎么关闭frp啊

    3 年前 回复
  • 欣可丶

    MC服务器在广东,frp服务器选的是上海,北方玩家(河南)连接延迟过高有办法解决吗 :shock:

    3 年前 回复
    • ChrisKim博主

      @欣可丶: 按理来说,只要在中国境内,延迟都很低,至于你这个情况,可能是服务端或者客户端的网络质量比较差。可以先看看有没有更近的服务器可以用。

      3 年前 回复
  • CNFruiter_

    Xshell和Xftp的下载申请地址已经变更了

    2 年前 回复
  • VV

    服务器想添加语音mod,在阿里云开放了udp端口,frp上也设置了udp端口转发,还是无效,这个怎么解决?MOD是”简单的语音聊天”。

    4 月前 回复
    • ChrisKim博主

      @VV: 我也不清楚你说的这个mod是什么原理,或许得查看一下mod官方的文档有没有提到相关信息。

      4 月前 回复
      • VV

        @ChrisKim: 您好,我的问题已经解决了,这个问题来自frp项目使用的go语言编写的问题,go有个issue提到了这个情况,就是ip使用ipv6的地址或者ipv4的地址有时候会忽略它的类型,优先使用udp6就是ipv6的udp协议,但是这个mod只支持ipv4的udp协议,所以我不得不禁用了linux内核的ipv6模块,问题已经解决。

        4 月前 回复
  • Woot

    双击run.bat之后cmd窗口过几秒就自动关闭了,也没有显示成功怎么办啊

    4 月前 回复

颢天

自建内网穿透实现 Minecraft 联机 [重制]
暑假将至,放假一起和朋友们联机玩游戏是多么快乐的事情啊。但是目前家庭宽带没有公网IP,对游戏联机造成了极大的阻碍。不过我们可以自建内网穿透服务器,解决这个问题。本教程搭建的是内…
扫描二维码继续阅读
2021-06-14