别再花钱买服务器了!用闲置云主机+frp 0.65.0搭建免费内网穿透服务(保姆级教程)

张开发
2026/4/13 9:56:22 15 分钟阅读

分享文章

别再花钱买服务器了!用闲置云主机+frp 0.65.0搭建免费内网穿透服务(保姆级教程)
闲置云主机变身内网穿透神器frp实战指南手里有台快过期的学生优惠云服务器别急着让它吃灰。今天我们就来聊聊如何把这类鸡肋资源变成实用的内网穿透工具。相比动辄几百元的商业穿透服务用frp自建方案不仅零成本还能根据需求灵活调整特别适合个人开发者和小团队使用。我去年就用阿里云的学生机1核1G配置成功搭建了穿透服务稳定运行至今。整个过程最耗时的其实是安全配置环节——毕竟把内网服务暴露到公网安全措施绝对不能马虎。下面就把我的实战经验分享给大家从环境准备到性能优化手把手教你打造既安全又高效的穿透方案。1. 环境准备与frp部署1.1 系统要求检查在开始前建议先确认云主机的资源配置。frp对硬件要求极低实测在以下环境都能流畅运行CPU1核即可ARM/x86架构都支持内存空闲内存≥200MB运行frps服务端存储50MB可用空间网络至少1Mbps带宽视频流等大流量应用需更高带宽可以用这些命令快速检查资源情况# 查看CPU信息 lscpu | grep Model name # 查看内存使用 free -h # 查看磁盘空间 df -h1.2 安全基础配置重要提示云主机安全组和系统防火墙需要同步配置。我曾遇到过只配置了安全组却忘记iptables导致连接失败的情况。建议先开放这些端口根据实际需要调整7000frp控制端口7500仪表盘端口10000-19999代理端口范围# Ubuntu/Debian使用ufw的配置示例 sudo ufw allow 7000/tcp sudo ufw allow 7500/tcp sudo ufw allow 10000:19999/tcp2. frp服务端深度配置2.1 配置文件优化新版frp使用TOML格式配置比旧版INI更易读。这是我的生产环境配置模板# frps.toml bindAddr 0.0.0.0 bindPort 7000 # 安全设置 auth.token your_strong_password_here # 务必修改为复杂字符串 transport.tls.enable true # 启用TLS加密 # 资源控制 maxPoolCount 50 # 限制连接池大小 maxPortsPerClient 10 # 每个客户端最多使用端口数 # 仪表盘配置 webServer.addr 0.0.0.0 webServer.port 7500 webServer.user custom_admin # 不要使用默认admin webServer.password another_strong_pwd # 端口范围控制 allowPorts [ { start 10000, end 19999 } ]关键参数说明maxPoolCount防止连接数过多耗尽资源maxPortsPerClient避免单个客户端占用全部端口transport.tls.enable强烈建议启用加密2.2 Systemd服务配置为了让frps稳定运行需要创建systemd服务。这是我的优化版配置# /etc/systemd/system/frps.service [Unit] Descriptionfrp server Afternetwork-online.target Requiresnetwork-online.target [Service] Typesimple Usernobody # 使用低权限用户 Groupnogroup Restarton-failure RestartSec30s ExecStart/usr/local/bin/frps -c /etc/frp/frps.toml # 日志管理 StandardOutputappend:/var/log/frps.log StandardErrorappend:/var/log/frps-error.log # 资源限制 MemoryLimit200M # 限制内存使用 CPUQuota50% # 限制CPU使用 [Install] WantedBymulti-user.target启用服务并检查状态sudo systemctl daemon-reload sudo systemctl enable --now frps systemctl status frps # 应该显示active (running)3. 客户端配置实战3.1 多场景配置示例根据不同内网服务需求frpc配置也需相应调整。以下是几种常见场景场景1SSH穿透[[proxies]] name ssh-tunnel type tcp localIP 127.0.0.1 localPort 22 remotePort 10022 # 公网访问端口场景2Web服务穿透[[proxies]] name web-app type http localIP 192.168.1.100 localPort 8080 customDomains [app.yourdomain.com] # 需要域名解析场景3远程桌面[[proxies]] name rdp type tcp localIP 192.168.1.50 localPort 3389 remotePort 133893.2 客户端自动重连在网络不稳定的环境中可以添加这些参数增强稳定性# frpc.toml全局配置 transport.heartbeatInterval 30 transport.heartbeatTimeout 90 # 每个代理单独设置 [[proxies]] name critical-service type tcp ... healthCheck.type tcp # 启用健康检查 healthCheck.timeoutSeconds 3 # 超时时间 healthCheck.maxFailed 3 # 最大失败次数4. 高级优化与监控4.1 性能调优技巧对于低配云主机这些优化特别有用连接池优化# frps.toml transport.tcpKeepAlive 300 # 保持TCP连接 transport.quic.keepalivePeriod 60日志轮转 创建logrotate配置防止日志过大# /etc/logrotate.d/frp /var/log/frps.log { daily rotate 7 compress missingok notifempty create 640 nobody nogroup }流量控制[[proxies]] name limited-service type tcp ... bandwidthLimit 1MB # 限制带宽4.2 监控方案除了内置仪表盘还可以Prometheus监控 启用frp的Prometheus接口# frps.toml enablePrometheus true prometheus.listenAddr 0.0.0.0 prometheus.port 7401邮件告警 用脚本监控日志关键词并发送告警# 示例监控脚本片段 tail -f /var/log/frps.log | grep --line-buffered ERROR | while read line do echo $line | mail -s FRP Alert adminexample.com done5. 安全加固实践5.1 必须做的安全措施Token强化使用长随机字符串建议≥32字符定期轮换token端口防护# 仅允许特定IP访问管理端口 sudo ufw allow from 192.168.1.100 to any port 7500TLS证书配置# frps.toml transport.tls.certFile /path/to/cert.pem transport.tls.keyFile /path/to/key.pem5.2 入侵检测添加简单的入侵检测脚本#!/bin/bash # 监控异常连接尝试 netstat -ant | grep :7000 | awk {print $5} | cut -d: -f1 | sort | uniq -c | sort -n设置cron定时任务# 每30分钟运行一次 */30 * * * * /path/to/monitor_script.sh /var/log/frp_monitor.log6. 故障排查指南遇到问题时按照这个流程排查检查基础连接telnet your_server_ip 7000 # 应该能连接查看日志journalctl -u frps --no-pager -n 50 # 查看最近50条日志验证配置frps verify -c /etc/frp/frps.toml # 检查配置文件语法网络测试# 从客户端测试到服务端的端口 nc -zv your_server_ip 7000常见错误解决方案连接超时检查安全组和防火墙认证失败确认token一致且无特殊字符端口冲突使用netstat -tulnp查看占用情况7. 备选方案对比当frp不适用时可以考虑这些替代方案方案优点缺点适用场景ngrok配置简单有免费方案免费版不稳定临时演示Cloudflare无需公网IP需要域名Web服务SSH隧道无需额外软件性能较差临时SSH访问WireGuard高性能VPN配置复杂全流量加密隧道最后提醒下内网穿透本质上是在公网暴露服务一定要做好安全防护。我的经验是宁可多花半小时检查配置也不要事后补救。

更多文章