以下是搭建 FRP(Fast Reverse Proxy)服务器 的详细步骤,涵盖服务端和客户端配置,适用于内网穿透、远程访问等场景:
一、FRP 简介
FRP 是一款开源的内网穿透工具,通过公网服务器(FRPS)将内网服务(FRPC)暴露到外网。支持 TCP/UDP/HTTP/HTTPS 等协议,常用于:
远程访问内网 Web 服务、SSH、数据库等。
穿透 NAT 限制,实现设备互联。
二、服务端(FRPS)搭建
1. 准备公网服务器
系统要求:Linux(如 Ubuntu/CentOS)或 Windows,建议使用 Linux。
开放端口:默认使用 7000(FRP 控制端口)和需要转发的业务端口(如 80、443 等)。
2. 下载 FRP 二进制文件
访问 FRP GitHub Release,选择对应版本:
bash
复制
下载
# 以 Linux 64 位为例
wget https://github.com/fatedier/frp/releases/download/v0.51.3/frp_0.51.3_linux_amd64.tar.gz
tar -zxvf frp_0.51.3_linux_amd64.tar.gz
cd frp_0.51.3_linux_amd64
3. 配置服务端(frps.ini)
编辑 frps.ini,示例如下:
ini
复制
下载
[common]
# 服务端监听端口(客户端连接端口)
bind_port = 7000
# 认证 Token(客户端需匹配)
token = your_secure_token_123
# 仪表盘端口和账号密码(可选)
dashboard_port = 7500
dashboard_user = admin
dashboard_pwd = admin_pwd
# 日志配置
log_file = ./frps.log
log_level = info
log_max_days = 3
4. 启动 FRPS 服务
bash
复制
下载
# 直接启动(测试用)
./frps -c frps.ini
# 后台运行(推荐使用 systemd 托管)
sudo vim /etc/systemd/system/frps.service
systemd 服务文件示例:
ini
复制
下载
[Unit]
Description=Frp Server
After=network.target
[Service]
Type=simple
ExecStart=/path/to/frps -c /path/to/frps.ini
Restart=on-failure
[Install]
WantedBy=multi-user.target
启动并设置开机自启:
bash
复制
下载
sudo systemctl daemon-reload
sudo systemctl start frps
sudo systemctl enable frps
5. 防火墙配置
开放端口(以 firewalld 为例):
bash
复制
下载
sudo firewall-cmd --permanent --add-port=7000/tcp # FRPS 控制端口
sudo firewall-cmd --permanent --add-port=7500/tcp # 仪表盘端口(可选)
sudo firewall-cmd --reload
三、客户端(FRPC)配置
1. 下载客户端文件
与服务端步骤相同,下载对应系统的 FRP 文件。
2. 配置客户端(frpc.ini)
编辑 frpc.ini,示例如下:
ini
复制
下载
[common]
# 服务端地址和端口
server_addr = your_server_ip
server_port = 7000
# 认证 Token(与服务端一致)
token = your_secure_token_123
# 示例:暴露 SSH 服务到公网
[ssh]
type = tcp
local_ip = 127.0.0.1
local_port = 22
remote_port = 6000 # 通过 server_ip:6000 访问内网 SSH
# 示例:暴露 HTTP 服务
[web]
type = http
local_port = 80
custom_domains = your-domain.com # 需将域名解析到服务器 IP
3. 启动客户端
bash
复制
下载
# 直接启动
./frpc -c frpc.ini
# 后台运行(同样建议使用 systemd)
四、验证与访问
服务端仪表盘:
访问 http://your_server_ip:7500,输入账号密码查看连接状态。
测试服务:
SSH 访问:ssh -p 6000 username@your_server_ip
HTTP 访问:浏览器打开 http://your_server_ip:80(或绑定的域名)。
五、安全配置建议
修改默认端口:避免使用 7000 等常见端口。
强密码和 Token:使用复杂 Token 防止未授权连接。
限制客户端 IP(可选):
ini
复制
下载
# 在 frps.ini 中限制允许连接的客户端 IP
allow_ports = 6000-6010 # 仅允许开放指定端口
启用 TLS 加密:
ini
复制
下载
[common]
tls_enable = true
六、常见问题
连接失败:
检查服务端防火墙和云服务器安全组规则。
查看日志 frps.log 或 frpc.log。
端口冲突:修改 remote_port 或服务端配置。
域名解析:确保域名已正确解析到服务器 IP。
七、高级用法
多客户端管理:为不同客户端分配独立 Token 或权限。
负载均衡:多个客户端绑定同一服务实现高可用。
HTTPS 支持:结合 Nginx 反向代理配置 SSL 证书。
通过以上步骤,可快速搭建一个安全的 FRP 内网穿透服务。根据实际需求调整端口和协议,确保遵守网络安全规范。