内网穿透工具(二)-- FRP 简介(开源)

一、FRP 简介

FRP(Fast Reverse Proxy)是一款开源的内网穿透工具,它可以帮助用户将内网服务暴露到公网上。以下是FRP的GitHub地址和一些基本信息介绍:

FRP GitHub地址

  • FRP的GitHub仓库地址是:https://github.com/fatedier/frp

  • FRP 安装包下载地址:https://github.com/fatedier/frp/releases
    在这里插入图片描述

  • 架构分类:

    • amd64 :一般指X86-64处理器,intel及amd产品基本上均为该架构
    • 386:早起X86架构,目前基本上看不到了
    • arm及arm64:均为使用arm指令集的CPU
    • mips及mips64:均为RISC处理器
  • 系统分类:

    • drawin:为mac使用的包
    • freebsd:为一种类unix系统,freebsd系统专用
    • linux:linux系统均可使用该包
    • windows:windows系统使用的包

FRP功能特点

  • 多协议支持:FRP支持TCP、UDP、HTTP、HTTPS等多种协议,满足不同应用场景的需求。
  • P2P通信:FRP支持P2P模式,提高特殊环境下连接的灵活性。
  • TLS加密:FRP提供TLS加密功能,确保数据传输的安全性。
  • 动态DNS:FRP支持动态DNS,便于动态IP环境中的稳定访问。
  • Web界面:FRP提供Web界面,简化管理和监控。
  • 反向代理:FRP作为反向代理,使得内部服务可以通过外部服务器被访问。

架构与工作原理

frp 主要由两个组件组成:客户端(frpc) 和 服务端(frps)。通常情况下,服务端部署在具有公网 IP 地址的机器上,而客户端部署在需要穿透的内网服务所在的机器上。

由于内网服务缺乏公网 IP 地址,因此无法直接被非局域网内的用户访问。用户通过访问服务端的 frps,frp 负责根据请求的端口或其他信息将请求路由到相应的内网机器,从而实现通信。
在这里插入图片描述

二、FRP Windows 版本安装部署

1. 下载相应的安装包资源

  • Windows 版本下载:https://github.com/fatedier/frp/releases/download/v0.61.0/frp_0.61.0_windows_amd64.zip
    在这里插入图片描述

2. 服务端配置

    1. 直接解压安装包;
    1. 修改 frps.toml 文件
# 服务端与客户端通信端口
bindPort = 7000

# 服务端将只接受 TLS 链接
transport.tls.force = true

# 身份验证令牌,frpc 要与 frps 一致
auth.token = "public"

# 后台管理地址
webServer.addr = "0.0.0.0"

# 后台管理端口
webServer.port = 7500

# 后台登录用户名
webServer.user = "admin"

# 后台登录密码
webServer.password = "admin"
    1. 打开命令行(管理员模式)或 PowerShell,在命令行中运行`frps.exe(服务端),并指定配置文件,启动FRP服务。
.\frps.exe -c .\frps.toml

在这里插入图片描述

  • 访问 控制台 http://localhost:7500/
    在这里插入图片描述

3. 客户端配置

  • 客户端文件同服务端;
    在这里插入图片描述

  • 修改客户端配置文件 frpc.toml;

#服务端公网ip
serverAddr = "202.100.100.22"
# frps与frpc客户端通信的端口
serverPort = 7000
#此处和服务端统一
auth.token = "public" 
[[proxies]]
#此处名称可自定义
name = "test-tcp"
#此处为协议,还有tcp、udp、http、https、stcp
type = "tcp"
localIP = "127.0.0.1"
#此处为本地开放的SSH端口
localPort = 22
#此处为公网地址转换的端口,此端口可任意调换
remotePort = 6000
  • 启动客户端
.\frpc.exe -c .\frpc.toml

在这里插入图片描述

  • 访问服务端控制台,可以看到客户端信息
    在这里插入图片描述
  • 测试服务内网穿透
    找一台可以上网的windows机器,使用telnet命令
telnet 202.100.100.22 6000

如果可以连通,那就说明可以穿透通过。

三、FRP 实战部署访问 WEB 应用

  1. 修改服务端 frps.toml 文件,增加 HTTP 虚拟主机的端口 vhostHTTPPort 配置
# 服务端与客户端通信端口
bindPort = 7000
# 服务端将只接受 TLS 链接
#transport.tls.force = true
# 身份验证令牌,frpc 要与 frps 一致
auth.token = "public"
# 后台管理地址
webServer.addr = "0.0.0.0"
# 后台管理端口
webServer.port = 7500
# 后台登录用户名
webServer.user = "admin"
# 后台登录密码
webServer.password = "admin"
# 配置域名
#subdomainHost = "dazhong.online" 
# 用于HTTP虚拟主机的端口
vhostHTTPPort = 8088      

  1. 修改客户端文件 frpc.toml ,增加 http 服务配置参数
serverAddr = "139.155.142.114"
serverPort = 7000
auth.method = "token"
auth.token = "public" 
[[proxies]]
name = "test-tcp"
type = "tcp"
localIP = "127.0.0.1"
localPort = 22
remotePort = 6000

# http 服务配置参数
[[proxies]]
name = "web-8080"
type = "http"
localPort = 8080 #本地服务端口
customDomains = ["202.100.100.22"] # 域名配置,如果没有域名则使用服务端IP

  1. 访问本地服务:http://+服务器IP+端口
    http://202.100.100.22:8088

  2. 配置域名访问
    通过添加域名解析记录,将公网IP和域名进行绑定

  • 此处以阿里云域名为例,添加解析记录
    在这里插入图片描述

  • 方式一:通过客户端文件 frpc.toml 添加 customDomains 参数添加完整域名

# 主域名为 mydomain.com
customDomains = ["test8080.mydomain.com"]

访问 http://test8080.mydomain.com:8088/

  • 方式二:通过服务端和客户端文件都配置subdomainHost 子域名:

服务端文件 frps.toml 新增主域名

subdomainHost = "dazhong.online" 

客户端文件 frpc.toml 新增子域名 test8080

subdomainHost = "test8080" 

访问 http://test8080.mydomain.com:8088/

注意 subdomainHost 和 customDomains 参数不可以同时使用:

  • subdomain_host(服务端配置)
    subdomain_host 是在frp服务端(frps)配置文件中使用的参数。它指定了一个域名,该域名下的所有子域名都将用于frp的虚拟主机(vhost)HTTP代理。这意味着,当你在客户端(frpc)配置了subdomain参数时,客户端的HTTP服务将被映射到这个subdomain_host指定的域名下的子域名。
  • custom_domains(客户端配置)
    custom_domains 是在frp客户端(frpc)配置文件中使用的参数。它允许你指定一个或多个自定义域名,这些域名将被用于客户端的HTTP或HTTPS服务。这个参数通常用于静态域名的场景,而不是动态子域名。

参数文档:

  • 1.frp内网穿透之(反向代理nginx)
    https://zhuanlan.zhihu.com/p/9565100806
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值