1,frp简介
frp 是一个专注于内网穿透的高性能的反向代理应用,支持 TCP、UDP、HTTP、HTTPS 等多种协议。可以将内网服务以安全、便捷的方式通过具有公网 IP 节点的中转暴露到公网。
为什么使用 frp ?
通过在具有公网 IP 的节点上部署 frp 服务端,可以轻松地将内网服务穿透到公网,同时提供诸多专业的功能特性,这包括:
客户端服务端通信支持 TCP、KCP 以及 Websocket 等多种协议。
采用 TCP 连接流式复用,在单个连接间承载更多请求,节省连接建立时间。
代理组间的负载均衡。
端口复用,多个服务通过同一个服务端端口暴露。
多个原生支持的客户端插件(静态文件查看,HTTP、SOCK5 代理等),便于独立使用 frp 客户端完成某些工作。
高度扩展性的服务端插件系统,方便结合自身需求进行功能扩展。
服务端和客户端 UI 页面。
开发状态
frp 目前已被很多公司广泛用于测试、生产环境。
master 分支用于发布稳定版本,dev 分支用于开发,您可以尝试下载最新的 release 版本进行测试。
我们正在进行 v2 大版本的开发,将会尝试在各个方面进行重构和升级,且不会与 v1 版本进行兼容,预计会持续一段时间。
现在的 v0 版本将会在合适的时间切换为 v1 版本并且保证兼容性,后续只做 bug 修复和优化,不再进行大的功能性更新。
文档
完整文档已经迁移至 https://gofrp.org。
为 frp 做贡献
frp 是一个免费且开源的项目,我们欢迎任何人为其开发和进步贡献力量。
在使用过程中出现任何问题,可以通过 issues 来反馈。
Bug 的修复可以直接提交 Pull Request 到 dev 分支。
如果是增加新的功能特性,请先创建一个 issue 并做简单描述以及大致的实现方法,提议被采纳后,就可以创建一个实现新特性的 Pull Request。
欢迎对说明文档做出改善,帮助更多的人使用 frp,特别是英文文档。
贡献代码请提交 PR 至 dev 分支,master 分支仅用于发布稳定可用版本。
如果你有任何其他方面的问题或合作,欢迎发送邮件至 fatedier@gmail.com 。
提醒:和项目相关的问题最好在 issues 中反馈,这样方便其他有类似问题的人可以快速查找解决方法,并且也避免了我们重复回答一些问题。
有了内网穿透你能干什么?
远程访问内网的 http/https 服务
远程桌面(Windows/Mac)
远程文件、 SSH
小程序开发
有了内网穿透在外访问家里的电脑、NAS、树莓派、摄像头等网络设备或远程控制,那都不是事儿~
frp是一个开源的内网穿透应用,有客户端软件和服务端软件,大概工作过程如下:
服务端运行在具有公网IP的服务器上,比如Linux上,并监听某个端口,等待客户端连接。
客户端运行在需要穿透的内网机器上,比如本地电脑上,连接到服务器之后,服务器开始监听客户端需要穿透的指定端口。
外网用户连接服务器监听的指定端口,然后服务器将用户数据转发到内网客户端,实现内网穿透
frp工作原理
服务端运行,监听一个主端口,等待客户端的连接;
客户端连接到服务端的主端口,同时告诉服务端要监听的端口和转发类型;
服务端fork新的进程监听客户端指定的端口;
外网用户连接到客户端指定的端口,服务端通过和客户端的连接将数据转发到客户端;
客户端进程再将数据转发到本地服务,从而实现内网对外暴露服务的能力。
原理简单解释
服务器端和客户端约定通过7000端口通信,客户端告诉服务端要监听6000端口(客户端配置的remote_port =6000),然后外网服务器就会监听是否有连接请求:外网服务器Ip地址:6000,如果有就把连接给客户端,这样就可以达到内网穿透的目的。
2,frp下载
准备一个阿里云服务器,准备安装frp服务端,准备一台电脑安装frp客户端。所以这里需要下载Linux版本和windows版本
下载地址:https://github.com/fatedier/frp/releases
frp文件说明:https://gitee.com/yijicai/frp
官网: https://gofrp.org/
2,解压安装
这里frp服务端安装在Linux上,frp客户端安装在Windows上。
将下载的Linux压缩包上传到服务器上解压。
tar -xvf frp_0.38.0_linux_amd64.tar.gz
解压之后目录结构如下,这里可以选择把客户端没有的程序和配置删掉,也可不删。文件中所有显示frps的都是服务端文件,显示frpc的都是客户端文件。
# 删除客户端配置
rm -f frpc*
下载Windows版本的frp解压到本地,删除所有服务端文件。
3,配置使用
frp详细使用:https://www.cnblogs.com/hahaha111122222/category/1171545.html
frps和frpc配置文件参数详解:https://www.cnblogs.com/hahaha111122222/category/1171545.html
3.1,查看默认配置
查看服务端默认配置文件frps.ini
[common]
bind_port = 7000# 默认端口7000,就是客户端和服务端通信的端口,不是你转发的那个端口,如果要改端口,客户端和服务端两边的配置文件都要改
查看客户端默认配置文件frpc.ini
[common]
server_addr = 云服务器公网IP#frps服务端所在的公网IP
server_port = 7000# 默认端口7000,就是客户端和服务端通信的端口,不是你转发的那个端口,如果要改端口,客户端和服务端两边的配置文件都要改
[ssh]# frp内网穿透通道的名称,一定要唯一
type = tcp# 连接类型
local_ip = 127.0.0.1# 本地的地址
local_port = 22# 穿透到本地内网的端口号
remote_port = 6000# 本次TCP服务要监听的端口,就是外网服务器要监听的端口
3.2,开放端口
阿里云服务器端口是没有开放的,所以我们需要先在阿里云安全组中开放7000(frp客户端和服务端通信端口),6000(服务器端要监听的端口),7500(这是frp面板的端口,下面会提到)这三个端口。
3.3,配置frp管理面板
frp面板是frp服务的一个可视化界面,可以知道有哪些穿透服务。
编辑服务端的配置文件
vim frps.ini# linux上编辑服务端的配置文件
#默认端口7000,就是客户端和服务端通信的端口,不是你转发的那个端口,如果要改端口,客户端和服务端两边的配置文件都要改
bind_port = 7000
# 控制台配置,frp的web管理控制台的用户名和密码,7500是默认端口(所以前面把7500端口提前放开了),可以通过服务端ip+7500端口登录
dashboard_port = 7500
dashboard_user = admin
dashboard_pwd = admin
#token = 123456789 #用于验证,为了安全,和客户端对应,服务端配置了token客户端也要配置一样的,这个配置根据需要配置,这里就不配了。
编辑客户端配置文件
只需要配置公网的IP就可以,别的不要改动
server_addr = 云服务器公网IP
3.4,启动
要先启动frp服务端
./frps -c ./frps.ini &#后台启动
nohup ./frps -c ./frps.ini & #后台启动
客户端启动后
再启动frp客户端
Windows黑窗口使用命令
frpc.exe -c frpc.ini # windown上启动客户端
客户端启动后
客户端启动后,Linux服务端也显示了信息
查看面板
frp穿透服务已经成功了,我们再查看下frp面板,浏览器地址栏输入:服务器公网IP+7500
还有一种验证方式:
Linux上输入命令
ssh 127.0.0.1 -l root -p 6000
远程连接
图片时网上找的
如果frp客户端配置在Linux上,远程连接
连接:ssh -oPort=6001 test@x.x.x.x
注:test为内网机器的用户名,x.x.x.x为服务器的公网IP,连接时需要输入内网test用户的密码
四,配置http穿透
上面的穿透是TCP的一个简单穿透,下面配置http内网穿透
4.1有域名配置http穿透
编辑frps.ini文件
在阿里云上把要监听的http端口开放
#默认端口7000,就是客户端和服务端通信的端口,不是你转发的那个端口,如果要改端口,客户端和服务端两边的配置文件都要改
bind_port = 7000
# 控制台配置,frp的web管理控制台的用户名和密码,7500是默认端口(所以前面把7500端口提前放开了),可以通过服务端ip+7500端口登录
dashboard_port = 7500
dashboard_user = admin
dashboard_pwd = admin
# 配置http和https服务要监听的端口,这两个端口也要在阿里云安全组上放开,且不能是服务器已经使用的端口
# 为将服务器的80端口做http,443端口做https,原理就像nginx一样,可以多个网站使用这两个端口。
vhost_http_port = 80
vhost_https_port = 443
编辑frpc.ini文件
[common]
server_addr = 云服务器公网IP#frps服务端所在的公网IP
server_port = 7000# 默认端口7000,就是客户端和服务端通信的端口,不是你转发的那个端口,如果要改端口,客户端和服务端两边的配置文件都要改
[ssh]# frp内网穿透通道的名称,一定要唯一,自定义
type = tcp# 连接类型
local_ip = 127.0.0.1# 本地的地址
local_port = 22# 穿透到本地内网的端口号
remote_port = 6000# 本次TCP服务要监听的端口,就是外网服务器要监听的端口
# 自己有域名配置http穿透,要将指定域名解析到frps服务端的IP上。
[httptest]# frp内网穿透通道的名称,一定要唯一,自定义
type = http# 连接类型
local_ip = 127.0.0.1# 本地的地址
local_port = 8081# 穿透到本地内网的端口号
custom_domains = test.yang.com# 填写你已经解析到frps服务端IP上的域名
# custom_domains = 这里填写你已经解析到frps服务端IP上的域名,自己每个穿透对应服务,都可以绑定一个专属域名用于访问,包括使用tcp和udp协议。然后就可以通过这个已经自定义域域名访问到自己的对应HTTP服务。
ng.com:80就可以达到访问127.0.0.1:8081的目的
有域名的http穿透没有在客户端配置remote_port 监听端口信息,监听端口配置到了服务端vhost_http_port,常规情况下,frp 服务器端默认定义了 http 和 https 的服务端口为 80/443,所以配置 http 和 https 是无需配置 remote_port 远程端口信息.
另外一种配置方式
有域名的http穿透是通过在frpc.ini中配置custom_domains域名,还有另外一种方式,就是在当 frp服务器frps.ini 中配置了 subdomain_host 参数(配置二级域名),并为所有用户提供了子域名服务.那么此时可以在frpc.ini中使用 subdomain 参数,其参数值应仅为主机头 .
例如:服务器frps.ini提供了subdomain_host= frp.com 的泛域名服务,那么在frpc.ini中设置 subdomain = nas 就可以使用 nas.frp.com 来穿透本条服务,当然主机头也是唯一性的,先到先得.此种配置多数用于 自建frps服务器 ,方便自己使用一个域名的泛域名来配置穿透.
4.2,无域名配置http穿透
编辑frps.ini文件
#默认端口7000,就是客户端和服务端通信的端口,不是你转发的那个端口,如果要改端口,客户端和服务端两边的配置文件都要改
bind_port = 7000
# 控制台配置,frp的web管理控制台的用户名和密码,7500是默认端口(所以前面把7500端口提前放开了),可以通过服务端ip+7500端口登录
dashboard_port = 7500
dashboard_user = admin
dashboard_pwd = admin
编辑frpc.ini文件
[common]
server_addr = 云服务器公网IP#frps服务端所在的公网IP
server_port = 7000# 默认端口7000,就是客户端和服务端通信的端口,不是你转发的那个端口,如果要改端口,客户端和服务端两边的配置文件都要改
[httpname]# frp内网穿透通道的名称,一定要唯一,自定义
type = tcp# 连接类型
local_ip = 127.0.0.1# 本地的地址
local_port = 8082# 穿透到本地内网的端口号
remote_port = 6000# 访问公网IP+6000就可以访问127.0.0.1:8082了
注意:如果在客户端配置http请求的域名,一定要在阿里云上配置域名解析,不然请求不成功
五,说明
frp访问内网的流程,frp服务端和客户端通过配置约定走公网ip的7000端口,同时客户端告诉服务端需要监听6000的端口,如果出现公网ip+6000的请求,就把连接交给本地内网的22端口,请求本地的地址就是127.0.0.1:22,这样就达到访问内网的目的。
使用 HTTP 和 HTTPS 协议时,每一条穿透配置必须至少要有 custom_domain 和 subdomain 中的任意一个域名参数.否则会出现 custom_domains and subdomain should set at least one of them 错误提示.而 TCP 协议可无需配置域名,直接使用 frp 服务器的域名或者IP.
六,window上设置frpc客户端开启自启动
自启动设置1:https://blog.cndoor.vip/?p=140
自启动设置2:https://blog.csdn.net/leadseczgw01/article/details/103298118
1,在frpc.exe目录下新建一个文件frpc_start.bat,注意路径要写绝对路径
@echo off
if "%1" == "h" goto begin
mshta vbscript:createobject("wscript.shell").run("""%~nx0"" h",0)(window.close)&&exit
:begin
D:\frp_0.29.0\frpc.exe -c D:\frp_0.29.0\frpc.ini
2,创建自启动任务
右键我的电脑–》管理–》系统工具–》任务计划程序–》创建任务
推荐本站淘宝优惠价购买喜欢的宝贝:
本文链接:https://hqyman.cn/post/3870.html 非本站原创文章欢迎转载,原创文章需保留本站地址!
休息一下~~