使用 frp 搭建一个自己的内网穿透服务包括以下几个步骤:配置 frp 服务器(服务端)和 frp 客户端。
Frp是什么:
frp(Fast Reverse Proxy)是一款高性能的反向代理应用,广泛用于内网穿透、跨网络访问等场景。以下是 frp 的一些常见应用场景:
1. 内网服务的外网访问
frp 可以将内网中的 Web 服务器、数据库服务器、SSH 服务等暴露给外网用户访问。例如,在家中搭建的 Web 服务器,可以通过 frp 暴露在外网,供外部用户访问。
2. 远程办公
在需要远程办公时,开发者或员工可以通过 frp 访问公司内网中的资源(如数据库、开发服务器、内部应用系统),无需公司购买专门的 VPN 服务。
3. 开发环境共享
在本地搭建的开发环境可以通过 frp 共享给团队中的其他成员,方便他们进行测试、调试或演示。例如,将本地的 API 服务、Web 应用程序通过 frp 暴露在外网,供同事或客户访问。
4. 远程调试
开发者可以通过 frp 实现对内网设备的远程调试。例如,远程访问家中的树莓派、智能家居设备等,进行调试和维护。
5. IoT(物联网)设备接入
在物联网场景下,许多 IoT 设备由于网络环境或安全限制,无法直接被外网访问。通过 frp,这些设备可以被暴露到外网,从而方便对设备进行远程管理和数据采集。
6. 远程桌面和文件传输
frp 可以将远程桌面服务(如 RDP、VNC)和文件传输服务(如 FTP、SFTP)暴露给外网用户,实现对内网电脑或服务器的远程控制和文件管理。
7. 多人协作工具
在一些在线协作工具或多人游戏中,用户可以通过 frp 实现内网穿透,使得外网的其他用户能够加入同一局域网环境进行协作或游戏。
8. 构建分布式系统
frp 可以用于跨网络、跨地域的分布式系统中,使得不同地域的服务节点能够通过内网穿透互相通信,构建分布式服务架构。
9. 持续集成和自动化部署
在持续集成和自动化部署场景下,frp 可以帮助开发者在内网环境下进行自动化构建、测试和部署操作,而不需要额外配置复杂的网络环境。
10. 动态域名解析(DDNS)替代方案
对于一些没有固定公网IP的用户,frp 可以作为动态域名解析的替代方案,将本地服务通过 frp 暴露到特定的域名下,无需配置 DDNS。
如何搭建你的Frp
1. 准备工作
一台具有公网IP的服务器,用于运行 frp 服务端。比如阿里云或其他云服务
内网设备,用于运行 frp 客户端,将需要暴露的服务通过 frp 映射到外网。
2. 下载 frp
你需要在公网服务器和内网设备上分别下载 frp,可以从 frp 的 GitHub:Releases · fatedier/frp · GitHub页面下载适合你的操作系统的版本。
3. 配置 frp 服务端
在公网服务器上解压 frp,进入 frp 目录,找到 frps.ini 文件(如果没有可以新建)。
frps.ini 配置文件示例:
[common]
bind_port = 7000 # frp 服务端监听的端口,可以自定义
dashboard_port = 7500 # frp 的管理面板端口,可选
dashboard_user = admin # 登录管理面板的用户名,可选
dashboard_pwd = admin # 登录管理面板的密码,可选
# 如果需要更高的安全性,可以配置 TLS
# vhost_https_port = 443
# tls_only = true
4. 配置 frp 客户端
在内网设备上解压 frp,找到 frpc.ini 文件(如果没有可以新建)。
frpc.ini 配置文件示例:
[common]
server_addr = x.x.x.x # 这里填写你的 frp 服务器公网IP
server_port = 7000 # 这里填写与服务端 `bind_port` 一致的端口
# 配置要暴露的服务
[web]
type = http
local_port = 80 # 本地需要暴露的服务端口,如 HTTP 服务的端口
remote_port = 8080 # 映射到公网的端口
# 如果你需要暴露多个服务,可以再增加配置项
# [ssh]
# type = tcp
# local_port = 22
# remote_port = 6000
启动 frp 客户端
使用以下命令启动 frp 客户端:
./frpc -c ./frpc.ini
5. 测试服务
在公网服务器上启动 frp 服务端。
在内网设备上启动 frp 客户端。
这时你可以通过 http://x.x.x.x:8080 访问到内网设备的 HTTP 服务(假设你的服务端 frps.ini 中配置的 bind_port 和客户端 frpc.ini 中配置的 remote_port 为 8080)。
6. 其他
如果你觉得太麻烦,或者你的应用场景很简单,只是用于家庭机器或公司机器的内网穿透,你可以使用ngrok或者国内的相关穿透软件来进行实现。