Pipy 实现 SOCKS 代理
上篇我们介绍了服务网格 osm-edge 出口网关使用的 HTTP 隧道,其处理方式与另一种代理有点类似,就是今天要介绍的 SOCKS 代理。二者的主要差别简单来说就是前者使用 HTTP CONNECT
告知代理目的地址,而后者则是通过 SOCKS 协议。值得一提的是,SOCKS 也是出口网关的可选协议之一。
SOCKS 是一种网络传输协议,是 Socket Secure 的缩写,主要用于客户端与外网服务器之间通讯的中间传递。根据 OSI 模型,SOCKS 是会话层的协议,位于表示层与传输层之间。
SOCKS 协议的最新版本是 SOCKS5,在 SOCKS4 的基础上增加了 UDP、认证 和 IPv6 的支持。因此,后面提到的 SOCKS 都是使用最广泛的 SOCKS5。
先看一下 SOCKS 代理的工作流程。
1. 协商阶段:客户端与代理建立连接,并进行协商,包括协议版本、认证的方式等等。
2. 连接阶段:客户端告知代理要连接的目的地址和端口(SOCKS 报文),代理使用报文中的地址和端口与服务端创建连接,并将结果作为状态返回给客户端。
3. 数据传输阶段:客户端向代理发送数据,代理将数据发送到服务端;然后将服务端返回的数据返回给客户端。
Demo
还是使用上篇中的例子,在防火墙后有个 TCP 服务端,由于监听在 127.0.0.1:8081
还能在本地访问。同样,使用 Pipy 来模拟这个服务。
pipy().listen('127.0.0.1:8081').replaceData(() => new Data('Hi, TCP!\n'))
接下来,在服务端一侧建立一个 SOCKS 代理。
PipyJS 编码
我们的代理监听在 8000
端口,使用 acceptSOCKS
过滤器[1] 来处理 SOCKS 协议报文,从报文中获取目的地址和端口,然后使用该地址和端口创建到服务端的连接。
pipy({_host: null,_port: null,
})//socks.listen(8000).acceptSOCKS((host, port) => (_host = host,_port = port,true // return true to accept the session)).to($ => $.connect(() => `${_host}:${_port}`))
测试
在主机 192.168.1.110
上运行我们的代理以及服务端,客户端 curl
运行在主机 192.168.1.11
上。使用下面的命令进行测试:
curl -x socks5://192.168.1.110:8000 telnet://127.0.0.1:8081
引用链接
[1]
acceptSOCKS
过滤器: https://flomesh.io/pipy/docs/zh/reference/api/Configuration/acceptSOCKS
Pipy 实现 SOCKS 代理相关推荐
- SOCKS代理工具EarthWorm、sSoks
SOCKS代理 常见的网络场景: 服务器在内网中,可以任意访问外部网络 服务器在内网中,可以访问外部用网络,但服务器安装了防火墙来拒绝敏感端口的连接 服务器在内网中,只对外开放了部分端口(例如80端口 ...
- autossh配置socks代理
原理很简单就是用ssh -D建立socks代理,然后把浏览器配置成socks代理就是了.用路由器来做ssh -D的好处是不用在每个设备上(我有一个iphone,两个ipad,一个android手机,n ...
- rust 局域网联机_分享自己用 Rust 写的可以直接利用 SOCKS 代理的游戏加速器
之前分享了一款自己用 Go 写的游戏加速器 IkaGo,但是我也在文章中多次提到,加速器最重要的是线路而不是技术.为了能更好的利用好手上的一些优质的众所周知的 SOCKS 代理,我又开发了一款加速器( ...
- 使用代理_工具的使用|MSF搭建socks代理
目录 搭建代理 添加路由 搭建Socks4a代理 搭建Socks5代理 连接代理 注:通过MSF起的socks代理,经常性的不监听端口,也就导致代理失败.试过好多次都是这样,应该是MSF的一个bug. ...
- Android Studio 使用socks代理
Android Studio 使用socks代理 准备工作 1. 从https://www.privoxy.org/下载Privoxy软件 2. 安装Privoxy 3. 在Privoxy安装目录找到 ...
- 代理是什么?(HTTP代理,SOCKS代理)
本来打算通过UDP53来绕过认证,在准备实现DNS隧道的时候,发现所涉及的内容实在是太多了-(DNS解析原理,域名的原理,隧道技术,代理技术 and so on),每一个知识点都能让我深入去研究一段时 ...
- Socks代理是什么意思?有什么用?
什么是Socks代理 Socks代理:中文名全能代理,就像有很多跳线的转接板,它只是简单地将一端的系统连接到另外一端.支持多种协议,包括http.ftp请求及其它类型的请求.它分socks 4 和so ...
- Socks代理是什么?PC端怎么使用Socks5代理?
之前给大家介绍过代理IP是什么以及它的作用.代理服务器英文全称是Proxy Server,其功能就是代理网络用户去取得网络信息,形象的说:它是网络信息的中转站.最常用的代理莫过于HTTP代理与Sock ...
- 内网渗透建立代理通道(如何攻击目标内网机器?)-Socks代理(゚益゚メ) 渗透测试
文章目录 搭建靶场 配置虚拟机网络 虚拟机 上线目标1(Target1) Socks代理 简介 正向代理 反向代理 FRP 一层代理 二层代理(多层代理) EW 正向代理 反向代理 二层代理流量转发 ...
最新文章
- 基于Go语言来理解Tensorflow
- vrml场景实例代码_高并发的中断下半部tasklet实例解析
- carsim学习笔记3——仿真环境(驾驶员道路环境)
- WCF 之 消息契约(MessageContract)
- linux循环控制结构,Linux Shell 之 Shell 基本控制结构(二)(循环结构)
- poj 1872 A Dicey Problem (bfs+WordFinal题)
- 机械表小案例之transform的应用
- VMware安装esxi6.7
- 《人类简史》笔记——认知革命和农业革命背后的思考
- python处理图片去白底-Python实现将蓝底照片转化为白底照片功能完整实例
- 插件用法--视频播放video.js
- matlab简易画爱心
- pigx框架费用_【开源项目】一篇文章搞掂:Pig微服务框架
- error: C2338: Type is not registered, please use the Q_DECLARE_METATYPE macro to make it known to Qt
- 汽车厂商 API数据接口
- 企业物流营销组合模式探讨 (zt)
- C#计算两个日期间隔年数、月数、天数
- OpenHarmony OpenSl ES音频录制
- CSS text-align:justify作用
- Origin作图流程