1698 字
8 分钟
利用腾讯云服务器搭建内网穿透平台
2025-08-04
2025-08-04

一、内网穿透原理与应用场景#

什么是内网穿透?#

内网穿透(NAT穿透)是一种通过公网服务器中转流量的技术,使外部网络能够访问内网设备上的服务(如网站、数据库、SSH等)。它解决了家庭或企业内网设备没有公网IP的问题。

典型应用场景#

  • 🏠 家庭NAS远程访问

  • 💻 本地开发环境公网调试

  • 🌐 企业内部系统外网访问

  • 📱 IoT设备远程管理

  • 🖥️ 远程桌面连接

二、准备工作#

1. 腾讯云服务器配置#

  • 服务器类型:轻量应用服务器或CVM(1核1G以上配置)

  • 操作系统:Ubuntu 20.04 LTS(推荐)或 CentOS 7+

  • 关键配置

    • 分配公网IPv4地址

    • 系统防火墙开放端口:7000(FRP通信)、7500(仪表盘)

    • 安全组设置(控制台→安全组→添加规则):

      协议端口范围源地址备注
      TCP70000.0.0.0/0FRP主通信端口
      TCP75000.0.0.0/0仪表盘端口
      TCP6000-61000.0.0.0/0示例端口范围

2. 内网客户端设备要求#

  • 操作系统:支持Windows/Linux/macOS/Raspberry Pi

  • 网络环境:能正常访问互联网即可

  • 安装依赖:无需特殊依赖,只需FRP客户端文件

三、服务端配置(腾讯云服务器)#

步骤1:下载安装FRP#

Terminal window
# 下载最新版FRP(查看https://github.com/fatedier/frp/releases获取最新版本)
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
# 删除客户端文件(服务端只需保留frps相关文件)
rm -f frpc frpc.ini frpc_full.ini

步骤2:配置服务端文件#

创建配置文件 frps.ini

[common]
# 基础配置
bind_port = 7000
token = your_secure_token_123 # 强烈建议使用强密码(字母+数字+符号)
# 仪表盘配置(监控客户端状态)
dashboard_port = 7500
dashboard_user = admin
dashboard_pwd = Dashboard@2023
# 高级配置(可选)
max_pool_count = 50 # 最大连接池大小
tcp_mux = true # 启用多路复用提升性能
log_level = info # 日志级别:trace, debug, info, warn, error
log_file = /var/log/frps.log # 日志文件路径
log_max_days = 7 # 日志保留天数

步骤3:创建系统服务(实现开机自启)#

Terminal window
# 创建systemd服务文件
sudo vim /etc/systemd/system/frps.service

写入以下内容(注意修改ExecStart路径):

[Unit]
Description=FRP Server Service
After=network.target
[Service]
Type=simple
User=nobody
Restart=on-failure
RestartSec=5s
ExecStart=/home/ubuntu/frp_0.51.3_linux_amd64/frps -c /home/ubuntu/frp_0.51.3_linux_amd64/frps.ini
[Install]
WantedBy=multi-user.target

启动服务并设置开机自启:

Terminal window
sudo systemctl daemon-reload
sudo systemctl start frps
sudo systemctl enable frps
# 检查服务状态
sudo systemctl status frps

四、客户端配置(内网设备)#

步骤1:下载客户端文件#

根据客户端系统类型下载对应版本:

  • Windows: frp_0.51.3_windows_amd64.zip

  • Linux: frp_0.51.3_linux_amd64.tar.gz

  • macOS: frp_0.51.3_darwin_amd64.tar.gz

  • ARM设备: frp_0.51.3_linux_arm64.tar.gz

步骤2:配置客户端文件#

创建 frpc.ini 配置文件:

[common]
server_addr = 121.4.xx.xx # 替换为你的腾讯云公网IP
server_port = 7000 # 与服务端bind_port一致
token = your_secure_token_123 # 与服务端token一致
# 日志配置(便于排查问题)
log_file = frpc.log
log_level = info
log_max_days = 3
# ---------- 端口映射示例 ----------
# 示例1:SSH服务映射(通过公网2222端口访问内网22端口)
[ssh]
type = tcp
local_ip = 127.0.0.1
local_port = 22
remote_port = 2222
# 示例2:Web服务映射(通过公网8080访问内网80)
[web]
type = tcp
local_ip = 192.168.1.100 # 内网Web服务器IP
local_port = 80
remote_port = 8080
# 示例3:远程桌面映射(通过公网3389访问Windows远程桌面)
[rdp]
type = tcp
local_ip = 192.168.1.50
local_port = 3389
remote_port = 3389
# 示例4:HTTP域名访问(需额外配置DNS解析)
[web2]
type = http
local_port = 8080
custom_domains = test.yourdomain.com

步骤3:启动客户端#

Windows系统

  1. frpc.exefrpc.ini放在同一目录

  2. 创建start.bat文件,内容如下:

  3. 双击运行start.bat

Terminal window
@echo off
frpc.exe -c frpc.ini
pause

Linux/macOS系统

Terminal window
# 赋予执行权限
chmod +x frpc
# 前台启动(测试用)
./frpc -c frpc.ini
# 后台启动(正式使用)
nohup ./frpc -c frpc.ini > /dev/null 2>&1 &

五、服务验证与管理#

1. 仪表盘监控#

访问 http://<腾讯云IP>:7500 输入预设的用户名密码:

  • 查看客户端连接状态

  • 监控实时流量

  • 检查端口映射状态

2. 服务连通性测试#

Terminal window
# 测试SSH连接
ssh -p 2222 username@腾讯云IP
# 测试Web访问
curl http://腾讯云IP:8080
# 测试远程桌面
mstsc /v:腾讯云IP:3389

3. 服务管理命令#

服务端管理

Terminal window
# 重启服务
sudo systemctl restart frps
# 查看日志
sudo journalctl -u frps -f

客户端管理

  • Windows:在CMD窗口按Ctrl+C停止

  • Linux:pkill frpc 停止服务

六、高级配置技巧#

1. 域名绑定访问#

# frps.ini 添加
vhost_http_port = 80
vhost_https_port = 443
# frpc.ini 添加
[web-domain]
type = http
local_port = 80
custom_domains = www.yourdomain.com

2. HTTPS支持#

# frps.ini 添加
vhost_https_port = 443
# frpc.ini 添加
[https-site]
type = https
local_port = 443
custom_domains = secure.yourdomain.com

3. 配置文件优化技巧#

# 心跳检测防止断开
heartbeat_interval = 30
heartbeat_timeout = 90
# 连接池优化(高并发场景)
pool_count = 10
# 使用TLS加密通信
tls_enable = true

七、常见问题排查#

1. 客户端无法连接服务端#

  • ✅ 检查安全组是否开放7000端口

  • ✅ 确认服务端token与客户端一致

  • ✅ 查看服务端日志:sudo journalctl -u frps -n 50

  • ✅ 客户端使用./frpc -c frpc.ini查看实时输出

2. 服务映射成功但无法访问#

  • 🔍 检查客户端防火墙是否放行本地端口

  • 🔍 确认内网服务本身可正常访问

  • 🔍 使用telnet 腾讯云IP remote_port测试端口连通性

3. 性能优化建议#

  • ⚡ 启用tcp_mux = true减少连接数

  • ⚡ 适当增加pool_count值(默认1)

  • ⚡ 升级服务器带宽(1Mbps带宽≈128KB/s)

八、备选方案对比#

方案优点缺点适用场景
FRP开源免费,配置灵活需要自建服务器大多数内网穿透需求
Ngrok无需服务器,简单易用免费版不稳定,限速临时测试,简单需求
NPS图形化管理界面,功能丰富配置较复杂企业级应用,多用户管理
ZeroTier组建虚拟局域网,点对点连接需要安装客户端多设备组网,安全要求高

九、安全注意事项#

  1. 强密码策略

    • 服务端token长度≥16位(字母+数字+符号)

    • 仪表盘密码避免使用admin/admin等弱密码

  2. 最小化端口开放

    • 仅开放必要的远程端口

    • 避免使用1024以下知名端口

  3. 定期更新

  4. 访问控制

Terminal window
# 定期检查FRP更新
wget https://github.com/fatedier/frp/releases/latest
# frps.ini 添加IP白名单
allow_ports = 2000-3000,4000,5000

提示:对于生产环境,建议配合Nginx反向代理和Let’s Encrypt证书实现HTTPS加密访问。

通过本指南,您已成功在腾讯云搭建了专业级内网穿透平台。FRP作为开源解决方案,兼顾性能与灵活性,能满足从个人开发到企业级应用的各种穿透需求。根据实际业务场景调整配置参数,即可获得最佳使用体验。

利用腾讯云服务器搭建内网穿透平台
https://misakiusasa250.dpdns.org/posts/利用腾讯云服务器搭建内网穿透平台/
作者
玻璃灵梦
发布于
2025-08-04
许可协议
CC BY-NC-SA 4.0

部分信息可能已经过时