电子产业一站式赋能平台

PCB联盟网

搜索
查看: 11|回复: 0
收起左侧

谈谈内网穿透,带你一步步体验FRP!

[复制链接]

331

主题

331

帖子

3497

积分

四级会员

Rank: 4

积分
3497
发表于 昨天 11:38 | 显示全部楼层 |阅读模式
击左上方蓝色“一口Linux”,选择“设为星标
第一时间看干货文章
?【干货】嵌入式驱动工程师学习路线?【干货】Linux嵌入式知识点-思维导图-免费获取?【就业】一个可以写到简历的基于Linux物联网综合项目?【就业】找工作简历模版

pk21jqjukxb64055106840.gif

pk21jqjukxb64055106840.gif


作者:非愉日志
我们家庭宽带基本都是基于NAT,并没有提供公网IP,那么想从公网(Internet)访问家里电脑起的某个端口或服务该怎么办?那就来试试FRP这款内网穿透工具吧!
为啥要内网穿透?比如你在家里电脑搭配了NAS,提供图片服务,你在外面想用手机同步照片到家里的NAS上?再比如你在办公电脑上启动了一个测试项目(API接口),想让合作小伙伴从公网访问到测试接口等等吧。当然,如果没有类似需求可以略过。
FRP搭建的前提准备条件:具有公共 IP 地址的服务器(例如:阿里/腾讯等各种云主机)
处于NAT或防火墙后面的内网的机器,可以提供tcp/http等服务(家庭电脑,公司内部电脑都可以)
先看看我呕心沥血画的FRP的原理及数据流程图:

buglnxf4soi64055106940.jpg

buglnxf4soi64055106940.jpg

Frp 流程图
原理详细说明:FRP Server(Server,IP假设为:202.106.0.26)
部署在公网:Server部署在拥有公网IP的服务器上,比如阿里云服务器。
监听请求:Server会监听来自外网的请求(开放57003端口),并将这些请求转发到对应的内网服务。
配置管理:通过配置文件,Server会管理所有的客户端连接,新建监听端口,并维护连接状态。
注意:要在防火墙开放需要暴露的端口(57003)
frp Client(Client,IP假设:10.133.0.20)
部署在内网:Client部署在需要被访问的内网机器上。
连接Server:Client会主动连接到Server,建立一条隧道。
转发请求:当有外部请求到达Server时,Server会通过建立的隧道将请求转发给Client服务。
返回响应:Client处理完请求后,将响应结果通过隧道返回给Server,最终传给外网用户。
FRP何许人也?FRP在内网穿透这块可谓是鼎鼎大名,是一款用 Golang 编写的快速反向代理,它通过转发端口来帮助您将 NAT 或防火墙后面的本地服务器暴露给 Internet。截至目前它支持 TCP 和 UDP,以及 HTTP 和 HTTPS 协议。
话不多说,我们来实战体验:测试环境:
阿里云主机,有固定公网IP
内网测试服务器,系统Ubuntu2024
下载二进制可执行文件,服务端,客户端可执行程序和配置都在里面
wget https://github.com/fatedier/frp/releases/download/v0.61.1/frp_0.61.1_linux_amd64.tar.gz
tar zxvf frp_0.61.1_linux_amd64.tar.gz
cd frp_0.61.1_linux_amd64
服务端配置:
# cat frps.toml
bindPort = 57003 #端口随意
auth.method = "token"
auth.token = "mytokent"
启动服务端,这样会监听端口:202.106.0.26:57003
frps -c frps.toml

fvbuguxuhn364055107040.jpg

fvbuguxuhn364055107040.jpg

Frp服务端启动
客户端配置:
前提:为了测试,已经有Nginx服务启动在内网机器的8005端口了,其他服务也可以,如ssh

3pggqc0liz564055107140.jpg

3pggqc0liz564055107140.jpg

内网Nginx服务
FRP客户端配置
# cat frpc.toml
serverAddr = "public IP"
serverPort = 57003
auth.method = "token"
auth.token = "mytokent"
[[proxies]]
name = "nginx-simple-web"
type = "tcp"
localIP = "10.133.36.109"
localPort = 8005
remotePort = 59008
启动客户端FRP
./frpc -c frpc.toml


tr1ayh4mxff64055107240.jpg

tr1ayh4mxff64055107240.jpg

Frp客户端启动
观察客户端及服务端日志,可以看到已经链接上FRP服务端了

lddkm54opbz64055107340.jpg

lddkm54opbz64055107340.jpg

Frp 客户端已连接
服务端这时会启动新的端口59008(配置在客户端,但是需要在服务端的云服务上开通防火墙端口)
访问映射到公网的IP+端口,有域名的的也可以解析域名到公网地址上,使用域名访问
如:http://Public-IP:59008

el5q1lrqxms64055107440.jpg

el5q1lrqxms64055107440.jpg

从公网访问内网服务

zuphvq5ffqe64055107540.jpg

zuphvq5ffqe64055107540.jpg

服务端请求日志
以上是针对Linux有些了解的同学,如果内网是windows环境也没问题的,再介绍一个开源项目,地址在这:
https://github.com/luckjiawei/frpc-desktop。
这个开源项目提供了FRP跨平台桌面客户端,可视化配置,轻松实现内网穿透!

g2mauk4wfui64055107640.jpg

g2mauk4wfui64055107640.jpg

FRP Desktop

a1zozddqsjh64055107740.jpg

a1zozddqsjh64055107740.jpg

FRP 桌面
FRP应该有很多人介绍过,不过我还是按照我自己的方式,通过一步步的实际操作来验证和体验各种工具的可用性,找到工具的有点和不足之处,希望能帮到您。
end

一口Linux

关注,回复【1024】海量Linux资料赠送
精彩文章合集
文章推荐
?【专辑】ARM?【专辑】粉丝问答?【专辑】所有原创?【专辑】linux入门?【专辑】计算机网络?【专辑】Linux驱动?【干货】嵌入式驱动工程师学习路线?【干货】Linux嵌入式所有知识点-思维导图
回复

使用道具 举报

发表回复

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则


联系客服 关注微信 下载APP 返回顶部 返回列表