LomoCat
没有公网 IP,用 frp 连到家里的服务器

没有公网 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 — 你家电脑要连的云服务器 IP
  • localPort — 你家电脑上 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)

还没有评论,来做第一个吧

发表评论

0/2000