14
2023
04
16:58:57

frp内网穿透服务使用

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 &  #后台启动


客户端启动后

e4d358aaea481887d9fc5e515f0f5a43_f055e399bc6a4f29805d8bc1569e939b.png


再启动frp客户端


Windows黑窗口使用命令


frpc.exe -c frpc.ini  # windown上启动客户端


客户端启动后


在这里插入图片描述
客户端启动后,Linux服务端也显示了信息
在这里插入图片描述


查看面板


frp穿透服务已经成功了,我们再查看下frp面板,浏览器地址栏输入:服务器公网IP+7500


在这里插入图片描述
在这里插入图片描述



还有一种验证方式:

Linux上输入命令


ssh 127.0.0.1 -l root -p 6000


远程连接

图片时网上找的

image.png

如果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,创建自启动任务


右键我的电脑–》管理–》系统工具–》任务计划程序–》创建任务

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述




推荐本站淘宝优惠价购买喜欢的宝贝:

image.png

本文链接:https://hqyman.cn/post/3870.html 非本站原创文章欢迎转载,原创文章需保留本站地址!

分享到:
打赏





休息一下~~


« 上一篇 下一篇 »

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

请先 登录 再评论,若不是会员请先 注册

您的IP地址是: