frp 内网穿透
介绍
FRP(Fast Reverse Proxy)内网穿透是一种技术,它允许外部网络用户访问位于内网中的服务,而无需直接暴露内网的IP地址。FRP是一个高性能的反向代理应用,专注于实现内网穿透功能。以下是关于FRP内网穿透的详细解释:
一、FRP内网穿透的基本原理
FRP内网穿透通过以下步骤实现:
- 部署服务端:在具有公网IP的服务器上部署FRP服务端(frps)。这个服务端负责接收来自外部网络的连接请求,并进行转发。
- 部署客户端:在内网中的机器上部署FRP客户端(frpc)。客户端负责将本地服务(如Web服务器、SSH等)通过端口映射发送到FRP服务端。
- 建立连接:客户端启动后,会与服务端建立长连接。当外部用户尝试访问内网服务时,他们的请求会首先发送到FRP服务端。服务端根据配置信息,将请求转发到对应的内网客户端。
- 流量转发:客户端收到来自服务端的请求后,会处理该请求并将其转发到本地服务。然后,客户端将本地服务的响应发送回服务端,再由服务端转发给外部用户。
二、FRP内网穿透的优点
- 安全性:FRP内网穿透不需要直接暴露内网的IP地址,从而减少了遭受网络攻击的风险。此外,FRP还支持使用SSL/TLS进行加密传输,进一步提高了数据传输的安全性。
- 便捷性:通过FRP,用户可以轻松地将内网服务暴露到外网,而无需进行复杂的网络配置。这使得远程访问和管理内网服务变得更加方便。
- 高性能:FRP是一个高性能的反向代理应用,能够处理大量的并发连接和数据传输。这使得FRP内网穿透在实际应用中具有很高的可用性和稳定性。
三、FRP内网穿透的应用场景
FRP内网穿透适用于以下场景:
- 远程访问:用户可以通过FRP内网穿透技术远程访问家庭或办公室中的计算机、服务器等设备。
- 搭建Web服务:开发者可以将自己的Web应用部署在内网中,并通过FRP将其暴露到外网,以便其他用户访问。
- 调试和测试:在开发过程中,开发者可能需要远程访问和调试位于内网中的服务。FRP内网穿透技术可以方便地实现这一需求。
- 数据同步和备份:用户可以通过FRP将内网中的数据同步到外部存储设备上,或进行定期备份。
四、使用FRP进行内网穿透的步骤
- 下载FRP:从FRP的官方网站或GitHub页面下载适合你系统的FRP版本。
- 配置服务端:在具有公网IP的服务器上解压下载的FRP文件,并编辑frps.ini配置文件。设置绑定端口、管理界面端口、管理界面用户名和密码等参数。
- 启动服务端:在服务器上运行FRP服务端程序,并指定配置文件路径。
- 配置客户端:在内网中的机器上解压下载的FRP文件,并编辑frpc.ini配置文件。设置服务端地址、服务端端口、本地服务类型、本地服务端口和远程端口等参数。
- 启动客户端:在内网中的机器上运行FRP客户端程序,并指定配置文件路径。
- 访问内网服务:外部用户可以通过访问FRP服务端的公网IP和配置的远程端口来访问内网中的服务。
综上所述,FRP内网穿透是一种安全、便捷且高性能的技术,适用于多种应用场景。通过合理的配置和使用,用户可以轻松地将内网服务暴露到外网,实现远程访问和管理。
模拟搭建 frp 环境
准备 frp 服务端和客户端主机,在生产环境中 frp 服务端为外网能够访问的主机,frp 客户端为能够同时访问公司内网资源和连接外网 frp 服务端的主机
frp 服务端信息如下:
- ip 为 192.168.1.171
- 操作系统 CentOS8
frp 客户端信息如下:
- ip 为 192.168.1.170
- 操作系统 CentOS8
安装和配置 frp 服务端
SSH 登录 frp 服务端 192.168.1.171
参考 链接 安装 dcli
使用 dcli 安装和配置 frp 服务端
bashdcli frp install- 选择安装 frp 组件为
服务器 - 不输入端口,使用默认的 frp 服务器端口 7707
- 不输入token,使用默认的 frp 服务器身份鉴别 token
- 选择安装 frp 组件为
查看 frp 服务端是否正常运行
bash# 查看 frp 服务端是否监听 7707 端口 netstat -ntlp | grep 7707 # 查看 frp 服务端服务是否正常 systemctl status frps
安装和配置 frp 客户端
SSH 登录 frp 客户端 192.168.1.170
参考 链接 安装 dcli
使用 dcli 安装和配置 frp 客户端
bashdcli frp install- 选择安装 frp 组件为
客户端 - 输入 frp 服务端 ip 地址为 192.168.1.171
- 不输入 frp 服务端端口,使用默认的 7707 端口配置
- 不输入 frp 服务端身份鉴别 token,使用默认的 token
- 选择安装 frp 组件为
查看 frp 客户端是否正常运行
bash# 查看 frp 客户端服务是否正常 systemctl status frpc
配置 frp 客户端实现内网穿透 58 测试环境
SSH 登录 frp 客户端 192.168.1.170
编辑 /etc/frp/frpc.ini 内容如下:
properties[common] server_addr = 192.168.1.171 server_port = 7707 #token privilege_token = xxxxxxxxxxxx [58-uat-env] type = tcp # 被内网穿透服务的目标端口 local_port = 80 # 被内网穿透服务的目标ip local_ip = 192.168.1.58 # frp 服务端暴露在外网的端口 remote_port = 30000重启 frp 客户端
bashsystemctl restart frpc
测试通过 frp 服务端访问 58 测试环境以模拟内网穿透
- 访问
http://192.168.1.171:30000/如果网页显示正确说明成功模拟内网穿透。