本教程将指导您如何使用 WireGuard 和一台公网服务器(VPS),让您和朋友们能流畅地连接到您在家中电脑上开设的 Minecraft 服务器。
两种方案对比
您可以根据自己的需求选择最合适的方案:
| 模式 | 谁需要安装 WireGuard | 优点 | 缺点 |
|---|---|---|---|
| 方案A:公网转发 | 仅开服的服主 | 简单方便,玩家像连接普通服务器一样,直接使用公网 IP | 延迟略高于方案B,所有玩家的流量都经过公网服务器转发 |
| 方案B:全员组网 | 所有玩家 + 服主 | 延迟极低,如同局域网联机,连接更安全、稳定 | 所有玩家都需要进行 WireGuard 的基本配置 |
新手建议:如果您是第一次尝试,或者希望让朋友们能最简单地加入游戏,强烈推荐从 方案A 开始。
〇、准备工作
在开始之前,您需要:
- 一台拥有公网 IP 的云服务器(VPS),并已通过 SSH 登录。本教程以 Debian/Ubuntu 系统为例。
- 在您自己的电脑(作为 Minecraft 服务器)上安装好 WireGuard 客户端。
- Windows/macOS: 从 WireGuard 官网 下载。
- Linux: 使用包管理器安装
wireguard-tools。
- 确保您的公网服务器防火墙(或云服务商的安全组)已放行以下端口:
- UDP
51820(WireGuard 默认端口) - TCP
25565(Minecraft 默认端口)
- UDP
一、公网服务器 (VPS) 配置
这部分操作在您的公网服务器上完成。
1. 安装 WireGuard
1 | sudo apt update |
2. 生成服务器密钥对
1 | # 进入 WireGuard 配置目录 |
- 重要:请记下服务器的公钥,后续配置会用到。可随时使用
sudo cat /etc/wireguard/publickey查看。 - 私钥已保存在
/etc/wireguard/privatekey文件中。
3. 开启内核转发
这会让服务器能够转发网络流量,是实现联机的关键。
1 | # 临时开启 |
二、方案A:公网转发 (服主配置)
此方案下,只有您(服主)需要配置 WireGuard,您的朋友可以直接连接服务器公网 IP。
步骤 1: 在【本地电脑】上生成密钥
- 打开您本地电脑的 WireGuard 客户端。
- 点击
添加空隧道...,取个名字(如mc-server)。 - 客户端会自动生成一对密钥。复制界面上显示的【公钥】,我们下一步会用到。
步骤 2: 在【公网服务器】上创建配置文件
创建并编辑 /etc/wireguard/wg0.conf 文件:
1 | sudo nano /etc/wireguard/wg0.conf |
粘贴以下内容,并替换占位符:
<公网服务器私钥>: 填入sudo cat /etc/wireguard/privatekey的输出。<本地电脑的公钥>: 填入上一步从您本地 WireGuard 客户端复制的公钥。
1 | [Interface] |
步骤 3: 在【本地电脑】上完成配置
回到您本地电脑的 WireGuard 客户端,编辑刚才创建的隧道配置,替换为以下内容:
<本地电脑的私钥>: 客户端已自动填好,无需改动。<公网服务器的公钥>: 填入您在服务器上用sudo cat /etc/wireguard/publickey命令查看到的公钥。<你的公网服务器IP>: 填入您 VPS 的实际公网 IP 地址。
1 | [Interface] |
保存配置。
步骤 4: 启动并验证
- 启动服务器端:在公网服务器上执行:
1
2
3sudo wg-quick up wg0
# 设置开机自启
sudo systemctl enable wg-quick@wg0 - 启动客户端:在您本地电脑的 WireGuard 客户端中,点击
启动。 - 测试连通性:在本地电脑的命令行/终端中执行
ping 10.0.0.1。如果能收到回复,说明隧道已成功建立! - 开始游戏:在本地电脑上启动 Minecraft 服务端。现在,所有玩家(包括您自己)都可以通过输入您的
<公网服务器IP>来加入游戏了!
三、方案B:全员组网 (服主 + 玩家配置)
此方案下,所有人都需要安装和配置 WireGuard,共同加入一个虚拟局域网。
步骤 1: 为【每个玩家】生成密钥
您需要收集每一位玩家(也包括您自己)的 WireGuard 公钥。让他们:
- 安装 WireGuard 客户端。
添加空隧道...,客户端会自动生成密钥。- 将界面上显示的【公钥】发给您。
步骤 2: 在【公网服务器】上创建配置文件
编辑 /etc/wireguard/wg0.conf 文件,为每个人(服主+所有玩家)添加一个 [Peer] 区块。
<公网服务器私钥>: 填入sudo cat /etc/wireguard/privatekey的输出。<服主的公钥>,<玩家A的公钥>…: 填入您收集到的每个人的公钥。- 为每个人分配一个唯一的 IP 地址,例如服主是
10.0.0.2,玩家A是10.0.0.3,以此类推。
1 | [Interface] |
步骤 3: 将【配置信息】分发给服主和玩家
您需要为每个人提供一份他们的专属配置文件。
给服主的配置 (10.0.0.2):
1 | [Interface] |
给玩家A的配置 (10.0.0.3):
1 | [Interface] |
注意:每个人的配置中,
[Interface]下的PrivateKey和Address都是独一无二的。[Peer]部分则完全相同。
步骤 4: 启动并验证
- 启动服务器端:在公网服务器上执行
sudo wg-quick up wg0并设置开机自启。 - 启动各客户端:所有玩家在自己的 WireGuard 客户端中填入配置并点击
启动。 - 测试连通性:
- 所有玩家尝试
ping 10.0.0.1(公网服务器)。 - 所有玩家尝试
ping 10.0.0.2(服主)。 - 如果都能 ping 通,说明虚拟局域网已建立成功。
- 所有玩家尝试
- 开始游戏:在服主的本地电脑上启动 Minecraft 服务端。现在,所有玩家都可以通过输入服主的虚拟 IP
10.0.0.2来加入游戏了!
四、最终检查与排错
- 检查 WireGuard 状态:在任何一台设备上执行
sudo wg(Linux/macOS) 或在客户端界面查看 (Windows),可以看到当前的连接状态和最后一次握手时间。 - 防火墙问题:如果无法连接,请再次检查公网服务器的防火墙/安全组是否已放行 UDP
51820和 TCP25565端口。同时,检查本地电脑的防火墙是否允许 Java 程序联网。 - Minecraft 服务器配置:为确保服务器只在安全的虚拟网络内监听,可以在
server.properties文件中设置server-ip=10.0.0.2(仅对方案B推荐)。