linux上安装frp客户端
# 全栈Frps内网穿透部署指南
# 一、服务端安装与配置
# 1. 环境要求
- Linux服务器(建议Ubuntu 20.04+ / CentOS 7+)
- 开放端口:7000(控制端口)、7071(HTTP)、7500(仪表盘)
- Root权限
# 2. 自动化安装脚本
#!/bin/bash
version="0.52.3"
arch="amd64" # 可选 amd64/arm64/arm
# 检查root权限
[ "$(id -u)" != "0" ] && echo "请使用sudo执行" && exit 1
# 下载解压
wget -q https://github.com/fatedier/frp/releases/download/v${version}/frp_${version}_linux_${arch}.tar.gz || exit 1
tar xzf frp_${version}_linux_${arch}.tar.gz || exit 1
# 安装核心文件
cd frp_${version}_linux_${arch}
sudo mv frps /usr/local/bin/
# 生成配置文件
sudo mkdir -p /etc/frp
sudo tee /etc/frp/frps.ini > /dev/null <<EOF
[common]
bind_port = 7000
vhost_http_port = 7071
dashboard_port = 7500
dashboard_user = admin
dashboard_pwd = admin
subdomain_host = dev.msh.com
token = your_secure_token_here
EOF
# 创建Systemd服务
sudo tee /etc/systemd/system/frps.service > /dev/null <<EOF
[Unit]
Description=Frp Server Service
After=network.target
[Service]
Type=simple
ExecStart=/usr/local/bin/frps -c /etc/frp/frps.ini
Restart=always
RestartSec=3
[Install]
WantedBy=multi-user.target
EOF
# 启动服务
sudo systemctl daemon-reload
sudo systemctl enable --now frps
echo "安装完成!访问仪表盘:http://服务器IP:7500"
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
# 3. 关键配置说明
配置项 | 说明 | 建议值 |
---|---|---|
bind_port | 客户端连接端口 | 7000 |
vhost_http_port | HTTP代理端口 | 7071 |
dashboard_port | 监控面板端口 | 7500 |
subdomain_host | 子域名根域名 | 根据实际需求设置 |
token | 安全验证令牌(必须修改) | 高强度随机字符串 |
# 二、客户端配置示例
# 快速安装脚本
#!/bin/bash
# 设置参数
FRPC_VERSION="0.52.3"
ARCH="amd64" # 可选 amd64/arm64/arm
SERVER_IP="your_server_ip" # 替换为实际服务器IP
TOKEN="your_secure_token" # 与服务端token一致
# 自动安装流程
wget -q https://github.com/fatedier/frp/releases/download/v${FRPC_VERSION}/frp_${FRPC_VERSION}_linux_${ARCH}.tar.gz
tar xzf frp_${FRPC_VERSION}_linux_${ARCH}.tar.gz
cd frp_${FRPC_VERSION}_linux_${ARCH}
# 安装二进制文件
sudo mv frpc /usr/local/bin/
sudo mkdir -p /etc/frp
# 生成配置文件
sudo tee /etc/frp/frpc.ini > /dev/null <<EOF
[common]
server_addr = ${SERVER_IP}
server_port = 7000
token = ${TOKEN}
[ssh] # SSH示例配置
type = tcp
local_ip = 127.0.0.1
local_port = 22
remote_port = 6000
EOF
# 创建系统服务
sudo tee /etc/systemd/system/frpc.service > /dev/null <<EOF
[Unit]
Description=Frp Client Service
After=network.target
[Service]
Type=simple
ExecStart=/usr/local/bin/frpc -c /etc/frp/frpc.ini
Restart=on-failure
RestartSec=5
[Install]
WantedBy=multi-user.target
EOF
# 启动服务
sudo systemctl daemon-reload
sudo systemctl enable --now frpc
echo "安装完成!使用 systemctl status frpc 查看状态"
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
#!/bin/bash
### BEGIN INIT INFO
# Provides: frpc
# Required-Start: $network $local_fs $remote_fs
# Required-Stop: $network $local_fs $remote_fs
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: Start frpc at boot time
# Description: Enable frpc service.
### END INIT INFO
case "$1" in
start)
/usr/local/bin/frpc -c /etc/frpc.ini &
;;
stop)
pkill frpc
;;
restart)
pkill frpc
/usr/local/bin/frpc -c /etc/frpc.ini &
;;
*)
echo "Usage: $0 {start|stop|restart}"
exit 1
;;
esac
#赋予脚本可执行权限
sudo chmod +x /etc/init.d/frpc
#开机自启
sudo update-rc.d frpc defaults
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
# 1. 基础配置文件 (frpc.ini
)
[common]
server_addr = your_server_ip # frps服务器公网IP
server_port = 7000 # 与服务端bind_port一致
token = your_secure_token # 必须与服务端token相同
# ---------------------------
# 应用配置示例(按需添加)
# ---------------------------
# SSH穿透
[ssh]
type = tcp
local_ip = 127.0.0.1
local_port = 22
remote_port = 6000 # 通过服务器6000端口访问
# HTTP网站穿透
[web]
type = http
local_port = 80
subdomain = test # 访问 test.dev.msh.com (需服务端配置subdomain_host)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
# 2. 客户端管理命令
# 前台启动(调试模式)
frpc -c /etc/frp/frpc.ini
# 后台服务管理
sudo systemctl start frpc 启动客户端
sudo systemctl stop frpc 停止服务
sudo systemctl restart frpc 重启服务
journalctl -u frpc -f 查看实时日志
systemctl status frpc 检查运行状态
sudo journalctl -u frpc -f # 查看实时日志
1
2
3
4
5
6
7
8
9
10
2
3
4
5
6
7
8
9
10
# 三、Nginx反向代理配置
# 1. 基础代理配置
server {
listen 80;
server_name *.dev.msh.com;
access_log /var/log/nginx/frp.access.log;
error_log /var/log/nginx/frp.error.log;
location / {
proxy_pass http://127.0.0.1:7071;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
# WebSocket支持
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
# 2. HTTPS增强配置
# 使用Certbot获取SSL证书
sudo certbot --nginx \
-d "*.dev.msh.com" \
-d "dev.msh.com" \
--email admin@example.com \
--agree-tos \
--no-eff-email
# 自动续期配置
sudo crontab -e
# 添加以下内容
0 3 * * * /usr/bin/certbot renew --quiet
1
2
3
4
5
6
7
8
9
10
11
12
2
3
4
5
6
7
8
9
10
11
12
# 四、DNS泛解析配置
# 1. DNS记录设置
记录类型 | 主机记录 | 记录值 | TTL |
---|---|---|---|
A | * | 服务器IP | 600 |
A | dev | 服务器IP | 3600 |
# 2. 本地测试方法
# 临时修改hosts文件(Linux/Mac)
echo "服务器IP test.dev.msh.com" | sudo tee -a /etc/hosts
1
2
2
# 五、安全加固建议
Token保护
- 使用长度超过16位的复杂字符串
- 定期更换访问令牌
仪表盘防护
# frps.ini [common] dashboard_user = admin_prod dashboard_pwd = StrongPassword@2023
1
2
3
4防火墙策略
# 仅允许必要端口 sudo ufw allow 80,443,7000/tcp sudo ufw enable
1
2
3访问控制
# Nginx IP白名单 allow 192.168.1.0/24; allow 203.0.113.5; deny all;
1
2
3
4
# 六、故障排查指南
# 常见问题处理表
现象 | 排查步骤 | 解决方案 |
---|---|---|
客户端连接超时 | 1. 检查服务器防火墙 2. 确认token匹配 | 开放对应端口 同步token配置 |
域名访问502错误 | 1. 检查frps运行状态 2. 验证Nginx代理配置 | 重启frps服务 检查proxy_pass设置 |
仪表盘无法访问 | 1. 确认dashboard_port开放 2. 检查账号密码 | 配置防火墙规则 重置登录凭证 |
HTTPS证书不生效 | 1. 检查DNS解析 2. 验证证书路径 | 等待DNS生效 重新申请证书 |
# 日志查看命令
# 服务端日志
sudo journalctl -u frps -f --since "5 minutes ago"
# 客户端日志
tail -f /var/log/frpc.log
# Nginx访问日志
tail -f /var/log/nginx/frp.access.log
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
# 七、性能优化建议
连接数优化
# frps.ini [common] max_pool_count = 50 tcp_mux = true
1
2
3
4资源监控
# 实时监控 watch -n 1 "netstat -an | grep 7000 | wc -l" # 连接数统计 ss -s | grep frps
1
2
3
4
5负载均衡方案
# 客户端配置 [web_cluster] type = http local_port = 8080 subdomain = api health_check_type = http health_check_url = /status
1
2
3
4
5
6
7
# 八、扩展应用场景
# 1. 远程开发环境
[vscode]
type = tcp
local_ip = 127.0.0.1
local_port = 8080
remote_port = 28080
1
2
3
4
5
2
3
4
5
# 2. 数据库穿透
[mysql]
type = tcp
local_ip = 127.0.0.1
local_port = 3306
remote_port = 3306
1
2
3
4
5
2
3
4
5
# 3. 文件共享服务
[file_server]
type = http
local_ip = 192.168.1.100
local_port = 8081
subdomain = files
1
2
3
4
5
2
3
4
5
# 九、版本更新策略
停止服务
sudo systemctl stop frps
1备份配置
cp /etc/frp/frps.ini ~/frps_backup.ini
1更新二进制文件
wget https://github.com/fatedier/frp/releases/download/v新版本号/frp_新版本号_linux_架构.tar.gz tar xzf 新版本包.tar.gz sudo cp 新版本目录/frps /usr/local/bin/
1
2
3重启服务
sudo systemctl start frps
1
在线编辑 (opens new window)
上次更新: 2025/04/29, 14:13:12