【日常积累】使用frp进行内网穿透

news2025/1/15 8:46:20

frp 是什么?

frp 是一个专注于内网穿透的高性能的反向代理应用,支持 TCP、UDP、HTTP、HTTPS 等多种协议,且支持 P2P 通信。可以将内网服务以安全、便捷的方式通过具有公网 IP 节点的中转暴露到公网。

为什么使用 frp?

通过在具有公网 IP 的节点上部署 frp 服务端,可以轻松地将内网服务穿透到公网,同时提供诸多专业的功能特性,这包括:

  • 客户端服务端通信支持 TCP、QUIC、KCP 以及 Websocket 等多种协议。
  • 采用 TCP 连接流式复用,在单个连接间承载更多请求,节省连接建立时间,降低请求延迟。
  • 代理组间的负载均衡。
  • 端口复用,多个服务通过同一个服务端端口暴露。
  • 支持 P2P 通信,流量不经过服务器中转,充分利用带宽资源。
  • 多个原生支持的客户端插件(静态文件查看,HTTPS/HTTP 协议转换,HTTP、SOCK5 代理等),便于独立使用 frp 客户端完成某些工作。
  • 高度扩展性的服务端插件系统,易于结合自身需求进行功能扩展。
  • 服务端和客户端 UI 页面。

原理

frp 主要由 客户端(frpc) 和 服务端(frps) 组成,服务端通常部署在具有公网 IP 的机器上,客户端通常部署在需要穿透的内网服务所在的机器上。

内网服务由于没有公网 IP,不能被非局域网内的其他用户访问。

用户通过访问服务端的 frps,由 frp 负责根据请求的端口或其他信息将请求路由到对应的内网机器,从而实现通信。

代理

在 frp 中一个代理对应一个需要暴露的内网服务。一个客户端支持同时配置多个代理。

代理类型

frp 支持多种代理类型来适配不同的使用场景。

类型描述
tcp单纯的 TCP 端口映射,服务端会根据不同的端口路由到不同的内网服务。
udp单纯的 UDP 端口映射,服务端会根据不同的端口路由到不同的内网服务。
http针对 HTTP 应用定制了一些额外的功能,例如修改 Host Header,增加鉴权。
https针对 HTTPS 应用定制了一些额外的功能。
stcp安全的 TCP 内网代理,需要在被访问者和访问者的机器上都部署 frpc,不需要在服务端暴露端口。
sudp安全的 UDP 内网代理,需要在被访问者和访问者的机器上都部署 frpc,不需要在服务端暴露端口。
xtcp点对点内网穿透代理,功能同 stcp,但是流量不需要经过服务器中转。
tcpmux支持服务端 TCP 端口的多路复用,通过同一个端口访问不同的内网服务。

测试

环境准备

一台公网服务器
一台内网服务器,需要保证能够连接到上面的公网服务器
我的环境是公网服务器为Linux服务器,内网就是我的Windows系统电脑。大致做个测试,需要下载对应版本的包。
需要使用更多功能的可以参考大佬文档https://gofrp.org/docs/examples/ssh/

服务器端配置

服务器作为公网访问唯一的固定地址,即作为 server 端。内网客户端作为 client 端,会主动向 server 端创建连接,此时再从 server 端反向发送数据即可实现内网穿透。

从github下载,地址为https://github.com/fatedier/frp/tags,选择版本和对应的操作系统进行下载。

[root-4-6-centos ~]# wget https://github.com/fatedier/frp/releases/download/v0.50.0/frp_0.50.0_linux_amd64.tar.gz
[root-4-6-centos ~]# tar -xvf frp_0.50.0_linux_amd64.tar.gz 
[root-4-6-centos ~]# cd frp_0.50.0_linux_amd64
[root-4-6-centos ~]# vim frps.ini 
[common]
bind_port = 7000

dashboard_port = 7500
dashboard_user = admin
dashboard_pwd = admin123
#添加了ui界面的相关配置
[root-4-6-centos ~]# ./frps -c frps.ini &
[root-4-6-centos frp_0.50.0_linux_amd64]# ps aux|grep frps
root      3550  0.0  0.4 727584 17084 pts/2    Sl+  16:11   0:00 ./frps -c frps.ini
root      9832  0.0  0.0 112812   976 pts/0    S+   16:33   0:00 grep --color=auto frps
#注意下面的6000端口要客户端启动起来才有
[root-4-6-centos frp_0.50.0_linux_amd64]# netstat -anp|grep frp
tcp6       0      0 :::7500                 :::*                    LISTEN      3550/./frps         
tcp6       0      0 :::6000                 :::*                    LISTEN      3550/./frps         
tcp6       0      0 :::7000                 :::*                    LISTEN      3550/./frps         
tcp6       0      0 10.0.4.6:7000           118.122.92.220:2079     ESTABLISHED 3550/./frps

注意云服务器需要在安全组中打开相应的端口。包括6000/7000/7500 三个端口。

客户端配置

客户端只需要配置所链接的服务器端地址,以及要映射客户端的哪些服务端口。
由于我的客户端是Windows的,需要下载对应的Windows版本。https://github.com/fatedier/frp/releases/tag/v0.50.0,下载后解压即可。

在这里插入图片描述
修改frpc.ini配置文件

[common]
server_addr = *.*.*.* (服务器公网IP)
server_port = 7000

[ssh]
type = tcp
local_ip = 127.0.0.1
local_port = 22
remote_port = 6000

然后进入命令行界面运行服务
在这里插入图片描述

外网服务器连接内网测试

直接Telnet服务器外网IP的6000端口,
在这里插入图片描述
或者使用ssh连接

#x.x.x.x为服务器外网IP
[root@VM-4-6-centos ~]# ssh -oPort=6000 test@x.x.x.x
ssh_exchange_identification: Connection closed by remote host

frp 会将请求 x.x.x.x:6000 的流量转发到内网机器的 22 端口。

由于我的Windows服务器没有ssh服务22端口,所以会报以下错误。但是也证明了已经连通。
在这里插入图片描述

访问frp控制面板

面板仅供参考,可用可不用。frp的dashboard访问界面为 http://服务器外网IP:7500,使用上面配置的用户名和密码 admin/admin123
在这里插入图片描述

更多更详细的使用请参考https://gofrp.org/docs/examples/ssh/

更多关于Linux的知识请前往博客主页查看,编写过程中可能由于能力有限难免出现问题,敬请指出,谢谢。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/885479.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

我记不住的grep和find命令

前言: Linux操作中总是会用到查找操作,无论是查找文件、目录,还是查找文件中的内容等。grep命令用于在某个文件文本中查找指定的字符串,类似于word中的ctrlF,而find命令用于在某个指定的目录中查找某个文件或某个目录。…

深入学习SpringCloud Alibaba微服务架构,揭秘Nacos、Sentinel、Seata等核心技术,助力构建高效系统!

课程链接: 链接: https://pan.baidu.com/s/1hRN0R8VFcwjyCTWCEsz-8Q?pwdj6ej 提取码: j6ej 复制这段内容后打开百度网盘手机App,操作更方便哦 --来自百度网盘超级会员v4的分享 课程介绍: 📚【第01阶段】课程简介:全…

函数性能探测:更简单高效的 Serverless 规格选型方案

作者:拂衣、丛霄 2019 年 Berkeley 预测 Serverless 将取代 Serverful 计算成为云计算新范式。Serverless 为应用开发提供了一种全新系统架构。借助 2023 年由 OpenAI 所带来的 AIGC 风潮,以阿里云函数计算 FC、AWS Lambda 为代表的 Serverless 以其更高…

软件压力测试对软件产品起到什么作用?

一、软件压力测试是什么? 软件压力测试是一种通过模拟正常使用环境中可能出现的大量用户和大数据量的情况,来评估软件系统在压力下的稳定性和性能表现的测试方法。在软件开发过程中,经常会遇到一些性能瓶颈和稳定性问题,而软件压力测试的作…

AlexNet网络结构详解

AlexNet论文地址: https://proceedings.neurips.cc/paper/2012/file/c399862d3b9d6b76c8436e924a68c45b-Paper.pdf 1、简介 AlexNet是2012年ISLVRC(ImageNet Large Scale Visual Recognition Challenge)竞赛的冠军网络,图像分类的正确率从70%提升到80%&…

《财讯》期刊简介及投稿要求

《财讯》杂志是经国家新闻出版总署批准,面向国内外公开发行的“全国综合性教育理论学术期刊 面向全国各级各类大、中专经济院校工作者;银行、经贸委、财政及行政管理人员,是作者科研、晋级等方面权威依据的优秀期刊。 主管单位:…

什么是冒烟测试?什么时候做冒烟测试?冒烟测试的用例哪儿来的?

什么是冒烟测试? 冒烟测试(Smoke Testing) 是软件测试中的一项基础测试,也称为构建验证测试(Build Verification Testing),通常用于确认新版本的软件是否可以进行基本的功能测试或者是否能够正…

常见期权策略类型有哪些?

这几天在做一个期权策略类型的整理分类,怎么解释期权策略,期权策略是现代金融市场中运用非常广泛、变化非常丰富、结构非常精妙的金融衍生产品;同时也是一种更为复杂也更为灵活的投资工具,下文介绍常见期权策略类型有哪些&#xf…

图片转换成pdf格式?这几种转换格式方法了解一下

图片转换成pdf格式?将图片转换成PDF格式的好处有很多。首先,PDF格式具有通用性,可以在几乎任何设备上查看。其次,PDF格式可以更好地保护文件,防止被篡改或者复制。此外,PDF格式还可以更好地压缩文件大小&am…

BitLocker已加密 - 解决方案

BitLocker介绍 Bitlocker 是 Windows 磁盘加密功能,旨在通过为整个卷提供加密来保护数据。 BitLocker 解决了因设备丢失、被盗或不适当解除授权而遭受数据盗窃或泄露的威胁。 BitLocker虽然增强了数据安全性,但也增加了用户的使用困难度,因为…

Ansys Zemax | 手机镜头设计 - 第 1 部分:光学设计

本文是 3 篇系列文章的一部分,该系列文章将讨论智能手机镜头模组设计的挑战,从概念、设计到制造和结构变形的分析。本文是三部分系列的第一部分,将专注于OpticStudio中镜头模组的设计、分析和可制造性评估。(联系我们获取文章附件…

【猿灰灰赠书活动 - 02期】- 【Java从入门到精通2023年7月最新(第7版)】

说明:博文为大家争取福利,与清华大学出版社合作进行送书活动 图书:《Java从入门到精通》 一、好书推荐 图书介绍 Java入门经典,95万Java程序员的入行选择。配备升级版Java开发资源库,在线大咖课在线答疑,学…

shell脚本之函数及数组

shell脚本之函数及数组 一函数1.1函数的作用1.2函数的基本格式1.3函数的注意事项1.4函数调用的方法1.5函数的返回值1.6函数的传参1.7在外部调用函数1.8函数变量的作用范围1.9函数的递归 二.数组2.1shell数组的定义2.2定义属组的方式2.3数组的数据类型2.4获取数组的数据列表2.5获…

回归预测 | MATLAB实现GRU门控循环单元多输入多输出

回归预测 | MATLAB实现GRU门控循环单元多输入多输出 目录 回归预测 | MATLAB实现GRU门控循环单元多输入多输出预测效果基本介绍程序设计往期精彩参考资料 预测效果 基本介绍 MATLAB实现GRU门控循环单元多输入多输出,数据为多输入多输出预测数据,输入10个…

2023电商销售额增幅全球第一!这个国家潜力正在爆发!

随着欧、美等跨境电商市场日趋饱和,拉美地区正逐渐成为全球电商投资的热点。这让该地区增长最强劲的电商市场——阿根廷——成为众多跨境卖家寻求增长与突破的新选择。 那么,阿根廷为什么是跨境卖家扩展电商业务的新机会?阿根廷电子商务市场…

ps变形怎么增加网格? PS怎么变形?

PS图片怎么变形:打开PS,找到需要处理的图片,复制图层,点选“编辑”—“变换”—“变形”,出现变形网格后,按需要操作就可以了。 PS是一款图片编辑的处理软件,它有很多的功能,在图形…

一百五十八、Kettle——Kettle各版本及其相关安装包分享(网盘链接,不需积分、不需验证码) 持续更新、持续分享

一、目的 最近因为kettle9.3的shim问题看了好多博客,都没有网盘分享。后来有一位博主分享了kettle9.2的shim安装包,已经很感谢他,但是是博客分享,下载还需要搞验证码下载码之类的。 kettle9.2的shim安装包下载好后,一…

基于LVQ神经网络的人脸朝向识别

1案例背景 1.1人脸识别概述 人脸识别作为一个复杂的模式识别问题,近年来受到了广泛的关注,识别领域的各种方法在这个问题上各显所长,而且发展出了许多新方法,大大丰富和拓宽了模式识别的方向。人脸识别、检测,跟踪、特征定位等技术近年来一直是研究的热点。人脸识别是人脸应用…

springboot结合shiro实战-身份认证

目录 环境搭建 配置shiro环境 总结 hello,大家好,我们写任何企业级项目基本都会需要做权限,权限包含身份认证和授权。 所谓身份认证,就是证明你是你。 所谓授权就是明白你登录之后能干什么。 现在,让我们用sprin…

根据一棵树的两种遍历构造二叉树

题目 给定两个整数数组 preorder 和 inorder ,其中 preorder 是二叉树的先序遍历, inorder 是同一棵树的中序遍历,请构造二叉树并返回其根节点。 示例 1: 输入: preorder [3,9,20,15,7], inorder [9,3,15,20,7] 输出: [3,9,20,null,null,…