FRP 内网穿透配置教程(frps + fp-multiuser)
简介
frp 是一个高性能的内网穿透工具,由服务端 frps 与客户端 frpc 组成:服务端部署在有公网 IP 的服务器上,客户端运行在局域网内,从而把内网服务(如 Minecraft、SSH、Web)映射到公网。
本文额外引入 fp-multiuser 插件实现多用户独立 Token 鉴权,适合多个客户端共用一个 frps 的场景。
TIP架构示意:
frpc(内网) --tcp--> frps(公网) --httpPlugin--> fp-multiuser(本地鉴权)
服务端部署流程
1. 上传并启动 frps
将 frps 二进制文件与配置文件放到 /frps 目录,先手动启动验证:
# 创建目录并上传 frps、frps.tomlcd /frps./frps -c frps.toml同时创建 /fp-multiuser 目录,上传 fp-multiuser 二进制与 tokens 文件。
NOTEDebian 系统若缺少 systemd,可先执行
apt install systemd再使用下面的服务方式托管。
2. 配置防火墙
# 放行 frp 通信端口与服务端面板端口sudo ufw allow 7000/tcpsudo ufw allow 7500/tcpsudo ufw status | grep 7000sudo ufw status | grep 75003. 配置 systemd 开机自启
将 frps.service 与 fp-multiuser.service 上传到 /etc/systemd/system/ 目录,然后:
# 重新加载服务单元systemctl daemon-reload
# 启动 frpsystemctl start frps# 停止 frpsystemctl stop frps# 重启 frpsystemctl restart frps# 查看 frp 状态systemctl status frps
# 配置 frps / frpc 开机自启动systemctl enable frpssystemctl enable frpcTIP
frps.service已配置ExecStartPre在启动前自动重启fp-multiuser,无需手动先后启动。
frps.toml
bindPort = 7000# auth.method = "token"# auth.token = "12345678" # [fp-multiuser]
webServer.addr = "0.0.0.0" # 允许所有IP访问(若只想本机访问,填127.0.0.1)webServer.port = 7500 # webServer 访问端口(自定义,如7500)webServer.user = "admin" # 登录用户名webServer.password = "123456" # 登录密码
[[httpPlugins]]name = "multiuser"addr = "127.0.0.1:7200"path = "/handler"ops = ["Login"]NOTE
bindPort为客户端连接端口,webServer为管理面板。httpPlugins把登录鉴权转发到本地fp-multiuser插件。
frps.service
[Unit]Description=frp serverAfter=network.target syslog.target fp-multiuser.serviceWants=network.targetRequires=fp-multiuser.service
[Service]Type=simple# 核心:启动 frps 前先重启 fp-multiuser(自动重新加载 tokens)ExecStartPre=/usr/bin/systemctl restart fp-multiuser.serviceExecStart=/frps/frps -c /frps/frps.tomlRestart=on-failureRestartSec=5s
[Install]WantedBy=multi-user.targetfp-multiuser.service
[Unit]Description=FRP Multiuser Auth PluginAfter=network.target# 声明 frps 依赖这个服务(可选,后续 frps 配置会反向依赖)
[Service]Type=simpleUser=root# 插件的启动命令(路径必须和你的 /fp-multiuser 一致)ExecStart=/fp-multiuser/fp-multiuser -l 127.0.0.1:7200 -f /fp-multiuser/tokens# 进程崩溃时自动重启Restart=on-failureRestartSec=5s# 后台运行WorkingDirectory=/fp-multiuser# 停止时强制杀进程ExecStop=pkill -9 fp-multiuser
[Install]WantedBy=multi-user.targettokens
fp-multiuser 读取的账号映射文件,格式为 用户名=Token:
cui123666=1234567890Token 等同于访问凭证,请勿泄露;如泄露请在 tokens 文件中立即更换。
frpc.toml
客户端配置示例,将本地的 Minecraft 服务映射到公网:
serverAddr = "ip地址"serverPort = 7000auth.method = "token"#auth.token = "12345678"metadatas.token = "1234567890"user = "cui123666"
[transport]protocol = "tcp"
[transport.tls]enable = true
[[proxies]]name = "minecraft"type = "tcp"localIP = "127.0.0.1"localPort = 25565remotePort = 映射端口transport.useEncryption = trueNOTE
user与metadatas.token需与tokens文件中定义的用户名和 Token 对应,remotePort为公网访问端口。
祝你天天开心!
部分信息可能已经过时









