搭建frp实现内网穿透

简介: 前言:为什么需要内网穿透功能?从公网中访问自己的私有设备向来是一件难事儿。自己的主力台式机、NAS等等设备,它们可能处于路由器后,或者运营商因为IP地址短缺不给你分配公网IP地址。如果我们想直接访问到这些设备(远程桌面,远程文件,SSH等等),一般来说要通过一些转发或者P2P组网软件的帮助。搭建frp服务器进行内网穿透,可用且推荐,可以达到不错的速度,且理论上可以开放任何想要的端口,可以实现的功能远不止远程桌面或者文件共享

frp是什么?

1.frp是一个高性能的反向代理应用,可以帮助您轻松地进行内网穿透,对外网提供服务, 支持tcp, udp, http,

https等协议类型,并且web服务支持根据域名进行路由转发。

2.frp内网穿透主要用于没有公网IP的用户,实现远程桌面、远程控制路由器、

搭建的WEB、FTP、SMB服务器被外网访问、远程查看摄像头、调试一些远程的API(比如微信公众号,企业号的开发)等。

3.为什么要选择frp?市面上提供内网穿透服务的公司对免费的用户是有限制的,

本站免费提供无限流量、无限域名绑定、不限制网速、不限制连接数的内网穿透服务。

准备工作

搭建一个完整的frp服务链,我们需要:

VPS一台(也可以是具有公网IP的实体机)

访问目标设备(就是你最终要访问的设备 我这里用的是windows)

VPS相关:因为frp的原理是利用服务端(所准备的VPS)进行转发,因而VPS的速度直接决定了之后连接的质量,请根据自己的需要选择相应主机配置。

我这里测试使用的是阿里云4核4G的轻量应用服务器,以及本地windows

下边开始正式的配置:

服务端配置(也就是我们具有公网IP的服务):

  1. 1.要下载frp的包(根据自己的系统架构去下载):

wget https://github.com/fatedier/frp/releases/download/v0.42.0/frp_0.42.0_linux_amd64.tar.gz

  1. 2.解压
  2. tar  -zxvf frp_0.42.0_linux_amd64.tar.gz
  3. 3.进入frp目录 修改frps.ini 文件
  4. #   cd frp_0.42.0_linux_amd64/
  5. #    vim frps.ini    ###下边是我写好的配置文件

bind_port = 7000        #表示用于客户端和服务端连接的端口,这个端口号我们之后在配置客户端的时候要用到。

dashboard_port = 7500   #服务端仪表板的端口,若使用7500端口,在配置完成服务启动后可以通过浏览器访问 x.x.x.x:7500

token = 41f1a553fd725468436eeac9********e31325575ee27ab1ea928931 #是用于客户端和服务端连接的口令,请自行设置并记录,稍后会用到。

dashboard_user = root   #打开仪表板页面登录的用户名和密码,自行设置即可。  

dashboard_pwd = root   #同上

4.这里就可以启动

nohup ./frps -c frps.ini &     ##后台启动

通过ps查看进程1686929316843.png    5.通过浏览器访问是否启动成功  访问XXXX:7500 ip:服务器的ip,端口是上边ini文件中配置dashboard_port 端口 


出现下边仪表说明配置成功  1686929479337.png客户端配置(也就是我们具有公网IP的服务):

1.frp的客户端就是我们想要真正进行访问的那台设备,大多数情况下应该会是一台Windows主机,因而本文使用Windows主机做例子。Linux配置方法类似.同样地,根据客户端设备的情况选择相应的frp程序进行下载,Windows下载和解压等步骤不再描述。

下载地址:

https://github.com/fatedier/frp/releases/download/v0.42.0/frp_0.42.0_windows_amd64.zip

2.同样解压完之后打开目录下的frpc.ini文件编辑

下边是我的配置:

[common]

server_addr = ******   #服务端的ip地址

server_port = 7000   # 服务端配置的bind_port端口

token = 41f1a553fd725468436eea**************ab1ea928931  #服务端配置的token

#以上是必须要有的,下边是自定义的规则  可以存在多个

[web2]    #规则的命名

type = tcp    #协议是什么  tcp  udp  http等 具体可以看frp官方文档

local_port = 57860      #本地要穿透端口号

local_ip = 127.0.0.1    #本地的IP

remote_port = 57860   #该条规则在服务端开放的端口号(我想通过 服务端ip:57860 访问到本地57860上的内容)


3.编辑完之后可以运行,也得通过命令去指定文件启动

./frpc -c frpc.ini

出现 start proxy success  说明启动成功  注意窗口不可关闭,可以写一个批处理脚本进行后台运行1686930072722.png4.可以进行验证啦!!!!  如果通过服务端id: 客户端配置的remote_port 端口  访问成功的话就大功告成啦!!!


frp原理图如下:

20191102145929999.png


Frp请求流程:

1.首先,frpc 启动之后,连接 frps,并且发送一个请求 login(),之后保持住这个长连接,如果断开了,就重试

2..frps 收到请求之后,会建立一个 listener 监听来自公网的请求

3.当 frps 接受到请求之后,会在本地看是否有可用的连接( frp 可以设置连接池),如果没有,就下发一个 msg.StartWorkConn 并且 等待来自 frpc 的请求

4.frpc 收到之后,对 frps 发起请求,请求的最开始会指名这个连接是去向哪个 proxy 的

5.frps 收到来自 frpc 的连接之后,就把新建立的连接与来自公网的连接进行流量互转

6.如果请求断开了,那么就把另一端的请求也断开


至此,客户端配置完成,之后就是你自己根据需要在frpc.ini后追加规则即可。

强烈建议你在使用frp直接测试内网穿透前,先在局域网内测试好相关功能的正常使用,并配置好可能会影响的Windows防火墙等内容,在内网调试通过后再使用frp进行内网穿透测试。

相关文章
|
8月前
|
开发工具
frp-免费内网穿透
frp-免费内网穿透
442 0
|
运维 安全 网络协议
使用Frp的stcp实现安全内网穿透访问
使用Frp的stcp实现安全内网穿透访问
694 1
使用Frp的stcp实现安全内网穿透访问
|
Linux 网络安全 Windows
使用阿里云搭建FRP
使用frp穿透进行远程桌面
|
3月前
|
应用服务中间件 nginx
内网穿透ngrok
ngrok实现内网穿透操作流程
|
9月前
|
网络协议 Ubuntu Linux
frp内网穿透
frp内网穿透
2092 0
|
10月前
|
网络安全 Windows
云服务器搭建frp服务端实现内网穿透
工作中有时候会遇到需要开外网的情况,之前一直用的花生ke,最近又需要内网穿透,打开花生ke,创建连接,提示创建失败,也不说是什么原因,反正是用不了了
|
域名解析 网络协议 Linux
内网穿透工具—FRP
内网穿透工具—FRP
内网穿透工具—FRP
frp内网穿透配置
frp内网穿透配置
108 0
|
小程序 API
ngrok内网穿透
ngrok内网穿透
ngrok内网穿透
|
前端开发
【内网穿透】使用Ngrok免费内网穿透
使用前后端分离搭建项目的时候,前端人员需要对接接口进行调试但是部署上服太麻烦怎么办?快来试试内网穿透吧,今天教大家使用Ngrok进行免费的内网穿透
1745 4
【内网穿透】使用Ngrok免费内网穿透