frp搭建内网穿透工具
目录
简介
FRP(Fast Reverse Proxy)是一款开源、简洁易用、高性能的内网穿透和反向代理软件,支持TCP、UDP、HTTP、HTTPS等协议。它允许用户将内网服务以安全、便捷的方式通过具有公网IP节点的中转暴露到公网。
中文官网:frp
中文文档:文档 | frp
功能特点
- 内网穿透:FRP支持内网穿透功能,能够实现公网服务访问内网服务器。
- 通用性:支持多种协议和服务类型,如HTTP、TCP、UDP等,可用于各种不同场景。
- 安全性:支持数据加密、身份验证和IP白名单等安全机制,保障数据和用户信息安全。
- 高性能:采用Go语言编写,具有高性能和高并发性能,能够满足大规模并发请求需求。
- 易用性:使用简单,配置文件清晰明了,支持多平台部署和使用。
穿透流程
- 服务端运行在具有公网 IP 的服务器上,并监听某个端口,等待客户端连接。
- 客户端运行在需要穿透的内网机器上,与服务器建立之后,相当于客户端和服务端之间建立了一条隧道,访问服务端的请求会通过隧道转发给内网主机。
- 当互联网用户连接/访问服务器监听的端口时,服务器将用户请求转发到内网客户端,实现内网穿透。
搭建方式
准备工作
1、一台具有公网 IP 的主机。
2、下载 frp 软件,下载地址:Releases · fatedier/frp · GitHub
服务端部署
连接自己有公网 IP 的地址之后,查看你的系统架构是ARM还是AMD64(也称为x86_64),根据具体情况下载相应的安装包
执行命令查看系统框架.
uname -m
我的服务器是 amd64 ,所以这里我选择下载这个版本的安装包。
上传到服务器。并解压。
tar -zxf frp_0.60.0_linux_amd64.tar.gz
进入解压后的文件,并打开服务端配置文件
sudo vim frps.toml
配置文件信息如下:
bindPort = 7000 # frp服务的特定端口,防火墙也需放开该端口
# 服务端仪表盘的端口, 可以用浏览器访问查看frp服务状态信息
webServer.addr = "0.0.0.0"# 后台管理地址,默认是127.0.0.1,如果是公网访问则改成0.0.0.0
webServer.port = 7500# 后台管理端口
webServer.user = "admin"# (可选)后台登录用户名
webServer.password = "admin"# (可选)后台登录密码
#transport.tls.force = true # 服务端将只接受 TLS链接
auth.method = 'token' # 客户端访问验证方式
auth.token = "54321" # 客户端访问验证密码,frpc要与frps一致
# 自定义的监听的端口,所有对服务器该端口访问将被转发到本地内网,做了反向代理可不处理防火墙放行
vhostHTTPPort = 8080
#vhostHTTPSPort = 45443
启动frp。并且在云服务的安全组以及防火墙上放行对应端口。
./frps -c ./frps.toml
输入地址(公网ip:端口号)可以查看服务端管理页面。
客户端部署
主要配置介绍信息如下:
# frpc.toml
transport.tls.enable = true# 从 v0.50.0版本开始,transport.tls.enable的默认值为 true
serverAddr = "192.168.1.101" # 服务端ip
serverPort = 7000 # 服务端端口
auth.method = 'token' # 客户端访问验证方式
auth.token = '54321' # 客户端访问验证密码
[[proxies]]
name = "dy_mysql" # 客户端服务名
type = "tcp" # 通讯方式
localIP = "127.0.0.1" # 客户端的ip(固定)
localPort = 3306 # 客户端服务端口
remotePort = 13306 # 映射到服务端端口(服务器需放行)
[[proxies]]
name = "dy_video" # 客户端服务名_一个监控摄像头
type = "tcp" # 通讯方式
localIP = "192.168.6.8" # 客户端的ip(固定)
localPort = 5522 # 客户端服务端口
remotePort = 15522 # 映射到服务端端口(服务器需放行)
[[proxies]]
name = "test-tcp"
type = "tcp"
localIP = "127.0.0.1"# 需要暴露的服务的IP
localPort = 9000# 将本地9000端口的服务暴露在公网的6060端口
remotePort = 6060 # 暴露服务的公网入口
[[proxies]]
name = "ssh"
type = "tcp"
localIP = "127.0.0.1"
localPort = 22
remotePort = 6000
#customDomains = ["xxx.xxx.xxx.xxx"]
[[proxies]]
name = "web"
type = "http"
localIP = "127.0.0.1"
localPort = 80
customDomains = ["域名或ip"]
这里因为我用于跟伙伴们调试项目开发用处,这里我只配置一个http服务。(以若依框架为例子)
配置信息
解压文件后,用文本编辑软件打开frpc.toml,
修改配置,添加映射关系
# frpc.toml
transport.tls.enable = true# 从 v0.50.0版本开始,transport.tls.enable的默认值为 true
serverAddr = "192.168.101" # 服务端ip
serverPort = 7000 # 服务端端口
auth.method = 'token' # 客户端访问验证方式
auth.token = '54321' # 客户端访问验证密码
[[proxies]]
name = "web"
type = "http"
localIP = "127.0.0.1"
localPort = 80
customDomains = ["192.168.101"]
本地打开我们的若依框架项目测试是否运行成功
地址栏中输入cmd
回车打开终端装备启动工具。
终端输入命令启动工具
frpc -c frpc.toml
使用公网IP测试,穿透成功
原文地址:https://blog.csdn.net/hacker_51/article/details/143892237
免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!