Windows
📚 一、FRP基础认知
什么是FRP?
FRP(Fast Reverse Proxy)是一款开源的高性能反向代理工具,通过**服务端(公网服务器)+客户端(内网设备)**的架构,实现外网访问内网服务的需求。核心原理是在公网服务器上建立中转,将外网请求转发到内网设备。
必备条件
- 一台拥有公网IP的云服务器(推荐阿里云、腾讯云等,系统选择CentOS或Ubuntu)
- 一台需要被访问的内网设备(电脑、NAS、树莓派等,需能联网)
- 服务器需开放必要端口(参考下文配置)
⚙️ 二、服务端(公网服务器)配置
1. 下载并安装FRP
# 1. 下载最新版本(以v0.64.0为例,可替换为最新版本号)
wget https://github.com/fatedier/frp/releases/download/v0.64.0/frp_0.64.0_linux_amd64.tar.gz
# 2. 解压压缩包
tar -zxvf frp_0.64.0_linux_amd64.tar.gz
# 3. 进入解压后的目录
cd frp_0.64.0_linux_amd642. 配置服务端文件(frps.ini)
# 编辑配置文件
vim frps.ini
# 写入以下基础配置
[common]
# 服务端与客户端通信的端口(需开放防火墙)
bind_port = 7000
# (可选)配置仪表盘,用于监控FRP状态
dashboard_port = 7500
dashboard_user = admin
dashboard_pwd = your_password
# (可选)设置认证token,提高安全性
# token = your_secret_token3. 启动服务端
# 临时启动(测试用)
./frps -c ./frps.ini
# 后台启动(生产环境推荐)
nohup ./frps -c ./frps.ini > frps.log 2>&1 &4. 设置开机自启(systemd方式)
# 创建服务文件
sudo vim /etc/systemd/system/frps.service
# 写入以下内容(替换为你的FRP路径)
[Unit]
Description=frp Server Service
After=network.target
[Service]
Type=simple
ExecStart=/root/frp_0.64.0_linux_amd64/frps -c /root/frp_0.64.0_linux_amd64/frps.ini
Restart=always
[Install]
WantedBy=multi-user.target
# 启用并启动服务
sudo systemctl daemon-reload
sudo systemctl start frps
sudo systemctl enable frps
# 查看服务状态
sudo systemctl status frps🖥️ 三、客户端(内网设备)配置
1. 下载FRP客户端
根据内网设备的系统选择对应版本:
- Windows:下载
frp_0.64.0_windows_amd64.zip - Mac:下载
frp_0.64.0_darwin_amd64.tar.gz(Intel芯片)或frp_0.64.0_darwin_arm64.tar.gz(M系列芯片) - Linux:下载对应架构的压缩包
2. 配置客户端文件(frpc.ini)
以下是几个常见场景的配置示例:
场景1:远程SSH访问内网Linux主机
[common]
# 服务端公网IP或域名
server_addr = your_server_ip
server_port = 7000
# token需与服务端一致(如果设置了的话)
# token = your_secret_token
[ssh]
type = tcp
local_ip = 127.0.0.1
local_port = 22
remote_port = 6000 # 服务端开放的端口,用于访问内网SSH场景2:远程桌面访问Windows主机
[common]
server_addr = your_server_ip
server_port = 7000
[rdp]
type = tcp
local_ip = 127.0.0.1
local_port = 3389 # Windows远程桌面默认端口
remote_port = 7001场景3:外网访问内网网站
[common]
server_addr = your_server_ip
server_port = 7000
[web]
type = http
local_port = 80
custom_domains = your_domain.com # 需将域名解析到服务端IP3. 启动客户端
# Windows系统(命令提示符)
frpc.exe -c frpc.ini
# Linux/Mac系统
./frpc -c ./frpc.ini
# 后台启动(Linux/Mac)
nohup ./frpc -c ./frpc.ini > frpc.log 2>&1 &🧪 四、验证配置
1. SSH访问测试
在外网设备上执行:
ssh 内网用户名@服务端公网IP -p 6000如果能成功登录内网主机,说明配置生效。
2. 远程桌面测试
在Windows搜索栏输入 mstsc,打开远程桌面连接,输入:
服务端公网IP:7001输入内网主机的用户名和密码,即可远程桌面。
3. 网站访问测试
在浏览器中输入你的域名:
http://your_domain.com如果能正常访问内网网站,说明HTTP映射配置成功。
🔒 五、进阶优化技巧
1. 提高安全性
- 设置复杂的认证token(在服务端和客户端配置文件中添加
token = your_secret_token) - 禁用不必要的端口,仅开放需要使用的端口
- 配置防火墙规则,限制访问来源IP
2. 实现P2P打洞(减少服务器负载)
FRP支持P2P模式,当客户端之间可以直接通信时,无需通过服务端中转:
Ini复制# 在客户端配置中添加
[p2p_ssh]
type = tcp
local_ip = 127.0.0.1
local_port = 22
# 启用P2P模式
use_p2p = true3. 多客户端管理
可以在服务端配置文件中设置不同的认证token,实现多客户端的隔离管理:
Ini复制# 服务端配置
[common]
bind_port = 7000
token = global_token
# 为特定客户端设置独立token
[user1]
token = user1_token❓ 六、常见问题排查
- 连接失败:检查服务器防火墙和安全组是否开放了必要端口(7000、映射的远程端口等)
- 无法访问:确保服务端和客户端的配置文件中
server_addr、server_port、token等参数一致 - 服务异常退出:查看日志文件(frps.log、frpc.log),定位具体错误信息
- 开机自启失败:检查服务文件中的路径是否正确,权限是否足够