Featured image of post FRP-Deploy

FRP-Deploy

FRP 内网穿透部署教程

部署前提

  • 公网服务器(VPS):需具备公网 IP,用于部署 frps(服务端)。
  • 内网服务器:可访问公网,用于部署 frpc(客户端)。
  • 网络权限:VPS 防火墙需开放 frps 监听端口(如 7000)和穿透服务端口(如 10022)。

VPS 部署 frps(服务端)

下载并解压 FRP

进入工作目录并下载指定版本的 FRP:

1
2
3
4
cd ~
wget https://github.com/fatedier/frp/releases/download/v0.58.0/frp_0.58.0_linux_amd64.tar.gz
tar -zxvf frp_0.58.0_linux_amd64.tar.gz
cd frp_0.58.0_linux_amd64

创建服务端配置文件

创建 frps.toml 配置文件:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
cat > frps.toml << 'EOF'
bindPort = 7000

[auth]
token = "your-secret-token-here"

[webServer]
bindAddr = "0.0.0.0"
port = 7500
user = "admin"
password = "your-web-password"
EOF
  • bindPort:frpc 连接 frps 的通信端口。
  • token:认证密钥,需与客户端保持一致。
  • webServer 部分为可选配置,用于启用管理面板。

启动 frps

执行以下命令启动服务端:

1
./frps -c ./frps.toml

正常启动后,日志中应包含 frps started successfully

设置开机自启(systemd)

创建 systemd 服务文件:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
sudo tee /etc/systemd/system/frps.service << EOF
[Unit]
Description=FRP Server Daemon
After=network.target

[Service]
Type=simple
User=your-username
WorkingDirectory=/home/your-username/frp_0.58.0_linux_amd64
ExecStart=/home/your-username/frp_0.58.0_linux_amd64/frps -c /home/your-username/frp_0.58.0_linux_amd64/frps.toml
Restart=on-failure
RestartSec=5
LimitNOFILE=65536

[Install]
WantedBy=multi-user.target
EOF

启用并启动服务:

1
2
3
sudo systemctl daemon-reload
sudo systemctl enable frps
sudo systemctl start frps

查看服务状态:

1
sudo systemctl status frps

确保状态为 active (running)

内网服务器部署 frpc(客户端)

下载并解压 FRP

在内网服务器上执行:

1
2
3
4
cd ~
wget https://github.com/fatedier/frp/releases/download/v0.58.0/frp_0.58.0_linux_amd64.tar.gz
tar -zxvf frp_0.58.0_linux_amd64.tar.gz
cd frp_0.58.0_linux_amd64

创建客户端配置文件

创建 frpc.toml

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
cat > frpc.toml << 'EOF'
serverAddr = "your-vps-public-ip"
serverPort = 7000

auth.token = "your-secret-token-here"

[[proxies]]
name = "ssh-to-internal"
type = "tcp"
localIP = "127.0.0.1"
localPort = 22
remotePort = 10022
EOF
  • serverAddr:替换为 VPS 的公网 IP。
  • auth.token:必须与 frps.toml 中的 token 一致。
  • localPort:根据内网服务实际端口修改(如 SSH 服务为 2255,则此处改为 2255)。
  • remotePort:VPS 上对外暴露的端口。

测试连接

运行以下命令测试连接:

1
./frpc -c ./frpc.toml

若输出中包含 login to server successstart proxy success,则表示连接成功。按 Ctrl+C 退出测试。

设置开机自启

创建 systemd 服务文件:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
sudo tee /etc/systemd/system/frpc.service << EOF
[Unit]
Description=FRP Client Daemon
After=network.target

[Service]
Type=simple
User=your-username
WorkingDirectory=/home/your-username/frp_0.58.0_linux_amd64
ExecStart=/home/your-username/frp_0.58.0_linux_amd64/frpc -c /home/your-username/frp_0.58.0_linux_amd64/frpc.toml
Restart=on-failure
RestartSec=5
LimitNOFILE=65536

[Install]
WantedBy=multi-user.target
EOF

启用服务:

1
2
3
sudo systemctl daemon-reload
sudo systemctl enable frpc
sudo systemctl start frpc

检查状态:

1
sudo systemctl status frpc

从公网连接内网服务

配置 VPS 防火墙

在 VPS 管理控制台添加安全组规则,放行以下端口:

  • 7000:frps 通信端口
  • 10022:SSH 穿透端口(或自定义的 remotePort

建立 SSH 连接

使用以下命令连接内网服务器:

1
ssh -p 10022 your-username@your-vps-public-ip
  • your-username:内网服务器的登录用户名。
  • your-vps-public-ip:VPS 的公网 IP 地址。

常见问题排查

  • 连接被拒绝(connection refused) 检查 VPS 防火墙是否放行 7000remotePort
  • Token 认证失败 确保 frps.tomlfrpc.toml 中的 token 完全一致。
  • 连接后立即关闭(Connection closed by …) 检查 frpc.toml 中的 localPort 是否正确,以及内网服务是否正在运行。
  • 端口已被占用 若启动 frps 时报错 address already in use,说明端口被占用,可通过 netstat -tuln | grep 7000 查看并终止占用进程。

进阶建议

  • 安全加固 使用强密码和 SSH 密钥认证,避免使用弱口令。
  • 高可用性 通过 systemd 配置自动重启策略,确保服务异常退出后能自动恢复。
  • 多服务穿透 可在 frpc.toml 中添加多个 [[proxies]] 配置,实现 Web 服务、数据库等多协议穿透。
  • 状态监控 启用 webServer 配置后,可通过浏览器访问 http://<VPS_IP>:7500 查看客户端连接状态和流量信息。

参考资料

  • FRP 官方 GitHub:https://github.com/fatedier/frp
  • FRP 官方文档:https://gofrp.org
Licensed under CC BY-NC-SA 4.0
© 2023-2025 Ch0ser. All Rights Reserved.
使用 Hugo 构建
主题 StackJimmy 设计