【计算机网络相关】使用FRP实现内网穿透


❤️觉得内容不错的话,欢迎点赞收藏加关注😊😊😊,后续会继续输入更多优质内容❤️

👉有问题欢迎大家加关注私戳或者评论(包括但不限于NLP算法相关,linux学习相关,读研读博相关......)👈

博主原文链接:https://www.yourmetaverse.cn/nlp271/

frp远程传统示意
FRP是一种实现内网穿透的工具,可以将内部网络的服务暴露给公共网络,使得外部用户可以通过公共网络访问内部网络的服务。

FRP工具分为服务端和客户端两部分,服务端运行在公共网络上,而客户端运行在内部网络上。在实施内网穿透时,需要先在服务端配置相应的端口映射或反向代理规则,然后在客户端配置连接服务端的参数。一旦连接建立,外部用户就可以通过公共网络访问内部网络的服务。

FRP实现内网穿透的原理基于TCP/IP协议栈中的端口映射和反向代理技术,通过在公共网络和内部网络之间建立一个虚拟的通道,将公共网络中的请求转发到内部网络中的服务。

具体来说,FRP包括服务端和客户端两部分,服务端运行在公共网络上,而客户端运行在内部网络上。在服务端配置相应的端口映射或反向代理规则,以便将公共网络中的请求转发到内部网络中的服务;在客户端配置连接服务端的参数,以便连接服务端并将服务请求转发到内部网络中的服务。以下是FRP实现内网穿透的具体过程:

  • 客户端发起请求,请求访问服务端公共网络IP地址和端口号。

  • 公共网络路由器接收到请求,根据端口映射或反向代理规则将请求转发到服务端。

  • 服务端接收到请求,根据规则将请求转发到客户端所在的内部网络。

  • 客户端接收到请求,将请求转发到内部网络中的服务。

  • 内部网络中的服务处理请求并返回响应。

  • 客户端将响应转发到服务端。

  • 服务端将响应转发到公共网络路由器。

  • 公共网络路由器将响应返回给请求方。

通过上述过程,FRP实现了内网穿透,使得外部用户可以通过公共网络访问内部网络的服务。需要注意的是,在实施内网穿透时,需要考虑网络安全问题,并采取相应的安全措施以保护内部网络的设备和数据不受攻击和侵入。

使用FRP实现内网穿透

准备条件

(1)一台具有公网IP的服务器,在腾讯云,阿里云或者华为云等云服务商处购买,双十一一般会有活动,但是最近经济不太景气,云服务价格没有太大的优惠,我当时购买的是腾讯云的轻量应用服务器,新用户只需要198就可以购买三年的服务器,可以说是相当划算了。(需要在服务器管理的防火墙设置里放行需要的端口)
(2)frp软件
点击链接可进入软件下载列表,一般选择最近的发行版前一个版本即可,截止2022.21.04日发行版本是0.45.0,于是我选择0.44.0版本。
frp软件列表
按照对应的系统下载对应的文件,需要注意的是,服务端和客户端的软件版本需要保持一致。
frp软件文件列表
上图是frp软件的文件列表,不管是哪个系统版本的软件均存在以上几个文件,其中frpc和frps分别是客户端和服务端的二进制文件,不需要进行任何修改,需要修改的是frpc.ini和frps.ini两个文件。

服务端设置

将frps.ini修改成如下:

[common]
bind_port = 7000#用于frp服务客户端和服务端通讯的端口,需要再服务器防火墙设置里面放行该端口,例如:7000。
auto_token = Ba9SI3do718tCwu67V0qk4l5iNG6sAm1DJYzUO8TZxF9y6c52g0K4XLRQfjeW4bn #用于加密的token 可以使用强密码生成器(http://www.wetools.com/password-generator)生成一个64位强密码。例如:Ba9SI3do718tCwu67V0qk4l5iNG6sAm1DJYzUO8TZxF9y6c52g0K4XLRQfjeW4bn。
dashboard_port = 7001#用于frp服务管理端口,需要在服务器防火墙设置里面放行该端口,例如:7001。
dashboard_user = user#frp服务管理用户名。
dashboard_pwd = password#frp服务管理密码。

一般服务端建议使用linux服务器,比较稳定,将上述配置修改好之后,可以运行以下命令将该服务后台运行:

nohup ./frps -c frps.ini > ./frps.log &

客户端设置

将frpc.ini修改成如下:

[common]
server_addr = 1.1.1.1 #服务器公网ip,例如1.1.1.1
server_port = 7000 #用于frp服务客户端和服务端通讯的端口,需要再服务器防火墙设置里面放行该端口,例如:7000,需要与服务端bind_port保持一致。
auto_token = Ba9SI3do718tCwu67V0qk4l5iNG6sAm1DJYzUO8TZxF9y6c52g0K4XLRQfjeW4bn #用于加密的token 可以使用强密码生成器(http://www.wetools.com/password-generator)生成一个64位强密码。例如:Ba9SI3do718tCwu67V0qk4l5iNG6sAm1DJYzUO8TZxF9y6c52g0K4XLRQfjeW4bn,需要与服务端auto_token保持一致。
#以下为内网穿透客户端7002端口到服务端7003端口的实例。如果有多个内网穿透设置,只需要将以下内容复制多次接到文件后面即可。
[7003_to_7003]#内穿穿透的连接名称,可以自定义,如ssh。
type = tcp#链接协议类型,如tcp,http等,具体需要依据穿透的服务进行设置。
local_ip = 127.0.0.1#本地ip,一般是127.0.0.1
local_port = 7002#本地连接的端口,如内网穿透ssh远程连接,就是22端口,Windows远程桌面是3389端口,具体的需要根据服务类型进行设置。
remote_port = 7003#用于frp服务客户端和服务端通讯的端口,需要再服务器防火墙设置里面放行该端口,例如:7000,这个端口不能与服务端bind_port设置成同一个,且每一个内网穿透均需要单独设置一个remote_port。

如果客户端是linux系统的话,可以运行以下命令让其在后台自动运行:

nohup ./frpc -c frpc.ini > ./frpc.log &

如果是Windows系统的话,可以参考使用frp内网穿透Windows远程桌面示例

参考文献

[1] 内网穿透百度百科 https://baike.baidu.com/item/%E5%86%85%E7%BD%91%E7%A9%BF%E9%80%8F/8597835
[2] 什么是内网穿透?内网穿透有什么用?https://hsk.oray.com/news/7244.html
[3] FRP介绍 https://github.com/fatedier/frp/blob/dev/README_zh.md
[4] 反向代理百度百科 https://baike.baidu.com/item/%E5%8F%8D%E5%90%91%E4%BB%A3%E7%90%86/7793488
[5] FRP内网穿透Windows远程桌面 https://www.cnblogs.com/ingxx/p/12255241.html


❤️觉得内容不错的话,欢迎点赞收藏加关注😊😊😊,后续会继续输入更多优质内容❤️

👉有问题欢迎大家加关注私戳或者评论(包括但不限于NLP算法相关,linux学习相关,读研读博相关......)👈

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Chaos_Wang_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值