 linux上安装frp客户端
          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@20231
 2
 3
 4
- 防火墙策略 - # 仅允许必要端口 sudo ufw allow 80,443,7000/tcp sudo ufw enable1
 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 = true1
 2
 3
 4
- 资源监控 - # 实时监控 watch -n 1 "netstat -an | grep 7000 | wc -l" # 连接数统计 ss -s | grep frps1
 2
 3
 4
 5
- 负载均衡方案 - # 客户端配置 [web_cluster] type = http local_port = 8080 subdomain = api health_check_type = http health_check_url = /status1
 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 frps1
- 备份配置 - cp /etc/frp/frps.ini ~/frps_backup.ini1
- 更新二进制文件 - 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 frps1
在线编辑  (opens new window)
  上次更新: 2025/04/29, 14:13:12