frp使用详细介绍

以下是基于知识库信息整理的** **FRP 使用详细介绍,涵盖安装、配置、使用场景及常见问题,适合新手快速上手。


一、FRP 简介

FRP(Fast Reverse Proxy)** 是一款高性能的内网穿透工具,支持 TCP、UDP、HTTP、HTTPS等协议,可将内网服务暴露到公网,实现远程访问。其核心是 服务端(frps) **客户端(frpc)的协作,通过服务端转发流量到客户端。


二、FRP 安装

1. 下载 FRP

2. 解压文件

1
2
3
# 以 Linux 为例(假设下载的是 frp_0.60.0_linux_amd64.tar.gz)
tar -zxvf frp_0.60.0_linux_amd64.tar.gz
cd frp_0.60.0_linux_amd64

三、FRP 配置

1. 服务端(frps)配置

编辑** **frps.ini 文件(示例):

1
2
3
4
5
6
7
[common]
bind_port = 7000 # 服务端监听端口(需开放服务器防火墙)
vhost_http_port = 8080 # HTTP/HTTPS 代理端口(可选)
dashboard_port = 7500 # 控制台端口(可选)
dashboard_user = admin # 控制台用户名(可选)
dashboard_pwd = admin123 # 控制台密码(可选)
token = your_secure_token # 客户端连接的认证令牌

2. 客户端(frpc)配置

编辑** **frpc.ini 文件(示例):

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
[common]
server_addr = 你的服务器公网IP # FRP服务端IP
server_port = 7000 # 服务端bind_port的值
token = your_secure_token # 与服务端token一致

# 配置SSH远程访问(映射本地22端口到远程6000端口)
[ssh]
type = tcp
local_ip = 127.0.0.1
local_port = 22
remote_port = 6000

# 配置HTTP服务暴露(如本地Web服务)
[web]
type = http
local_port = 80
custom_domains = yourdomain.com # 自定义域名(可选)

四、启动服务

1. 启动服务端(frps)

1
2
3
4
5
# Linux/macOS
./frps -c frps.ini

# Windows
双击运行 frps.exe(需配置好frps.ini)

2. 启动客户端(frpc)

1
2
3
4
5
# Linux/macOS
./frpc -c frpc.ini

# Windows
双击运行 frpc.exe(需配置好frpc.ini)

五、验证与使用

1. 基础验证

  • SSH 访问:
    1
    ssh 用户名@服务器公网IP -p 6000
  • HTTP 访问:
    1
    2
    3
    http://服务器公网IP:8080  # 若未配置域名

    http://yourdomain.com # 若已绑定域名

2. 控制台监控

  • 访问** **http://服务器公网IP:7500,输入用户名和密码登录,查看连接状态。

六、常见使用场景

1. SSH 远程登录

  • 配置示例:
    1
    2
    3
    4
    [ssh]
    type = tcp
    local_port = 22
    remote_port = 6000
  • 访问命令:
    1
    ssh 用户名@服务器IP -p 6000

2. Web 服务暴露

  • 配置示例:
    1
    2
    3
    4
    [web]
    type = http
    local_port = 80
    custom_domains = yourdomain.com # 需将域名解析到服务器IP
  • 访问方式:
    1
    http://yourdomain.com

3. 远程桌面(Windows)

  • 配置示例:
    1
    2
    3
    4
    [rdp]
    type = tcp
    local_port = 3389 # Windows默认远程桌面端口
    remote_port = 7001
  • 访问方式:
    • 使用远程桌面工具连接** **服务器IP:7001。

4. 安全加密(stcp协议)

  • 服务端配置:
    1
    2
    3
    [common]
    bind_port = 7000
    token = your_token
  • 客户端配置:
    1
    2
    3
    4
    5
    [secret_ssh]
    type = stcp
    local_port = 22
    remote_port = 7002
    sk = your_secure_key # 自定义密钥

七、高级功能

1. 负载均衡

  • 在服务端配置多个客户端实例,客户端配置** group 和 **lb_weight:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    # 客户端1
    [web1]
    type = http
    local_port = 80
    custom_domains = yourdomain.com
    group = web_group
    lb_weight = 50

    # 客户端2
    [web2]
    type = http
    local_port = 80
    custom_domains = yourdomain.com
    group = web_group
    lb_weight = 50

2. WebSocket 代理(穿透防火墙)

  • 服务端配置:
    1
    2
    [common]
    vhost_http_port = 80
  • 客户端配置:
    1
    2
    3
    4
    5
    [ws_web]
    type = http
    local_port = 80
    custom_domains = yourdomain.com
    protocol = ws # 使用WebSocket协议

八、安全与优化

1. 安全配置建议

  • 使用复杂 Token:避免使用默认值。
  • 限制开放端口:仅开放必要的端口,并配置防火墙。
  • 启用 HTTPS:结合 Nginx 或 Caddy 实现 HTTPS 加密。
  • 定期更新:使用最新版本的 FRP,修复安全漏洞。

2. 性能优化

  • 端口复用:多个服务共享同一个服务端端口。
  • KCP 协议:在网络不稳定时使用 KCP 协议(需配置** **use_kcp = true)。

九、常见问题解决

1. 连接失败

  • 检查服务端端口是否开放:使用** netstat -tuln 或 **ss -tuln 查看服务端端口是否监听。
  • 防火墙设置:确保服务器防火墙(如 iptables、UFW)允许 FRP 端口。
  • 配置文件语法错误:检查** frps.ini 和 **frpc.ini 中的缩进和参数是否正确。

2. 域名解析问题

  • A记录解析:将域名解析到服务器公网 IP。
  • CDN 限制:部分 CDN 不支持直接穿透,需关闭 CDN 或使用其他域名。

3. 运行日志查看

  • 服务端日志:
    1
    tail -f ./frps_7000.log
  • 客户端日志:
    1
    tail -f ./frpc_7000.log

十、资源与参考

  1. 官方文档:FRP GitHub Wiki
  2. 配置示例:FRP 配置案例集合
  3. 安全加固指南:FRP 安全配置建议

通过以上步骤,你可以快速搭建 FRP 环境并实现内网穿透。