闲来无事,把老家那台吃灰的笔记本拖出来透口气——顺手给 SSH 和 MySQL 开了个“公网小门”。

半小时踩完 FRP 0.64.0 的新坑,整理成这份笔记,权当备忘,也供后来人少走一段弯路。

一、FRP 是什么?

FRP(Fast Reverse Proxy) 是一个高性能的反向代理应用,用于内网穿透。

你可以用它把家里/公司/虚拟机里的服务(SSH、Web、MySQL等)暴露到公网!

本文配置仅适用于 0.64.0 及更高版本。

二、环境示例

公网服务器:rocky 8.9

内网主机:Windows 11

目标:把window 11上的内网虚拟机的 SSH(22) 映射到公网端口。

三、下载FRP

服务端 Linux(也可以手动下载再上传):

cd /opt
sudo wget https://github.com/fatedier/frp/releases/download/v0.64.0/frp_0.64.0_linux_amd64.tar.gz
sudo tar -zxvf frp_0.64.0_linux_amd64.tar.gz 
sudo mv frp_0.64.0_linux_amd64 frp
cd frp

客户端 Windows:

下载地址:https://github.com/fatedier/frp/releases/download/v0.64.0/frp_0.64.0_windows_amd64.zip

解压到:C:\frp

四、服务端配置

编辑配置文件 frps.toml

sudo nano /opt/frp/frps.toml

粘贴下方内容并保存退出(可根据需求调整)

bindPort = 7000              # 客户端连接端口(必须开放!)
auth.token = "test123"     # 认证令牌(和客户端一致!)

dashboardPort = 7500         # Web 管理界面(可选)
dashboardUser = "admin"      # 登录用户名
dashboardPwd = "StrongPwd123!" # 强密码!

allowPorts = [6000-6100]     # 允许映射的端口范围(安全!)

五、服务端启动

编辑文件frps.service

sudo nano /etc/systemd/system/frps.service

粘贴下方内容并保存退出

[Unit]
Description=FRP Server Service
After=network.target

[Service]
Type=simple
User=root
WorkingDirectory=/opt/frp
ExecStart=/opt/frp/frps -c /opt/frp/frps.toml
Restart=always
RestartSec=5s
LimitNOFILE=65536

[Install]
WantedBy=multi-user.target

Linux终端执行命令

sudo systemctl daemon-reload
sudo systemctl enable --now frps
sudo journalctl -u frps -f  # 实时查看日志,确认启动成功

日志如果出现 frps started + bind port 7000 就代表成功了。

六、客户端配置

编辑windows路径C:\frp\frpc.toml 文件

serverAddr = "8.8.8.8"       # 你的公网服务器IP
serverPort = 7000            # frps 的 bindPort
auth.token = "test123"       # 必须和 frps.toml 一致!

[[proxies]]
name = "ssh"
type = "tcp"
localIP = "192.168.1.1"      # 你的内网虚拟机IP
localPort = 22               # SSH 端口
remotePort = 6000            # 公网暴露端口

测试启动:

windows终端执行

cd C:\frp
frpc.exe -c frpc.toml

日志出现 login to server success 与 proxy added 即正常。

七、连通性验证

服务端:

sudo netstat -tuln | grep -E ':(6000)'  

如果出现以下代表没问题

tcp6 0 0 :::6000 :::* LISTEN
tcp6 0 0 :::6001 :::* LISTEN

本地测试公网访问:

telnet 公网IP 6000
或 ssh -p 6000 用户名@公网IP

以上都没问题就代表内网穿透成功了。

七、Windows 开机自启

创建 C:\frp\start_frpc.bat

@echo off
cd /d C:\frp
:loop
frpc.exe -c frpc.toml
echo FRPC exited, restarting in 10 seconds...
timeout /t 10 >nul
goto loop

任务计划程序设置

任务计划程序 → 触发器“系统启动时” → 运行上述批处理 → 勾选用最高权限 → (勾选隐藏可在后台运行)。

重启后任务管理器确认 frpc.exe 持续运行即可。

八、常见故障速查

1. unknown field "token"

配置改为 auth.token。

2. login to server failed

检查令牌、7000 端口是否被云安全组拦截。

3. 服务端未监听 remotePort

frps 日志需出现 proxy started;若无,重启 frps 并确认防火墙。

4. [[proxies]] 语法报错

使用标准 TOML,禁用 Tab,全部空格缩进。

5.启动后闪退

配置文件路径错误 or 权限不足,用绝对路径,管理员运行

九、安全提示

公网暴露数据库务必修改强口令,或限制来源 IP;

生产环境建议开启 useEncryption / useCompression,并配置防火墙白名单。

----------------------------------------------------------------------------------------------

保留以上步骤即可在 15 分钟内完成穿透;

若后续版本语法再变,请优先查阅官方 release note。

以上内容如有错误恳请指正。