FRP内网穿透实战:SSH与RDP远程访问的极简配置指南
1. 为什么你需要FRP内网穿透每次出差或者临时需要访问办公室电脑时你是不是也遇到过这样的尴尬明明文件就在办公电脑里却因为内网限制无法直接访问。我去年就遇到过这种情况当时正在客户现场演示突然发现PPT有个数据需要修改但办公室电脑里的资料就是拿不到急得我满头大汗。FRPFast Reverse Proxy就像给你的内网设备开了个专属VIP通道。它能把内网的SSH终端和RDP远程桌面服务映射到公网服务器上让你随时随地都能安全访问。相比传统的DDNS方案FRP最大的优势是不需要路由器有公网IP也不需要复杂的网络配置。我测试过市面上多种内网穿透方案FRP的表现最稳定。特别是在跨运营商访问时腾讯云8M带宽的服务器就能流畅运行远程桌面码率可以稳定在30fps以上。对于经常需要远程办公的开发者来说这套方案成本极低——按文中的配置一年服务器费用不到100元。2. 准备工作软硬件环境配置2.1 硬件选择建议我的实战配置是这样的内网主机用的是戴尔OptiPlex 7080微型机i5-10500T/16GB外网笔记本是ThinkPad X1 Carbon云服务器选择腾讯云轻量应用服务器2核4G/8M带宽。这个组合经过半年使用完全能满足开发需求。特别提醒下服务器带宽的选择如果你主要用SSH2M带宽都够用但要是经常用RDP远程桌面建议至少5M带宽。我实测过8M带宽下RDP的延迟可以控制在150ms以内操作体验接近本地电脑。2.2 软件环境准备云服务器推荐Ubuntu Server 20.04 LTS这个版本对FRP的兼容性最好。内网主机如果是Windows系统需要先启用RDP服务设置→系统→远程桌面如果是Ubuntu桌面版建议使用xrdp方案sudo apt install xrdp sudo systemctl enable xrdpFRP版本选择很重要建议用0.39.1及以上版本。这个版本修复了TCP连接的内存泄漏问题稳定性提升明显。下载命令如下wget https://github.com/fatedier/frp/releases/download/v0.39.1/frp_0.39.1_linux_amd64.tar.gz tar -xzvf frp_0.39.1_linux_amd64.tar.gz3. 服务端配置详解3.1 基础参数配置解压后的frps.ini需要重点配置这些参数[common] bind_port 7000 # 客户端连接端口 bind_addr 0.0.0.0 # 监听所有网卡 dashboard_port 7500 # 监控面板端口 dashboard_user admin # 改成复杂用户名 dashboard_pwd Admin123 # 强密码建议包含特殊字符安全提示千万不要用示例中的简单密码我有次用弱密码被暴力破解服务器成了肉鸡。建议密码长度至少12位包含大小写字母、数字和特殊符号。3.2 防火墙设置技巧在云服务器控制台的安全组里需要放行这些端口TCP 7000FRP主端口TCP 7500监控面板TCP 5900RDP映射TCP 2222SSH映射如果你用的是Ubuntu自带的ufw防火墙这样配置sudo ufw allow 7000/tcp sudo ufw allow 7500/tcp sudo ufw allow 5900/tcp sudo ufw allow 2222/tcp sudo ufw enable启动服务端时建议用nohup保持常驻nohup ./frps -c ./frps.ini frps.log 21 4. 客户端配置实战4.1 SSH穿透配置frpc.ini的SSH部分要这样写[common] server_addr 123.123.123.123 # 替换为你的公网IP server_port 7000 [ssh] type tcp local_ip 127.0.0.1 local_port 22 remote_port 2222 # 外网访问端口有个坑我踩过如果内网主机SSH端口不是默认的22比如改成了5022那么local_port也要相应修改。启动客户端同样建议用nohupnohup ./frpc -c ./frpc.ini frpc.log 21 4.2 RDP穿透的特殊处理Windows系统直接映射3389端口即可但Ubuntu桌面版需要先确认xrdp服务状态sudo systemctl status xrdp # 确认服务正常运行 netstat -tunlp | grep 3389 # 检查监听端口然后配置frpc.ini的RDP部分[rdp] type tcp local_ip 127.0.0.1 local_port 3389 # xrdp默认端口 remote_port 5900 # 外网访问端口遇到黑屏问题可以尝试修改xrdp配置sudo sed -i s/port3389/port3390/g /etc/xrdp/xrdp.ini sudo systemctl restart xrdp5. 连接测试与优化5.1 SSH连接测试在外网设备上测试SSH连接ssh -p 2222 username公网IP如果连接失败可以按这个流程排查检查frps日志看是否有连接记录telnet测试端口连通性telnet 公网IP 2222在内网主机执行sudo tcpdump -i any port 22 -nn5.2 RDP画质优化远程桌面卡顿可以调整这些参数颜色深度改为16位关闭壁纸和动画效果使用H.264视频编码对于开发者我推荐在RDP连接时挂载本地磁盘这样可以直接用本地IDE编辑远程文件。在Windows的mstsc里勾选本地资源→驱动器即可。6. 安全加固方案6.1 令牌认证在frps.ini中添加认证令牌更安全[common] authentication_method token token your_strong_token_here对应的frpc.ini也要同步配置[common] token your_strong_token_here6.2 端口随机化不要长期使用固定映射端口可以设置端口范围[ssh] ... remote_port 20000-30000 # FRP会随机选择可用端口每次连接前查看frpc日志获取当前端口号。7. 常见问题解决7.1 连接不稳定如果出现频繁断连可以尝试在frpc.ini中添加[common] tcp_mux false调整心跳参数heartbeat_interval 30 heartbeat_timeout 907.2 性能调优高延迟环境下建议启用压缩[common] tcp_mux true use_compression true对于RDP连接还可以在frpc.ini中限制带宽[rdp] bandwidth_limit 5MB