首页 > 其他分享 >【原创】【亲测有效】如何实现内网穿透 反向代理工具实操 超级实用 遗憾没早学会

【原创】【亲测有效】如何实现内网穿透 反向代理工具实操 超级实用 遗憾没早学会

时间:2025-01-16 20:28:42浏览次数:3  
标签:没早 frp server FRP 实操 公网 local port 亲测

在这里插入图片描述

高价值使用场景

FRP(Fast Reverse Proxy)是一个功能强大的工具,适用于多种网络场景。以下是几个常见、鲜明且有价值的使用案例:

  1. 远程访问内部服务器

    • 场景:远程工作者需要访问公司内部的数据库或Web服务。
    • 解决方案:通过FRP,远程用户可以穿透公司防火墙,访问内部服务,如同在公司内部网络一样。
  2. 开发和测试Web应用

    • 场景:开发者在本地开发Web应用,并希望向不在同一网络的同事展示。
    • 解决方案:使用FRP将本地服务器暴露到互联网,方便同事访问,无需复杂的路由器配置。
  3. 远程监控和管理设备

    • 场景:需要监控和管理位于远程办公室或地区的IoT设备或服务器。
    • 解决方案:FRP建立安全通道,允许从主办公室远程管理这些设备,而无需开放多个防火墙端口。
  4. 云环境中的服务暴露

    • 场景:在云环境中,有运行在私有实例上的服务需要对外提供服务。
    • 解决方案:FRP作为反向代理,安全地将流量路由到私有实例,避免直接暴露实例,降低安全风险。
  5. ** bypass互联网限制或地域封锁**:

    • 场景:某些地区限制访问特定网站或服务。
    • 解决方案:通过FRP路由流量到位于不受限制地区的服务器,实现访问。
  6. 负载均衡

    • 场景:需要将流量分发到多个内部服务器以提高服务可用性。
    • 解决方案:配置多个FRP客户端,实现流量的负载均衡。
  7. 微服务架构中的服务暴露

    • 场景:在微服务架构中,各服务运行在不同的内部网络,需要对外提供服务。
    • 解决方案:FRP简化服务暴露过程,无需每个服务单独配置,便于管理和部署。

这些场景展示了FRP在提升网络灵活性、安全性和管理效率方面的价值。

实际案例的详细讲解

1.1 FRP基本原理及特点

FRP(Fast Reverse Proxy)是一款轻量级、高性能的反向代理工具,主要用于内网穿透、安全访问和数据传输等场景。FRP由fatedier团队开发,使用Golang语言编写,支持跨平台部署和使用。其工作原理是通过反向代理技术将来自公网的请求转发至内网服务器,并将内网服务器的响应再次转发给公网请求者。在实现内网穿透时,FRP能够打破公网与内网之间的隔离,使公网用户能够直接访问内网服务器上的资源,从而实现远程访问和管理。

FRP的主要特点包括:

  • 内网穿透:支持内网穿透功能,能够实现公网服务访问内网服务器。
  • 通用性:支持多种协议和服务类型,如HTTP、TCP、UDP等,适用于各种不同场景。
  • 安全性:支持数据加密、身份验证和IP白名单等安全机制,确保数据和用户信息的安全。
  • 高性能:采用Go语言编写,具有高性能和高并发处理能力,能够满足大规模并发请求的需求。
  • 易用性:配置简单,文件结构清晰明了,支持多平台部署和使用。

FRP适用于多种场景,如远程访问、内网穿透、云计算和安全访问等。FRP采用开源方式,代码托管在GitHub上(https://github.com/fatedier/frp),拥有活跃的社区和丰富的生态系统,能够满足开发者和企业的不同需求。需要特别注意的是,在使用FRP实现内网穿透时,应避免将敏感或不安全的端口开放至公网,以确保数据和信息安全。

1.2 案例目标

本文介绍了如何使用FRP实现内网穿透,以便外部用户能够访问内网服务器。通过这种方法,可以方便地进行远程访问和管理,提高工作效率和灵活性。需要注意的是,FRP内网穿透可以有效解决网络访问限制和难题,但必须确保安全,避免在公网上开放敏感或不安全的端口。
在这里插入图片描述

1.3 案例分析

1.3.1 规划节点
IP主机名节点类型
49.232.149.81frp-server服务端节点,公网固定ip,网络流量中转用
192.168.100.10frp-client客户端节点,内网ip不固定,没有固定公网ip
1.3.2 基础准备
  • 服务端:一台云服务器(也可以是具有公网IP的实体机)。
  • 客户端:需要远程访问的内网服务器。

通过远程下载:

wget https://github.91chi.fun//https://github.com//fatedier/frp/releases/download/v0.47.0/frp_0.47.0_linux_amd64.tar.gz

通过GitHub的releases本地下载:

https://github.com/fatedier/frp/releases

1.4 案例实施

1.4.1 FRP服务端配置

服务器可以是云服务提供商提供的最便宜的云服务器,但必须具有公网IP。
首先,在FRP服务端上传frp软件包:

[root@frp-server ~]# wget https://github.91chi.fun//https://github.com//fatedier/frp/releases/download/v0.47.0/frp_0.47.0_linux_amd64.tar.gz

解压frp软件包:

[root@frp-server ~]# tar -xzvf frp_0.47.0_linux_amd64.tar.gz

得到以下文件结构:

[root@frp-server frp_0.47.0_linux_amd64]# ll
total 27892
-rwxr-xr-x 1 1001 123 12668928 Feb 10 01:18 frpc
-rw-r--r-- 1 1001 123    11345 Feb 10 01:23 frpc_full.ini
-rw-r--r-- 1 1001 123      126 Feb 10 01:23 frpc.ini
-rwxr-xr-x 1 1001 123 15851520 Feb 10 01:18 frps
-rw-r--r-- 1 1001 123     5907 Feb 10 01:23 frps_full.ini
-rw-r--r-- 1 1001 123       26 Feb 10 01:23 frps.ini
-rw-r--r-- 1 1001 123    11358 Feb 10 01:23 LICENSE

其中,以frpc开头的文件是客户端的核心文件,以frps开头的文件是服务器端的核心文件。

修改frps.ini文件(核心步骤):

[root@frp-server frp_0.47.0_linux_amd64]# vim frps.ini
[common]
bind_port = 7000  # 服务端绑定的端口,需要在防火墙中开放
bind_udp_port = 5999
dashboard_port = 6001  # 仪表盘访问的端口,需要在防火墙中开放
dashboard_user = admin  # 仪表盘用户名
dashboard_pwd = admin  # 仪表盘密码

# 可选配置
vhost_http_port = 80  # http 服务映射端口,需要在防火墙中开放
vhost_https_port = 443  # https 服务映射端口,需要在防火墙中开放
token = your_token  # 协商令牌,客户端和服务器需要一致,建议配置该项并设置32位以上高强度复杂密码
log_file = ./frps.log  # 日志文件位置
log_level = info  # 日志级别,可选:debug, info, warn, error
log_max_days = 3  # 日志保存天数
heartbeat_timeout = 15  # 心跳超时配置
max_pool_count = 50  # 连接池的数量
max_ports_per_client = 0  # 每个客户端最大可以使用的端口,0表示无限制
authentication_timeout = 0  # 时间校验超时,0表示不校验
tcp_mux = true  # 是否使用TCP复用

更多参数请参考FRP官方文档(https://gofrp.org/docs/reference/server-configures)。

开启服务并后台自启动:

[root@frp-server frp_0.47.0_linux_amd64]# nohup ./frps -c frps.ini &

访问页面进行测试:
完成上述配置后,打开浏览器,输入IP:6001,查看FRP的工作状态,说明服务器端FRP服务已成功开启。

1.4.2 FRP-Linux客户端配置

客户端也需要下载并解压FRP安装包:

[root@frp-client ~]# tar -xzvf frp_0.47.0_linux_amd64.tar.gz

修改frpc.ini文件(核心步骤):

[root@frp-client frp_0.47.0_linux_amd64]# vim frpc.ini
[common]
server_addr = 49.232.149.81  # 公网服务器的公网IP
server_port = 7000  # 与服务器端配置一致的端口

[ssh]  # 服务名称自定义
type = tcp
local_ip = 127.0.0.1
local_port = 22  # 映射到本地的端口
remote_port = 6002  # 远程连接的端口

[http]  # 可选,用于网站服务穿透
type = http
local_ip = 127.0.0.1
local_port = 80  # 本地HTTP服务端口
custom_domains = yourdomain.com  # 域名解析到该公网IP

更多参数请参考FRP官方文档(https://gofrp.org/docs/reference/client-configures)。

开启服务并后台自启动:

[root@frp-client frp_0.47.0_linux_amd64]# nohup ./frpc -c frpc.ini &

访问FRP查看是否配置成功。

1.4.3 FRP-Windows客户端配置

下载并解压FRP安装包:
修改frpc.ini文件(核心步骤):
使用记事本打开frpc.ini文件:

[common]
server_addr = 49.232.149.81  # 公网服务器的公网IP
server_port = 7000  # 与服务器端配置一致的端口

[ssh]  # 服务名称自定义
type = tcp
local_ip = 127.0.0.1
local_port = 22  # 映射到本地的端口
remote_port = 6003  # 远程连接的端口

打开终端进入文件所在目录并开启服务:

./frpc -c frpc.ini
1.4.4 远程访问方式
  • Linux远程连接

    ssh user_name@49.232.149.81 -p 6002
    

    示例:

    [root@frp-server ~]# ssh root@49.232.149.81 -p 6002
    root@49.232.149.81's password:
    Last login: Tue Feb 28 09:49:28 2023 from 127.0.0.1
    [root@frp-client ~]#
    
  • Windows远程连接
    进入远程桌面连接界面,输入公网IP:端口(例如49.232.149.81:6003)进行连接。

其他场景服务器端和客户端配置案例

FRP(Fast Reverse Proxy)在多种场景中具有广泛的应用价值,以下是一些鲜明、有用且常见的应用场景示例:

1. 远程桌面访问

场景描述

企业或个人有一台位于内网的计算机,希望在外出时能够通过远程桌面协议(如RDP、VNC等)访问这台计算机进行工作或管理。

如何使用FRP
  • 服务端配置

    [common]
    bind_port = 7000
    dashboard_port = 6001
    dashboard_user = admin
    dashboard_pwd = admin
    
  • 客户端配置

    [common]
    server_addr = 49.232.149.81
    server_port = 7000
    
    [rdp]
    type = tcp
    local_ip = 127.0.0.1
    local_port = 3389
    remote_port = 6000
    
使用效果

通过FRP配置,外部用户可以使用远程桌面连接工具(如Windows的远程桌面连接)通过公网IP:6000访问内网计算机的3389端口,实现远程桌面控制。

2. 网站和应用服务的内网穿透

场景描述

开发者或企业有一个位于内网的网站或应用服务,希望在没有公网IP的情况下,让外部用户可以直接访问这些服务。

如何使用FRP
  • 服务端配置

    [common]
    bind_port = 7000
    vhost_http_port = 80
    vhost_https_port = 443
    dashboard_port = 6001
    dashboard_user = admin
    dashboard_pwd = admin
    
  • 客户端配置

    [common]
    server_addr = 49.232.149.81
    server_port = 7000
    
    [web]
    type = http
    local_ip = 127.0.0.1
    local_port = 8080
    custom_domains = yourdomain.com
    
使用效果

外部用户通过访问http://yourdomain.comhttps://yourdomain.com可以访问内网服务器上运行的网站或应用服务,而无需内网服务器有公网IP。

3. 数据库远程访问

场景描述

开发团队需要访问位于内网的数据库服务器(如MySQL、PostgreSQL等),但内网服务器没有公网IP,只能通过内网访问。

如何使用FRP
  • 服务端配置

    [common]
    bind_port = 7000
    dashboard_port = 6001
    dashboard_user = admin
    dashboard_pwd = admin
    
  • 客户端配置

    [common]
    server_addr = 49.232.149.81
    server_port = 7000
    
    [mysql]
    type = tcp
    local_ip = 127.0.0.1
    local_port = 3306
    remote_port = 6001
    
使用效果

通过FRP配置,开发团队可以使用数据库管理工具(如MySQL Workbench、pgAdmin等)通过公网IP:6001访问内网数据库服务器的3306端口,实现远程数据库管理。

4. 文件传输和共享

场景描述

企业内部需要对外提供文件传输和共享服务,但内网服务器没有公网IP。

如何使用FRP
  • 服务端配置

    [common]
    bind_port = 7000
    dashboard_port = 6001
    dashboard_user = admin
    dashboard_pwd = admin
    
  • 客户端配置

    [common]
    server_addr = 49.232.149.81
    server_port = 7000
    
    [fileserver]
    type = tcp
    local_ip = 127.0.0.1
    local_port = 21
    remote_port = 6002
    
使用效果

外部用户可以通过FTP客户端连接公网IP:6002,实现文件的上传和下载,而内网服务器的FTP服务位于21端口。

5. 跨地域的内网服务访问

场景描述

企业在一个地理位置有多个分支机构,每个分支机构有独立的内网环境,需要集中管理各分支机构的内网服务。

如何使用FRP
  • 服务端配置(可以设置多个客户端连接):

    [common]
    bind_port = 7000
    dashboard_port = 6001
    dashboard_user = admin
    dashboard_pwd = admin
    
  • 客户端A配置(分支机构A):

    [common]
    server_addr = 49.232.149.81
    server_port = 7000
    
    [service-a]
    type = tcp
    local_ip = 127.0.0.1
    local_port = 8080
    remote_port = 6003
    
  • 客户端B配置(分支机构B):

    [common]
    server_addr = 49.232.149.81
    server_port = 7000
    
    [service-b]
    type = tcp
    local_ip = 127.0.0.1
    local_port = 8080
    remote_port = 6004
    
使用效果

总部的管理团队可以通过公网IP:6003访问分支机构A的内网服务,通过公网IP:6004访问分支机构B的内网服务,实现跨地域的集中管理。

6. 安全监控和日志访问

场景描述

企业需要远程访问位于内网的安全监控系统(如摄像头、日志服务器等),但内网服务器没有公网IP。

如何使用FRP
  • 服务端配置

    [common]
    bind_port = 7000
    dashboard_port = 6001
    dashboard_user = admin
    dashboard_pwd = admin
    
  • 客户端配置

    [common]
    server_addr = 49.232.149.81
    server_port = 7000
    
    [camera]
    type = tcp
    local_ip = 127.0.0.1
    local_port = 8000
    remote_port = 6005
    
    [logserver]
    type = tcp
    local_ip = 127.0.0.1
    local_port = 514
    remote_port = 6006
    
使用效果

外部用户可以通过公网IP:6005访问内网摄像头的监控画面,通过公网IP:6006访问内网日志服务器的端口,实现远程监控和日志管理。

7. 云游戏和远程桌面游戏

场景描述

个人或企业希望在云服务器上运行游戏,然后通过内网穿透技术让外部用户能够远程访问并玩这些游戏。

如何使用FRP
  • 服务端配置

    [common]
    bind_port = 7000
    bind_udp_port = 7001
    dashboard_port = 6001
    dashboard_user = admin
    dashboard_pwd = admin
    
  • 客户端配置

    [common]
    server_addr = 49.232.149.81
    server_port = 7000
    
    [game]
    type = tcp
    local_ip = 127.0.0.1
    local_port = 3000
    remote_port = 6007
    
    [game-udp]
    type = udp
    local_ip = 127.0.0.1
    local_port = 3001
    remote_port = 6008
    
使用效果

外部用户可以通过公网IP:6007公网IP:6008访问内网游戏服务器的TCP和UDP端口,实现远程游戏体验。

这些场景展示了FRP在实际应用中的多样性和灵活性,能够帮助企业或个人在没有公网IP的情况下,实现多种远程访问和管理功能。

标签:没早,frp,server,FRP,实操,公网,local,port,亲测
From: https://blog.csdn.net/jrckkyy/article/details/145153614

相关文章

  • vulfocus靶场实操tomcat-pass-getshell弱口令漏洞
    vulfocus靶场实操之tomcat-pass-getshell弱口令漏洞提前声明:本节所有操作都是在vulfocus靶场中进行操作,严禁在无授权的情况下进行任何的渗透操作。前言:本节主要对vulfocus靶场中tomcat中间件进行模拟攻击,通过该中间件存在的漏洞进入到后台拿到flag,完成该靶场要求。工具:BurpSu......
  • 【网络云SRE运维开发】2025第3周-每日【2025/01/15】小测-【第14章ospf高级配置】理论
    文章目录【网络云SRE运维开发】2025第3周-每日【2025/01/15】小测-【第14章ospf高级配置】理论和实操14.1选择题在H3C设备上配置OSPF时,以下哪个命令用于启动OSPF进程?A.[H3C]ospfenableB.[H3C]ospf1C.[H3C]ospfstartD.[H3C]ospfprocessOSPF区域0......
  • 【网络云SRE运维开发】2025第3周-每日【2025/01/15】小测-【第14章ospf高级配置】理论
    文章目录14.1选择题解题思路和参考答案14.2理论题解题思路和参考答案14.3实操题解题思路和参考答案思科(Cisco)设备华为(Huawei)设备小米/锐捷(或其他支持标准CLI命令的设备)通过网络管理工具注意事项【网络云SRE运维开发】2025第3周-每日【2025/01/15】小测-【第14章o......
  • 【ROS2】实操Movei2!路径规划
     本篇文章需要将前面几个关于moveit的内容手敲以便,熟悉基本流程再来实操! 一、规避障碍物1.1AddincludeforPlanningSceneInterface添加引用头文件:#include<moveit/planning_scene_interface/planning_scene_interface.h>1.2ChangetheTargetPose重新设定目标......
  • 网络安全必备 | Metasploit工具实操全攻略
    免责声明:该文章所涉及到的安全工具和技术仅做分享和技术交流学习使用,使用时应当遵守国家法律,做一位合格的白帽专家。使用本工具的用户需要自行承担任何风险和不确定因素,如有人利用工具做任何后果均由使用者承担,本人及文章作者还有泷羽sec团队不承担任何责任B站红队公益课......
  • 【亲测能用】二维卡通动画制作软件:Smith Micro Moho Pro v14.3 专业版
    SmithMicroMohov14.3是一款专为动画师、设计师和数字艺术家设计的强大而易用的2D动画软件。它在人物绘制、动画制作和特效处理方面提供了全面的支持,是动画创作的理想选择。Mohov14.3引入了先进的智能骨骼系统,让动画师能够轻松控制角色的关节弯曲和变形,实现复杂而自然的运动和......
  • eNSP:DHCP及实操练习
     前面三篇博客我们一直在不断扩展拓扑,DHCP我们还是使用之前的拓扑来方便大家理解:(前三篇博客分别为:eNSP基础命令、DNS、Telnet,感兴趣的可以点击查阅,欢迎提出意见)在开始进行配置之前,我们先学习DHCP的基础理论知识: DHCP(动态主机配置协议) 基于UDP6768端口,是一种网络管理......
  • 大模型应用场景落地:实操项目全解析
    你是否学习了大模型技术,但是不知道如何落地?今天带来5个大模型落地项目,保证你看完一定有所收获!前排提示,文末有大模型AGI-CSDN独家资料包哦!大模型应用#1:从Chatbot到AIAgent,个人助理重塑手机应用生态AI大模型的能力进步推动Chatbot在C端广泛“出圈”。Chatbot(聊天机器人)通......
  • BurpSuite之SQL 注入测试实操
    1、安装:CO2插件进入【BurpSuite】---【拓展】---【BApp商店】,安装完成后,[已安装]列会有:√ 拦截后发送到【重放器】: 重发器中【请求】中操作:【拓展】---【CO2】---【发送到SQLMapper】 2、SQL注入(1)操作登录 (2)进行拦截,发送给【重放器】: (3)修改name的请求语句......
  • BurpSuite实操之对比器功能使用
    通常是通过一些相关的请求和响应得到两项数据的一个可视化“差异“,此功能主要用于执人行任意两个请求,响应或任何其他形式的数据之间的比较。使用的场合有:枚举用户名的过程,对比分析登录和失败时,服务器端返回结果的区别使用Intruder进行攻击时,对于不同的服务器端响应,可以很快......