首页 最新 热门 推荐

  • 首页
  • 最新
  • 热门
  • 推荐

使用FRP搭建内网穿透工具

  • 25-04-17 07:21
  • 3048
  • 7204
juejin.cn

内网穿透的概念

“内网穿透,也即 NAT 穿透,进行 NAT 穿透是为了使具有某一个特定源 IP 地址和源端口号的数据包不被 NAT 设备屏蔽而正确路由到内网主机。” ——百度百科

简单来说,就是让互联网(外网)设备能访问局域网(内网)设备提供的服务,这里的设备通常指电脑。

内网穿透的应用场景

对开发人员来说,需要使用到内网穿透的一个典型的应用场景就是针对第三方授权(通常是 OAuth2.0)和支付回调的开发调试。通过内网穿透工具将第三方 SDK 或平台的回调地址映射到本机开发环境,从而达到实时调试的目的。

其次是节约部署成本(通常是公网服务器费用)。通过将应用部署在本机,再利用内网穿透工具对外提供服务,这样既能节约服务器租用费用,又能提升服务器的硬件配置。

目前,市面上有不少免费提供内网穿透的工具/产品,比如花生壳,那为什么还要自己搭建呢? 根据笔者的亲生经历,主要有以下几个问题:

  1. 免费的域名不固定,有广告,且服务不问题
  2. 按月收费,且服务也不一定稳定

笔者搭建内网穿透的目的就属于第一种情况,即低频率开发调试用,因此在拥有公网服务器的条件下,自建是最合适的方式。

内网穿透的搭建工具

ngrok

一个国外的穿透工具,1.0 版本是开源的,目前 2.0 及以上版本已经闭源,并且提供免费和收费的服务。

frp

这是一个国内的开源工具,目前最新版本为 v0.61.1(截止2025-02-14),有比较详尽的中文文档,并且一直在维护更新。

由于 frp 一直开源,并且维护积极、更新频繁,再加上中文文档的加持,笔者最终选择了 frp 作为搭建工具。

注:frp 自主搭建需要一个有公网 ip 的服务器,本文使用阿里云 ECS。

frp 下载和版本选择

官方 github release 地址,目前最新版本是 v0.61.1(截止2025-02-14),官方github地址可能不易访问和下载,这里提供了 v0.61.1 的常用平台安装包:developbook.cn/download/fr…

版本选择说明

压缩包说明
frp_0.61.1_darwin_amd64.tar.gz适用于 Mac OS 系统
frp_0.61.1_freebsd_amd64.tar.gz适用于 FreeBSD 64 位系统
frp_0.61.1_linux_amd64.tar.gz适用于 Linux 64 位系统
frp_0.61.1_linux_arm.tar.gz适用于 Linux 32 位嵌入式系统
frp_0.61.1_linux_arm64.tar.gz适用于 Linux 64 位嵌入式系统
frp_0.61.1_windows_amd64.zip适用于 Windows 64 位系统
frp_0.61.1_windows_arm64.zip适用于 Windows 64 位嵌入式系统

笔者的服务器系统为 CentOS7 64 位,所以选择了 frp_0.61.1_linux_amd64.tar.gz;笔者的个人电脑系统为 Mac OS X,所以选择了 frp_0.60.1_darwin_amd64.tar.gz。

下载方式

直接下载

直接点击链接,使用浏览器下载到本机。利用 ssh 工具连接到阿里云 ECS,再使用 lrzsz 工具的 rz 命令将 frp_0.61.1_linux_amd64.tar.gz 上传到服务器,而压缩包 frp_0.61.1_darwin_amd64.tar.gz 直接在本机解压。

推荐大家一款Mac上好用的免费SSH工具:FinalShell

注:ssh 工具、lrzsz 实用工具的安装和用法可自行搜索。

终端命令下载

  • 服务器
bash
代码解读
复制代码
// 下载 wget https://developbook.cn/download/frp/v0.61.1/frp_0.61.1_linux_amd64.tar.gz // 解压 tar -xzvf frp_0.61.1_linux_amd64.tar.gz
  • 本机
bash
代码解读
复制代码
// 使用curl下载 curl -O https://developbook.cn/download/frp/v0.61.1/frp_0.61.1_darwin_amd64.tar.gz // 解压 tar -xzvf frp_0.61.1_darwin_amd64.tar.gz

frp 压缩包文件说明

每个压缩包解压后都包含以下文件:

  • frpc —— 客户端可执行二进制文件
  • frpc.toml —— 客户端使用的配置文件
  • frps —— 服务端可执行二进制文件
  • frps.toml —— 服务端使用的配置文件

注:服务端只需用到 frp_0.61.1_linux_amd64 目录下的 frps 相关文件,本机(客户端)只需用到 frp_0.61.1_darwin_amd64 目录下的 frpc 相关文件。

服务端配置和启动

1、在服务器上打开 frps.toml:

bash
代码解读
复制代码
vi frps.toml

注:确保当前已进入工作目录/root/frp_0.61.1_linux_amd64/。

2、配置 frps 要监听的端口:按下 i 进入编辑模式,在末尾增加一行:vhostHTTPPort = 8080,使 frps.toml 最终配置如下:

bash
代码解读
复制代码
[common] bindPort = 7000 vhostHTTPPort = 8080

注:vhostHTTPPort 监听的端口不能被占用,否则会导致 frps 不能启动,端口可根据实际需要修改;bindPort 端口为 frp 服务端和客户端连接通信的端口,默认为 7000。

3、保存配置并退出:按下 Esc,输入:wq。

4、启动 frps 程序:

bash
代码解读
复制代码
./frps -c ./frps.toml

注:如遇 permission denied 错误,表明 frps 可能没有运行权限,则先赋权:

bash
代码解读
复制代码
chmod 700 frps

然后再次执行启动命令。

客户端配置和启动

1、在本机进入 frp_0.61.0_darwin_amd64 目录,打开 frpc.toml 文件;

2、以配置访问内网的 web 服务(常见情形)为例,最终修改 frpc.toml 如下:

bash
代码解读
复制代码
serverAddr = "x.x.x.x" serverPort = 7000 [[proxies]] name = "local-service" type = "http" localIP = "127.0.0.1" localPort = 3000

注:x.x.x.x 为运行 frps 的服务器公网 ip,localPort 为本机启动的 web 服务对应的端口,请根据实际情况修改。

3、启动 frpc 程序:

bash
代码解读
复制代码
sudo ./frpc -c ./frpc.toml

注:此时 frpc 会通过 7000 端口尝试与 frps 建立通信连接,如果一切顺利,则终端会提示连接成功;但实际情况却显示连接失败,因为还少了两个步骤:

一、需要登录阿里云控制台将 7000 端口加入阿里云 ECS 安全组的入站规则里面,同理还需将 8080 端口加入。具体操作参考:添加安全组规则;

二、将 7000 和 8080 加入服务器防火墙规则,具体操作参考:CentOS7 使用 firewalld 打开关闭防火墙与端口。

当一切就绪,frpc 启动并连接成功后,打开浏览器输入 x.x.x.x:8080 就能访问到本机 127.0.0.1:3000 的服务(本机 web 服务需要处于启动状态)。

至此,一个最简配置的基于 frp 的内网穿透便搭建完成,更多配置和用法,请参考官方文档:frp 官方中文文档。

注:本文转载自juejin.cn的爱疯才会赢的文章"https://juejin.cn/post/7470916546283978803"。版权归原作者所有,此博客不拥有其著作权,亦不承担相应法律责任。如有侵权,请联系我们删除。
复制链接
复制链接
相关推荐
发表评论
登录后才能发表评论和回复 注册

/ 登录

评论记录:

未查询到任何数据!
回复评论:

分类栏目

后端 (14832) 前端 (14280) 移动开发 (3760) 编程语言 (3851) Java (3904) Python (3298) 人工智能 (10119) AIGC (2810) 大数据 (3499) 数据库 (3945) 数据结构与算法 (3757) 音视频 (2669) 云原生 (3145) 云平台 (2965) 前沿技术 (2993) 开源 (2160) 小程序 (2860) 运维 (2533) 服务器 (2698) 操作系统 (2325) 硬件开发 (2492) 嵌入式 (2955) 微软技术 (2769) 软件工程 (2056) 测试 (2865) 网络空间安全 (2948) 网络与通信 (2797) 用户体验设计 (2592) 学习和成长 (2593) 搜索 (2744) 开发工具 (7108) 游戏 (2829) HarmonyOS (2935) 区块链 (2782) 数学 (3112) 3C硬件 (2759) 资讯 (2909) Android (4709) iOS (1850) 代码人生 (3043) 阅读 (2841)

热门文章

133
开发工具
关于我们 隐私政策 免责声明 联系我们
Copyright © 2020-2025 蚁人论坛 (iYenn.com) All Rights Reserved.
Scroll to Top