一、服务端搭建(Linux)

1. 下载与解压

mkdir -p /usr/local/frp && cd /usr/local/frp
wget https://github.com/fatedier/frp/releases/download/v0.61.1/frp_0.61.1_linux_amd64.tar.gz
tar -zxvf frp_0.61.1_linux_amd64.tar.gz

2. 核心配置(frps.ini)

[common]
bind_port = 7000             # 必填:客户端通信端口
token = your_secure_token    # 必填:客户端认证密钥(防未授权访问)

# 【可选】管理面板
dashboard_port = 7500        # 监控面板端口
dashboard_user = admin       # 面板用户名
dashboard_pwd = admin@123    # 面板密码

# 【可选】HTTP/HTTPS穿透
vhost_http_port = 80         # HTTP域名映射端口
vhost_https_port = 443       # HTTPS域名映射端口

# 【可选】日志配置
log_file = /var/log/frps.log
log_level = info
log_max_days = 7             # 日志保留天数

3. 启动与自启

# 临时启动
./frps -c frps.ini

# 创建systemd服务(推荐)
sudo tee /etc/systemd/system/frps.service <<EOF
[Unit]
Description=FRP Server
After=network.target

[Service]
ExecStart=/usr/local/frp/frps -c /usr/local/frp/frps.ini
Restart=on-failure

[Install]
WantedBy=multi-user.target
EOF

sudo systemctl enable frps && sudo systemctl start frps

4. 防火墙放行

sudo ufw allow 7000/tcp      # 通信端口
sudo ufw allow 7500/tcp      # 【可选】面板端口
sudo ufw allow 80,443/tcp    # 【可选】HTTP/HTTPS端口

二、客户端配置

▶ Windows客户端(远程桌面穿透)

1. 下载客户端
GitHub Release下载frp_*_windows_amd64.zip,解压至C:\frp

2. 配置frpc.ini

[common]
server_addr = 1.2.3.4        # 服务端公网IP
server_port = 7000
token = your_secure_token    # 与服务端一致

[rdp]                       # 远程桌面服务
type = tcp
local_ip = 127.0.0.1
local_port = 3389            # Windows默认远程端口
remote_port = 6000           # 外网访问端口

# 【可选】性能优化
use_encryption = true        # 加密通信(推荐开启)
use_compression = true       # 压缩数据(节省带宽)

3. 启动方式

# 手动启动
frpc.exe -c frpc.ini

# 注册为Windows服务(需nssm工具)
nssm install frpc
设置路径:C:\frp\frpc.exe
参数:-c C:\frp\frpc.ini

▶ Linux客户端(SSH/Web服务穿透)

1. 下载与配置

wget https://github.com/fatedier/frp/releases/download/v0.61.1/frp_0.61.1_linux_amd64.tar.gz
tar -zxvf frp_0.61.1_linux_amd64.tar.gz

2. 场景配置示例
SSH穿透(frpc.ini):

[common]
server_addr = 1.2.3.4
server_port = 7000
token = your_secure_token

[ssh]
type = tcp
local_port = 22
remote_port = 6022           # 外网通过6022访问SSH

Web服务穿透(支持HTTPS):

[web]
type = http
local_port = 80
custom_domains = www.yourdomain.com  # 需域名解析至服务端IP

# 【可选】HTTPS配置
[https]
type = https
local_port = 443
custom_domains = secure.yourdomain.com
plugin = https2http          # 将HTTPS转换为HTTP后端
plugin_local_addr = 127.0.0.1:80
plugin_crt_path = /path/to/cert.pem
plugin_key_path = /path/to/key.pem

3. 自启服务

sudo cp frpc /usr/bin/
sudo tee /etc/systemd/system/frpc.service <<EOF
[Unit]
Description=FRP Client
After=network.target

[Service]
ExecStart=/usr/bin/frpc -c /path/to/frpc.ini
Restart=on-failure

[Install]
WantedBy=multi-user.target
EOF

sudo systemctl enable frpc && sudo systemctl start frpc

三、连接验证

  1. 远程桌面:外网电脑运行mstsc,输入服务端IP:6000
  2. SSH访问ssh -p 6022 user@1.2.3.4
  3. Web服务:浏览器访问http://www.yourdomain.comhttps://secure.yourdomain.com
  4. 监控面板:访问http://1.2.3.4:7500查看连接状态

四、高级配置建议

  1. 安全加固
    • 限制客户端IP:服务端添加allow_ports = 1000-20000限制可用端口范围
    • 启用TLS:在[common]段添加tls_enable = true加密传输

  2. 多服务映射
    在客户端配置中添加多个[service]段,例如同时穿透数据库和NAS:

[mysql]
type = tcp
local_port = 3306
remote_port = 6033

[nas]
type = tcp
local_port = 5000
remote_port = 6050
  1. 域名泛解析
    服务端配置subdomain_host = frp.yourdomain.com,客户端使用subdomain = nas自动生成nas.frp.yourdomain.com

五、故障排查

端口冲突:使用netstat -tulnp | grep 端口号检查占用
连接失败:检查服务端防火墙规则及客户端的server_addrtoken
日志分析:查看frps.logfrpc.log定位问题

引用说明
基础配置参考自2024年通用教程;
安全配置参考CSDN 2025年实战指南;
服务端自启方法来自2024年ARM部署教程;
Windows服务化方案来自2025年远程桌面专版;
HTTPS及域名配置综合多篇高级教程优化。