
没有公网 IP,用 frp 连到家里的服务器
发布: 2026-06-20更新: 2026-10-11128 次阅读7 分钟
在家里开服时,服务端能启动、局域网也能连接,外面的朋友却连不上。除了防火墙和端口转发,还要检查宽带有没有可入站访问的公网 IP。
这篇用 frp 做转发:云服务器运行 frps,家里电脑运行 frpc,朋友通过云服务器的地址连接。
frp 是什么
frp 由两个部分组成:
- 服务端 frps — 放在你的云服务器上
- 客户端 frpc — 放在你家电脑上(搭 MC 服务器的那台)
你家电脑连上云服务器后,别人访问云服务器的某个端口,流量会自动转发到你家电脑上。
下载 frp
去 GitHub releases 页面下载:https://github.com/fatedier/frp/releases
注意系统架构:
| 你的设备 | 下载哪个 |
|---|---|
| 云服务器(Linux x64) | frp_X.X.X_linux_amd64.tar.gz |
| 家电脑(Windows) | frp_X.X.X_windows_amd64.zip |
| 树莓派 | frp_X.X.X_linux_arm64.tar.gz |
两边版本要一致。
配置服务端(云服务器)
上传到云服务器并解压:
tar -xzf frp_0.61.0_linux_amd64.tar.gz
cd frp_0.61.0_linux_amd64
编辑 frps.toml:
bindPort = 7000
auth.method = "token"
auth.token = "替换成你自己生成的长随机字符串"
bindPort 是控制端口。两端填写相同的鉴权 token,示例中的占位文字必须替换。
然后启动:
./frps -c frps.toml
日志出现 service started 后,再检查客户端是否能连接。
如果你想长期运行,建议配成 systemd 服务:
sudo vim /etc/systemd/system/frps.service
[Unit]
Description=frp server
After=network.target
[Service]
Type=simple
ExecStart=/root/frp_0.61.0_linux_amd64/frps -c /root/frp_0.61.0_linux_amd64/frps.toml
Restart=always
[Install]
WantedBy=multi-user.target
sudo systemctl enable --now frps
云服务器的安全组也需要放开两个端口:
- 7000/tcp — frp 控制端口
- 你后面要映射的端口(比如 MC 的 25565)
配置客户端(家电脑)
解压 frp,编辑 frpc.toml:
serverAddr = "你的云服务器公网IP"
serverPort = 7000
auth.method = "token"
auth.token = "替换成你自己生成的长随机字符串"
[[proxies]]
name = "mc-server"
type = "tcp"
localIP = "127.0.0.1"
localPort = 25565
remotePort = 25565
解释一下:
serverAddr— 你家电脑要连的云服务器 IPlocalPort— 你家电脑上 MC 服务器的端口remotePort— 外面访问云服务器的哪个端口
启动:
# Linux
./frpc -c frpc.toml
# Windows:在终端运行
frpc.exe -c frpc.toml
看到 login to server success 就说明连上了。
让朋友连进来
现在你的朋友不需要连你家 IP 了,直接连你的云服务器 IP:
服务器地址: 你的云服务器公网IP
端口: 25565
流量路径:朋友 → 云服务器:25565 → frp 隧道 → 你家电脑:25565 → MC 服务器
映射多个服务
frp 支持同时映射多个端口。比如你又要开 MC 又要开网站:
serverAddr = "你的云服务器公网IP"
serverPort = 7000
auth.method = "token"
auth.token = "替换成你自己生成的长随机字符串"
[[proxies]]
name = "mc-server"
type = "tcp"
localIP = "127.0.0.1"
localPort = 25565
remotePort = 25565
[[proxies]]
name = "web-site"
type = "tcp"
localIP = "127.0.0.1"
localPort = 3000
remotePort = 8080
这样外面访问 云服务器IP:8080 就到了你家电脑的 3000 端口。
几个常用场景的端口
| 场景 | 默认端口 |
|---|---|
| Minecraft Java 版 | 25565 |
| Minecraft 基岩版 | 19132(UDP) |
| HTTP 网站 | 80 |
| HTTPS 网站 | 443 |
| SSH 远程连接 | 22 |
| RDP 远程桌面 | 3389 |
注意基岩版是 UDP 协议,frp 配置里要把 type = "tcp" 改成 type = "udp"。
frp 的一些注意点
- 流量经过云服务器。 实际体验受云端带宽、家庭上传速度和延迟影响,人数不能仅按标称带宽估算。
- Windows 上建议把 frpc 注册成服务。 用
nssm工具,这样开机自启、后台运行,不用一直开着 cmd 窗口 - frp 支持加密和压缩。 在
frpc.toml的[[proxies]]里加两行:是否开启压缩要看流量类型,已压缩的数据通常收益不大。transport.useEncryption = true transport.useCompression = true
连接失败时,可以记录服务端、客户端的报错和端口配置,再逐项排查。
鉴权字段参考:frp 官方文档。
评论 (0)
还没有评论,来做第一个吧