首页 > 其他分享 >[网络] 反向代理与内网穿透:FRPC

[网络] 反向代理与内网穿透:FRPC

时间:2025-01-04 10:22:29浏览次数:8  
标签:frps -- FRPC 穿透 frp ini https frpc 内网

缘起: Gradio

  • Gradio是一款快速构建AI Web演示应用的Python Web框架(主要适用于科研、实验室,而非ToC的Web应用),其支持本地运行和远程访问。

1个极简的Gradio代码:app.py

import gradio as gr  # 导入gradio库,gradio用于快速创建机器学习模型的web界面
 
 
# 定义一个名为greet的函数,接收两个参数:name 和 intensity
def greet(name, intensity):
    # 函数返回一个字符串,包含问候语和根据intensity重复的名字
    return "Hello, " + name + "!" * int(intensity)  
 
 
# 使用gr.Interface创建一个UI界面,fn指定了接口的函数,inputs定义了输入类型,outputs定义了输出类型
demo = gr.Interface(
    fn=greet,  # 指定greet函数作为接口的回调函数
    inputs=["text", "slider"],  # 设置两个输入,一个文本输入框和一个滑块
    outputs=["text"],  # 设置一个文本输出,用于显示greet函数的结果
)
 
#demo.launch()  # 启动界面,这将会在本地服务器上运行web应用程序
demo.launch(share=True)  # share=True 即可支持远程访问

如何运行呢?

(base) D:\Workspace\CodeRepositories\gradio-app> python app.py
信息: 用提供的模式无法找到文件。
* Running on local URL:  http://127.0.0.1:7860

Could not create share link. Missing file: C:\Users\xxx\AppData\Roaming\Python\Python312\site-packages\gradio\frpc_windows_amd64_v0.3.

Please check your internet connection. This can happen if your antivirus software blocks the download of this file. You can install manually by following these steps:

1. Download this file: https://cdn-media.huggingface.co/frpc-gradio-0.3/frpc_windows_amd64.exe
2. Rename the downloaded file to: frpc_windows_amd64_v0.3
3. Move the file to this location: C:\Users\xxx\AppData\Roaming\Python\Python312\site-packages\gradio
  • Gradio的远程访问,无需用户精通网络和Web开发相关技术,那么它怎么做到的呢?

从上面的日志中可见,是利用了frpc这款反向代理软件。(公网IP的问题,应是Gradio组织提供的)

  • 由此,本篇的正主frpc开始。

概述:反向代理与内网穿透软件(FRPC)

  • frp 是一个可用于内网穿透高性能反向代理应用
  • 支持 tcp, udp 协议,为 http 和 https 应用协议提供了额外的能力
  • 且尝试性支持了点对点穿透
  • 其名称其实就是使用了 Fast Reverse Proxy 的首字母缩写。

FRPC的架构

反向代理的场景类型

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

FRPC 的安装篇

FRPC Install on Windows

Step1 下载安装包

  • url

Step2 解压即安装

$ pwd
/d/Program/frpc/frp_0.39.1_windows_amd64

$ ls -la
total 24262
drwxr-xr-x 1 EDY 197612        0 Jan  4 09:55 ./
drwxr-xr-x 1 EDY 197612        0 Jan  4 09:56 ../
-rw-r--r-- 1 EDY 197612    11358 Feb  9  2022 LICENSE
-rwxr-xr-x 1 EDY 197612 10769408 Feb  9  2022 frpc.exe*
-rw-r--r-- 1 EDY 197612      126 Feb  9  2022 frpc.ini
-rw-r--r-- 1 EDY 197612    10009 Feb  9  2022 frpc_full.ini
-rwxr-xr-x 1 EDY 197612 14029824 Feb  9  2022 frps.exe*
-rw-r--r-- 1 EDY 197612       26 Feb  9  2022 frps.ini
-rw-r--r-- 1 EDY 197612     5155 Feb  9  2022 frps_full.ini
drwxr-xr-x 1 EDY 197612        0 Jan  4 09:55 systemd/
  • frpc : 客户端(一般放内网服务器)
  • frps : 服务端(一般放公网服务器)

补充:v0.61.0(可见与v0.39.1的文件区别较大)

Step3 配置环境变量

  • 新建系统变量: FRP_HOME = D:\Program\frpc\frp_0.39.1_windows_amd64\

  • 编辑系统环境变量Path,新增1项:%FRP_HOME%\

Step4 验证

C:\Users\xxx>frpc --version
0.39.1

C:\Users\xxx>frpc --help
frpc is the client of frp (https://github.com/fatedier/frp)

Usage:
  frpc [flags]
  frpc [command]

Available Commands:
  help        Help about any command
  http        Run frpc with a single http proxy
  https       Run frpc with a single https proxy
  reload      Hot-Reload frpc configuration
  status      Overview of all proxies status
  stcp        Run frpc with a single stcp proxy
  sudp        Run frpc with a single sudp proxy
  tcp         Run frpc with a single tcp proxy
  tcpmux      Run frpc with a single tcpmux proxy
  udp         Run frpc with a single udp proxy
  verify      Verify that the configures is valid
  xtcp        Run frpc with a single xtcp proxy

Flags:
  -c, --config string   config file of frpc (default "./frpc.ini")
  -h, --help            help for frpc
  -v, --version         version of frpc

Use "frpc [command] --help" for more information about a command.

Y 推荐文献

  • FRPC
  • Gradio

应用案例

案例:将内网Linux服务器上的web网站映射到公网上去

做具体的配置前,根据对应的操作系统及架构,从github 页面下载所需版本的程序。

  • frpsfrps.ini 放到具有公网 IP 的机器上。

请注意配置防火墙安全组放过配置文件使用的端口

  • frpcfrpc.ini 放到处于内网环境的机器上。

  • 公网windows上部署frps

Step1 上传frp安装包到**公网上的Windows服务器上

Step2 修改公网服务器的配置文件frps.ini文件

Step3 在公网服务器启动frps.exe程序

  • cmd:
frps.exe -c ./frps.ini

出现 frps started successfully 代表frps启动成功

Step4 在内网liunx上部署frpc

  • frpc上传到本地内网的liunx服务器上并解压此文件
$ cd frp_0.39.1_linux_386

$ ls
frpc frpc_full.ini frpc.ini frps frps_full_ini frps.ini LICENSE systemd

Step5 在内网服务器配置frpc.ini

这里需要有一个自己的公网域名

Step6 在内网服务器启动FRPC

./frpc -c ./frpc.ini

启动frpc,出现[web] start proxy success即可

Step7 在浏览器访问与验证

http://ccq.caichuanqi.cn:8000

在浏览器上访问成功

案例:通过 rdp 访问家里的机器

  • 详情参见:

案例:通过 SSH 访问公司内网机器

  • 详情参见:

案例:通过自定义域名访问部署于内网的 Web 服务

  • 详情参见:

案例:对外提供简单的文件访问服务

  • 详情参见:

FRP 常用功能

统计面板(Dashboard)

  • 通过浏览器查看 frp 的状态以及代理统计信息展示。

注:Dashboard 尚未针对大量的 proxy 数据展示做优化,如果出现 Dashboard 访问较慢的情况,请不要启用此功能。

需要在 frps.ini 中指定 dashboard 服务使用的端口,即可开启此功能:

  • 打开浏览器通过 http://[server_addr]:7500 访问 dashboard 界面,用户名密码默认为 admin 。

加密与压缩

  • 这两个功能默认是不开启的,需要在 frpc.ini 中通过配置来为指定的代理启用加密与压缩的功能,压缩算法使用 snappy:

  • 如果公司内网防火墙对外网访问进行了流量识别与屏蔽,例如禁止了 SSH 协议等,通过设置 use_encryption = true,将 frpc 与 frps 之间的通信内容加密传输,将会有效防止流量被拦截。

  • 如果传输的报文长度较长,通过设置 use_compression = true 对传输内容进行压缩,可以有效减小 frpc 与 frps 之间的网络流量,加快流量转发速度,但是会额外消耗一些 CPU 资源。

TLS

  • 从 v0.25.0 版本开始 frpc 和 frps 之间支持通过 TLS 协议加密传输。通过在 frpc.ini 的 common 中配置 tls_enable = true 来启用此功能,安全性更高。

  • 为了端口复用,frp 建立 TLS 连接的第一个字节为 0x17。

注意: 启用此功能后除 xtcp 外,不需要再设置 use_encryption

代理限速

  • 目前支持在客户端的代理配置中设置代理级别的限速,限制单个 proxy 可以占用的带宽。

  • 在代理配置中增加 bandwidth_limit 字段启用此功能,目前仅支持 MB 和 KB 单位。

范围端口映射

  • 在 frpc 的配置文件中可以指定映射多个端口,目前只支持 tcp 和 udp 的类型。

这一功能通过 range: 段落标记来实现,客户端会解析这个标记中的配置,将其拆分成多个 proxy,每一个 proxy 以数字为后缀命名。

例如要映射本地 6000-6005, 6007 这 6 个端口,主要配置如下:

实际连接成功后会创建 8 个 proxy,命名为 test_tcp_0, test_tcp_1 ... test_tcp_7。

X 参考文献

版本: frp_0.25.3_windows_amd64.exe
0.61.3的配置方式上,区别较大

版本: frp_0.33.0_linux_amd64.tar.gz
os : centos

标签:frps,--,FRPC,穿透,frp,ini,https,frpc,内网
From: https://www.cnblogs.com/johnnyzen/p/18651498

相关文章

  • 【内网】服务器配置不出网后还存在的威胁
    服务器不允许出网后还有啥威胁内部人员直接拖库内应直接拖库前端xss控制客服浏览器,直接偷用户数据dns隧道内应联合黑客,留出通道,使黑客可以渗入内网;开发人员主动写个漏洞上去,然后就配合黑客做远控,从而渗入到机房ping隧道机房物理安全/人为安全里应外合是重点防御的,内部人......
  • Unity穿透射线法:解决鼠标射线检测被碰撞器遮挡的问题
    在Unity中,如果鼠标射线检测被碰撞器遮挡,可以手动发射穿透射线,获取所有碰撞器,然后根据Tag筛选目标对象。privatevoidUpdate(){FollowCursor();if(Input.GetMouseButtonDown(0))//鼠标左键点击{//将鼠标位置转换为世界坐标Vector2mouseP......
  • 【LLM大模型】2025年最新字节内网流传的大模型面试真题揭秘!
    随着人工智能技术的迅猛发展,计算机视觉(CV)、自然语言处理(NLP)、搜索、推荐、广告推送和风险控制等领域的岗位越来越受欢迎,而_对于大型模型技术的掌握成为了这些岗位的标配_。但目前公开的大模型资源还是很少很少,面试真题就更不用多说了。为了让大家能够应对大模型面试,整理了......
  • 内网渗透:网络认证机制
    文章目录一、网络认证概述什么是网络认证?常见的网络认证方式二、NTLM协议挑战响应认证机制基本流程成功认证流程三、NTLM抓包分析实验环境实验步骤抓包分析要点四、Challenge和Response分析Challenge和Response的作用Response的生成过程五、NTLMv1和NTLMv......
  • DAY180内网渗透之内网对抗:横向移动篇&WinRS命令&WinRM管理&RDP终端&密码喷射点&CrackM
    1.内网横向移动1、横向移动篇-协议服务-WinRS&WinRM&RDP2、横向移动篇-工具项目-密码喷射1.1内网横向移动方法分类基于口分ipcsmbwmidcomwinrswinrmrdp等基于漏洞域控提取漏洞Exchange漏洞攻防基于配置委派dysncasrepkerberos攻击ntlmreply1.2WinRM&W......
  • DAY179内网渗透之内网对抗:横向移动篇&入口切换&SMB共享&WMI管道&DCOM组件&Impacket套
    1.内网横向移动1、横向移动篇-协议服务-SMB2、横向移动篇-协议服务-命令模式、3、横向移动篇-协议服务-安全防御1.1WMI进行横向移动windows2012以上默认关闭了Wdigest,所以攻击者无法通过内存获取到明文密码为了针对以上情况所以有四种方法解决:1.利用(PTH,PTK)等进行......
  • 云服务器内网无法相互访问
    您好,关于您提到的云服务器内网无法相互访问的问题,我们已经进行了详细的排查和分析。根据您的描述,服务器在升级后出现了内网端口无法相互访问的情况,特别是127.0.0.1之间的通信出现问题,导致部分数据包丢失或无法正常连接特定端口(如2187)。此外,您还提到使用curl命令测试内网访问时遇到......
  • 【安全工具】Cobalt Strike使用教程:内网渗透之信息收集篇
    一、前言二、内网信息收集篇2.1判断是否存在域2.2域内存活主机探测2.3域内基础信息收集2.4域内控制器的查找2.5定位域管理员工具2.5.1通过psloggedon.exe2.5.2通过PVEFindADUser.exe2.5.3通过PowerSploit的PowerVi......
  • 9.5-10.9内网横向&代理&隧道
    Socks代理思路:工具:nps、frp、ngrok、reGeorg、sockscap64、earthworm、proxifier、proxychains知识点1、内外网简单知识2、内网1和内网2通信问题3、正向反向协议通信连接问题4、内网穿透代理隧道技术说明代理解决通信问题,隧道解决流量分析、流量监控工具、防火墙等告警内......
  • redis缓存穿透和 缓存雪崩
    在使用Redis作为缓存系统时,缓存穿透(CachePenetration)和缓存雪崩(CacheAvalanche)是两种常见的问题。它们会影响缓存系统的性能和稳定性。以下是这两种问题的详细解释及其解决方法。缓存穿透(CachePenetration)缓存穿透是指查询一个在缓存和数据库中都不存在的数据,导致请求直接......