Simple Voice Chat 是很多人在 Minecraft 服务器里用的实时语音工具,它默认通过 UDP 协议 在 24454 端口传声音。但大多数家庭或公司网络里的电脑都躲在路由器后面,外面的人没法直接连进来。为了让朋友能连上你的语音,就得用一种叫“内网穿透”的技术。FRP 是个轻巧又快的转发工具,支持 UDP,配置也不难,特别适合用来解决这个问题。
整体结构和它是怎么工作的
FRP 分成两部分:一部分跑在有公网 IP 的远程服务器上(叫 frps),另一部分跑在你本地装了语音插件的电脑上(叫 frpc)。frps 负责接收外面来的连接请求,然后通过已经建好的通道把数据发给 frpc;frpc 再把收到的数据交给本地的语音程序(比如 Minecraft 里的 Simple Voice Chat)。
整个过程是这样的:玩家的游戏客户端向你的 VPS 公网 IP 的 24454 端口发语音包 → VPS 上的 frps 收到后,立刻通过加密隧道转给家里的 frpc → frpc 把包送到 127.0.0.1:24454,也就是你本地运行的语音服务。
具体安装和设置步骤
开始前要准备的东西
- 一台有公网 IP 的云服务器(VPS):比如阿里云、腾讯云或者国外的 DigitalOcean,系统可以是 Ubuntu 22.04。记得在安全组里打开
7000/TCP(这是 FRP 自己用的控制端口)和24454/UDP(这是语音数据走的端口)。 - 你的本地电脑或服务器:确保 Minecraft 已经成功加载了 Simple Voice Chat 插件,并且在它的配置文件
config/voicechat/voicechat-server.properties里看到port=24454这一行。 - 下载 FRP 软件:去 FRP 的 GitHub 发布页下载最新版压缩包(本文用的是
v0.52.3),服务器和本地用的是同一个包。
设置 FRP 的服务器端(frps)
在你的 VPS 上新建一个叫 frps.toml 的文件,内容如下:
# frps.toml - FRP 服务端配置
[common]
bind_port = 7000 # 客户端连这个端口来建立通道
authentication_method = "token" # 开启密码验证,防止别人乱连
token = "your_strong_secret_token" # 自己设一个复杂一点的密码,两边要一样保存后,在终端里运行:
./frps -c ./frps.toml为了省事,建议把它做成系统服务(用 systemd),这样机器重启后会自动拉起来,挂了也会自己重试。
设置 FRP 的客户端(frpc)
在你运行 Minecraft 的那台电脑上,新建一个 frpc.toml 文件:
# frpc.toml - FRP 客户端配置
[common]
server_addr = "YOUR_VPS_PUBLIC_IP" # 这里填你 VPS 的真实公网地址
server_port = 7000 # 必须和上面 frps 里写的 bind_port 一致
token = "your_strong_secret_token" # 密码必须完全一样,一个字符都不能差
[minecraft_voice_udp] # 这个名字随便起,只是用来区分不同的转发规则
type = udp # 因为语音用的是 UDP,所以这里写 udp
local_ip = "127.0.0.1" # 本地语音服务监听的地址,一般就是本机
local_port = 24454 # 你 Minecraft 语音插件实际用的端口号
remote_port = 24454 # 外面的人通过 VPS 的这个端口来访问语音保存后,执行:
./frpc -c ./frpc.toml同样推荐设置成系统服务,避免手动启动麻烦。
怎么测试和解决常见问题
看看有没有成功
- 启动 frpc 后,如果看到日志里有
proxy [minecraft_voice_udp] started,就说明通道已经通了。 - 你可以从手机流量或者别的网络,用命令
nc -uvz YOUR_VPS_PUBLIC_IP 24454试试能不能通(有些 Linux 系统要先装nmap或socat才有这个命令)。
遇到问题怎么办
- 提示认证失败或者连不上:最可能的原因是两边的
token不一样,仔细检查是不是拼错了,大小写、空格都要对。 - 能连上但没声音:可能是 VPS 的防火墙或者云平台的安全组没开 UDP 端口,确认
24454/UDP是放行状态。 - 语音断断续续或者延迟很高:UDP 本身不保证重传,如果网络质量不好,可以在 FRP 配置里加上 KCP 协议(一种优化传输的方式),能改善卡顿。
总结
只需要改几个简单的配置,就能让 UDP 语音数据安全地穿过 NAT。
这个方法不光能用在 Minecraft 上,任何跑在内网、用 UDP 通信的服务(比如自建语音聊天室、监控设备等)都能这么干。
以后如果想更省服务器资源,还可以试试 FRP 的 P2P 直连模式,让两端直接通信,不用经过中转。