从零搭建 Frp 内网穿透:我终于能和小伙伴异地联机玩 Minecraft 了!
大家好,我是 33blog 的老王。上周和异地的好基友约好一起玩 Minecraft,结果发现直接联机根本连不上——这才想起来我们都在不同的内网环境里。经过一番折腾,终于用 Frp 实现了稳定穿透,今天就把这个血泪史分享给大家。
为什么我的世界联机需要内网穿透?
相信很多小伙伴都遇到过这种情况:在局域网内开 Minecraft 服务器,室友都能连,但外网的朋友死活进不来。这是因为家庭宽带通常没有公网 IP(除非你专门申请了商业宽带),就像住在小区里没有门牌号,外人自然找不到你。
我试过各种方案:花生壳(速度慢)、路由器 DMZ(不安全)、云服务器开服(贵),最后发现 Frp 这个开源工具才是真香!它能在有公网 IP 的服务器(比如便宜的腾讯云学生机)和本地机器之间建立隧道,把内网服务暴露出去。
准备工作:你需要这些东西
- 一台有公网 IP 的服务器(1核1G 就够,学生机 10 元/月)
- 本地运行 Minecraft 服务器的电脑
- 能 SSH 连接的工具(FinalShell/Xshell 都行)
- 一杯咖啡(配置过程可能需要点耐心)
实战开始:服务端配置
首先登录你的云服务器(假设是 Linux),下载 Frp 最新版:
wget https://github.com/fatedier/frp/releases/download/v0.51.3/frp_0.51.3_linux_amd64.tar.gz
tar -zxvf frp_0.51.3_linux_amd64.tar.gz
cd frp_0.51.3_linux_amd64
编辑服务端配置文件 frps.ini(我用 nano,你们可以用 vim):
[common]
bind_port = 7000 # 客户端连接的端口
token = your_strong_password # 建议改成复杂字符串
dashboard_port = 7500 # 监控面板端口
dashboard_user = admin
dashboard_pwd = admin123
启动服务端(建议用 systemd 托管,这里先简单演示):
./frps -c frps.ini
客户端配置:本地机器设置
在运行 Minecraft 的电脑上下载对应版本的 Frp 客户端,编辑 frpc.ini:
[common] server_addr = 你的服务器公网IP server_port = 7000 token = your_strong_password # 和服务端保持一致 [minecraft] type = tcp local_ip = 127.0.0.1 local_port = 25565 # MC默认端口 remote_port = 25565 # 对外暴露的端口</pre>
启动客户端:
./frpc -c frpc.ini
避坑指南:我踩过的那些雷
1. 防火墙没开端口:第一次配置完死活连不上,后来发现阿里云控制台要手动开 7000 和 25565 端口,血亏两小时!
2. 本地防火墙拦截:Windows 用户记得在防火墙放行 Java(TM) Platform SE binary
3. Token 不一致:客户端和服务端的 token 必须完全一致(包括大小写),有次我多打了个空格 debug 到凌晨...
最终测试:和小伙伴联机吧!
让朋友在 Minecraft 多人游戏直接输入
你的服务器IP:25565
,如果一切正常就能看到你的服务器了!顺便说下,通过
http://服务器IP:7500
可以访问 Frp 仪表盘,能看到实时连接状态(用前面设置的 dashboard_user/pwd 登录)。进阶优化(可选)
1. 用 systemd 守护进程(掉线自动重启)
2. 配置域名 + SSL 证书(装逼用)
3. 限制带宽防止被挖矿(别问我是怎么知道的)如果遇到问题,欢迎在评论区留言。下次准备写篇《Frp 开机自启的 N 种姿势》,感兴趣的话记得关注~
评论