通过云服务器配置FRP反向代理到本地机器指南(以阿里云为例)
一、概述
什么是FRP?
FRP(Fast Reverse Proxy)是一款开源的高性能反向代理工具,主要用于内网穿透。它可以将内网中的服务(如Web服务器、SSH、远程桌面等)通过具有公网IP的云服务器暴露到互联网,实现从外部访问内网服务的目的。
工作原理
[本地内网机器] --> [FRP客户端] --> [阿里云ECS服务器] --> [互联网用户]
↑ ↑ ↑
运行本地服务 连接服务器 运行FRP服务端
二、准备工作
1. 阿里云ECS服务器购买
- 登录阿里云控制台
- 选择ECS实例规格(推荐1核1G或以上)
- 选择操作系统(推荐Ubuntu 20.04/22.04或CentOS 7/8)
- 配置网络和安全组
- 获取公网IP地址
2. 安全组配置
在阿里云控制台配置安全组,开放以下端口:
| 端口 | 用途 |
|---|---|
| 22 | SSH端口,用于服务器管理 |
| 7000 | FRP服务端口(默认),用于客户端连接 |
| 7500 | FRP管理端口(可选),用于Web管理界面 |
| 8000-9000 | 代理端口范围,根据需要开放 |
操作步骤:
- 进入ECS实例详情页
- 点击”安全组” -> “配置规则”
- 添加入方向规则:
- 协议:TCP
- 端口范围:7000/7000
- 授权对象:0.0.0.0/0
- 描述:FRP服务端口
三、服务器端配置(阿里云ECS)
1. 连接服务器
ssh root@你的阿里云公网IP
2. 下载FRP
# 创建目录
mkdir -p /opt/frp && cd /opt/frp
# 下载最新版本(以0.68.0为例,请根据实际情况调整)
wget https://github.com/fatedier/frp/releases/download/v0.68.0/frp_0.68.0_linux_amd64.tar.gz
# 解压
tar -xzf frp_0.68.0_linux_amd64.tar.gz
cd frp_0.68.0_linux_amd64
3. 配置服务端(frps)
创建配置文件 frps.toml:
# frps.toml
bindPort = 7000
auth.method = "token"
auth.token = "your_strong_password_here" # 请替换为强密码
# 可选:Web管理界面
webServer.addr = "0.0.0.0"
webServer.port = 7500
webServer.user = "admin"
webServer.password = "admin_password" # 请替换为强密码
# 日志配置
log.to = "/var/log/frps.log"
log.level = "info"
log.maxDays = 7
4. 设置系统服务
创建systemd服务文件:
cat > /etc/systemd/system/frps.service << EOF
[Unit]
Description=FRP Server Service
After=network.target
[Service]
Type=simple
User=nobody
Restart=on-failure
RestartSec=5s
ExecStart=/opt/frp/frp_0.68.0_linux_amd64/frps -c /opt/frp/frp_0.68.0_linux_amd64/frps.toml
LimitNOFILE=1048576
[Install]
WantedBy=multi-user.target
EOF
5. 启动服务
# 重新加载systemd配置
systemctl daemon-reload
# 启动FRP服务端
systemctl start frps
# 设置开机自启
systemctl enable frps
# 查看状态
systemctl status frps
6. 验证服务
# 查看日志
tail -f /var/log/frps.log
# 检查端口监听
netstat -tlnp | grep 7000
四、客户端配置(本地机器)
1. 下载FRP
根据你的操作系统下载对应版本:
| 操作系统 | 下载文件 |
|---|---|
| Windows | frp_0.68.0_windows_amd64.zip |
| macOS | frp_0.68.0_darwin_amd64.tar.gz |
| Linux | frp_0.68.0_linux_amd64.tar.gz |
2. 配置客户端(frpc)
创建配置文件 frpc.toml:
# frpc.toml
serverAddr = "你的阿里云公网IP"
serverPort = 7000
auth.method = "token"
auth.token = "your_strong_password_here" # 必须与服务器端一致
# 示例1:映射本地Web服务(HTTP)
[[proxies]]
name = "web"
type = "tcp"
localIP = "127.0.0.1"
localPort = 80
remotePort = 8080
# 示例2:映射SSH服务
[[proxies]]
name = "ssh"
type = "tcp"
localIP = "127.0.0.1"
localPort = 22
remotePort = 6000
# 示例3:映射远程桌面(RDP)
[[proxies]]
name = "rdp"
type = "tcp"
localIP = "127.0.0.1"
localPort = 3389
remotePort = 3389
3. 启动客户端
Windows:
frpc.exe -c frpc.toml
Linux/macOS:
./frpc -c frpc.toml
五、测试连接
1. 测试Web服务映射
假设你本地运行了一个Web服务器在80端口:
# 通过阿里云公网IP和映射端口访问
curl http://你的阿里云公网IP:8080
2. 测试SSH连接
# 通过映射的SSH端口连接本地机器
ssh -p 6000 你的用户名@你的阿里云公网IP
3. 测试远程桌面
- Windows远程桌面连接:
你的阿里云公网IP:3389 - 或使用其他RDP客户端
六、高级配置
1. 域名访问(可选)
如果你有域名,可以配置域名解析:
# 在frpc.toml中添加HTTP代理
[[proxies]]
name = "web-http"
type = "http"
localIP = "127.0.0.1"
localPort = 80
customDomains = ["yourdomain.com"]
2. 配置多个服务
# 映射多个服务
[[proxies]]
name = "web1"
type = "tcp"
localIP = "127.0.0.1"
localPort = 80
remotePort = 8080
[[proxies]]
name = "web2"
type = "tcp"
localIP = "192.168.1.100"
localPort = 8080
remotePort = 8081
[[proxies]]
name = "database"
type = "tcp"
localIP = "127.0.0.1"
localPort = 3306
remotePort = 3306
3. 安全加固
# 在frps.toml中添加安全配置
transport.maxPoolCount = 10
transport.tcpMux = true
allowPorts = [
{ start = 8000, end = 9000 },
{ start = 6000, end = 6000 }
]
七、常见问题解决
1. 连接失败
- 检查安全组:确保阿里云安全组已开放相应端口
- 检查防火墙:服务器和本地机器的防火墙设置
- 检查配置:确认服务器地址、端口、密码配置正确
- 检查网络:确认本地机器可以访问互联网
2. 端口被占用
# Linux检查端口占用
netstat -tlnp | grep 端口号
# 或
lsof -i:端口号
# Windows检查端口占用
netstat -ano | findstr 端口号
3. 服务无法启动
# 查看详细日志
journalctl -u frps.service -f
# 检查配置文件语法
./frps -c frps.toml
4. 性能优化
- 调整
transport.maxPoolCount(最大连接池) - 启用
transport.tcpMux(TCP多路复用) - 调整
transport.poolCount(连接池大小)
八、安全注意事项
- 使用强密码:为FRP认证设置强密码,定期更换
- 限制访问IP:在安全组中限制访问IP范围
- 最小权限原则:只开放必要的端口
- 定期更新:及时更新FRP到最新版本
- 监控日志:定期检查访问日志,发现异常
- 使用HTTPS:对于Web服务,建议使用HTTPS加密
九、维护管理
1. 更新FRP
# 停止服务
systemctl stop frps
# 备份配置
cp /opt/frp/frp_0.68.0_linux_amd64/frps.toml /opt/frp/frps.toml.backup
# 下载新版本
# ... 重复下载步骤
# 恢复配置
cp /opt/frp/frps.toml.backup /opt/frp/new_version/frps.toml
# 启动服务
systemctl start frps
2. 日志管理
# 配置日志轮转
cat > /etc/logrotate.d/frps << EOF
/var/log/frps.log {
daily
missingok
rotate 7
compress
delaycompress
notifempty
create 0640 nobody nobody
}
EOF
十、参考资源
Enjoy Reading This Article?
Here are some more articles you might like to read next: