最强内网穿透神器【frp】实战指南:从零搭建你的专属隧道

1,216 阅读8分钟

大家早上好,中午好,晚上好

d1f8d94e-5324-4c63-8f2d-736adf3e7759.jfif

1. 内网穿透:打破网络边界的神奇技术

想象一下:你坐在家里,却能直接访问公司内网的服务器;或者你在咖啡馆,却能像在办公室一样操作家里的NAS。这种"魔法"般的技术,就是内网穿透(Port Forwarding) ——它像一座数字桥梁,让外部网络能够直接访问内部网络的特定设备。

为什么需要内网穿透?

  • 🌐 突破NAT限制:解决没有公网IP的困境
  • 🛡️ 安全访问:避免将内网服务直接暴露在公网
  • ⚡ 高效传输:相比传统VPN更轻量高效

在众多实现方案中(包括VPN、云服务等),frp(Fast Reverse Proxy) 以其极简配置和卓越性能脱颖而出,成为开发者们的首选利器。

2. 真实场景:我的穿透需求剖析

最近接了个公众号网页的项目,需要进行调试,微信需要访问到我的最新前端代码的服务,所以需要将本地的vue项目,暴露到公网,让微信能够访问。

理想解决方案:

通过frp建立安全隧道,让云服务器的Nginx能够:

  1. 接收公网请求(如:api.mydomain.com)
  2. 自动转发到本地开发机(192.168.1.100:8080)
  3. 最终实现:全球任意设备访问公网IP ≈ 直接操作我的本地服务!

(效果预览:当你在星巴克用手机访问云服务器IP时,实际上正在调试你卧室电脑里的最新代码!)

3. 手把手实战:5步搭建你的穿透通道

3.1 获取神器:下载frp最新版

工欲善其事必先利其器,首先我们要获取frp工具:

💡 下载小贴士
以我的环境为例:

  • ☁️ 云服务器:选择frp_*_linux_amd64.tar.gz
  • 💻 本地开发机:选择frp_*_windows_amd64.zip
    (小技巧:右键复制下载链接,后面会用到!)

3.2 极速安装:两种方法任你选

方法一:传统安装(适合已有下载包)

# 上传压缩包后执行(记得替换实际文件名)
tar -xzvf frp_0.52.3_linux_amd64.tar.gz

方法二:一键直达(推荐!)

# 直接下载+解压(版本号可替换)
curl -L https://github.com/fatedier/frp/releases/download/v0.62.1/frp_0.62.1_linux_amd64.tar.gz | tar -xz

✨ 为什么推荐方法二?

  • 避免手动上传的繁琐
  • 自动完成下载解压全过程
  • 版本更新只需修改命令中的数字

(看到解压出的frp_*目录了吗?恭喜,武器库已就位!)

3.3 文件解析:解密frp的核心组件

解压后你会发现一个"宝藏箱"般的文件集合,但别担心——我们只需要关注其中两个关键文件:

frp_0.52.3_linux_amd64/
├── frps          # 服务端核心程序(Server)
├── frps.toml     # 服务端配置文件
├── frpc          # 客户端核心程序(Client)
├── frpc.toml     # 客户端配置文件
└── LICENSE       # 开源协议

🔍 关键文件说明(划重点!)

  1. 服务端双雄(云服务器使用):

    • frps:穿透服务的"大脑",负责接收和路由所有外部请求
    • frps.toml:服务配置中枢(相当于大脑的"使用说明书")
  2. 客户端双侠(本地电脑使用):

    • frpc:连接服务的"使者",建立与服务器的安全隧道
    • frpc.toml:客户端配置指南(使者的"任务清单")

💡 重要概念图解

公网用户 → [ frps 服务端 ] ←→ [ frpc 客户端 ] → 你的本地服务
           (云服务器)         (加密隧道)      (192.168.x.x)

⚠️ 新手常见误区警示

  • 服务端和客户端需要分别配置,不能混用
  • Windows用户注意:对应的是.exe后缀程序(如frpc.exe
  • 配置文件的.toml后缀是新一代配置文件格式(比传统ini更强大)

(现在你已经能分清这些"双胞胎"文件了,接下来让我们赋予它们灵魂——配置!)

3.4 服务端配置:打造你的安全堡垒

现在我们要给云服务器上的frps注入灵魂!用命令vi frps.toml打开这个文件,并写入以下配置:

# 基础通信配置(必填)
bindPort = 7000            # 客户端敲门端口(防火墙需放行此端口!)
auth.method = "token"      # 启用最高安全级别的令牌认证
auth.token = "your_password"  # ⚠️请修改为高强度密码(建议16位混合字符)

# 可视化控制台(强烈推荐开启)
webServer.addr = "0.0.0.0"  # 监听所有网络接口
webServer.port = 7500       # 管理后台端口
webServer.user = "admin"    # 登录用户名
webServer.password = "admin" # 登录密码(生产环境必须修改!)

🔧 配置详解(知其所以然)

  1. 核心通信配置

    • bindPort:这是frp隧道的"总闸门",客户端通过此端口与服务端握手
    • 安全建议:可以在云服务器安全组中仅对特定IP开放此端口
  2. 安全认证三件套

    auth.method = "token"       # 比传统password更安全
    auth.token = "My$ecureP@ss!2024"  # 正确示范:包含大小写/符号/数字
    
  3. 管理面板配置

    • 通过http://你的服务器IP:7500访问
    • 实时查看:在线客户端、流量统计、连接状态
    • 安全提示:务必修改默认凭证,否则等于敞开大门!

🛠️ 实战小技巧

  • 生成高强度token:openssl rand -base64 16。怎么安装openssl。看我的另一篇文章

  • 测试配置是否正确:./frps verify -c ./frps.toml

  • 需要HTTPS?加上这些:

    webServer.tls.certFile = "/path/to/cert.pem"
    webServer.tls.keyFile = "/path/to/key.pem"
    

    上面的两个文件可以用openssl生成。

(配置保存后,你已经为frp服务器穿上了铠甲,接下来就让它披挂上阵吧!)

4. 点火发射:启动并测试你的穿透服务

🚀 启动服务端四部曲

  1. 赋予执行权限(让程序获得"超能力")

    chmod +x frps  # 这相当于给程序开了绿灯
    
  2. 常规启动方式

    ./frps -c frps.toml | tee frps.log  # 同时输出日志到文件
    

🔍 健康检查指南

  1. 查看实时日志

    tail -f frps.log  # 监控运行状态(Ctrl+C退出)
    
  2. 验证端口监听

    ss -tulnp | grep frps  # 应该看到7000和7500端口
    
  3. 访问管理面板
    浏览器打开:http://你的服务器IP:7500

    • ✅ 成功标志:看到frp的仪表盘登录界面
    • ❌ 故障排查:检查防火墙/安全组规则

image.png

(看到管理界面了吗?恭喜你的frp服务端已经成功升空!接下来我们要配置客户端连接了)

  1. 还有一步,就是你的服务器需要开防火墙,比如我用的是华为的云服务器,需要将对应的端口开放:

image.png

5. 客户端配置:建立你的专属数据隧道

🖥️ Windows客户端安装指南

tips:需要关闭Windows的防火墙,不然会被认为是病毒!!

  1. 解压下载包

    • 解压frp_0.52.3_windows_amd64.zip

    • 你会看到这些关键文件: frpc.exe # 客户端主程序 frpc.toml # 客户端配置文件

  2. 核心文件说明

    • 只需关注frpc.exefrpc.toml这对黄金组合
    • 其他文件可以暂时忽略(但不要删除,以备后用)

✍️ 配置客户端连接(重点!)

用记事本或者VS Code打开frpc.toml,写入以下配置:

# 服务器连接配置
serverAddr = "你的云服务器IP"  # 替换为真实公网IP
serverPort = 7000             # 必须与服务端bindPort一致
auth.token = "your_password"  # 必须与服务端token完全一致

# 端口映射规则(实现穿透的核心)
[[proxies]]
name = "web-service"          # 连接名称(自定义)
type = "tcp"                  # 传输协议类型
localIP = "127.0.0.1"         # 本地服务IP(本机固定这个值)
localPort = 9000              # 本地服务端口
remotePort = 3000             # 云服务器暴露端口

🚦 启动客户端三部曲

  1. 启动连接

    frpc.exe -c frpc.toml
    
    • 看到success提示说明连接成功!
    • 保持窗口开启(关闭会断开连接)

🌐 连接测试验证

  1. 在云服务器执行

    telnet 127.0.0.1 3000  # 测试端口是否开放
    
  2. 在任意电脑测试

    浏览器访问:http://云服务器IP:3000
    

💡 配置深度解析

  • remotePort:这是公网访问的"大门号码"

  • localPort:你本地服务的"房间号码"

  • 工作原理: 公网访问:3000 → 云服务器 → 隧道 → 你本机的:9000

(看到连接成功的日志了吗?你的本地服务已经成功登上公网舞台!)

6. 查看

6.1本地服务

image.png

6.2公网IP访问开发服务器

image.png

6.3 frp管理面板

image.png

我想说

经过这趟技术之旅,你已经成功:

  1. 突破了网络边界:让没有公网IP的本地服务直面互联网
  2. 搭建了安全隧道:通过token认证+端口映射实现加密通信
  3. 掌握了全栈控制:从服务端配置到客户端连接的全流程
  4. 解锁了远程开发:现在你可以在任何地方调试本地代码!

更多功能如域名绑定、多服务映射,请自行查看官方文档哈。此文章仅仅是入门!!

(遇到问题?欢迎在评论区留言交流!如果觉得有用,别忘了点赞收藏~)