上篇我们介绍了服务网格 osm-edge 出口网关使用的 HTTP 隧道,其处理方式与另一种代理有点类似,就是今天要介绍的 SOCKS 代理。二者的主要差别简单来说就是前者使用 HTTP CONNECT 告知代理目的地址,而后者则是通过 SOCKS 协议。值得一提的是,SOCKS 也是出口网关的可选协议之一。

SOCKS 是一种网络传输协议,是 Socket Secure 的缩写,主要用于客户端与外网服务器之间通讯的中间传递。根据 OSI 模型,SOCKS 是会话层的协议,位于表示层与传输层之间。

SOCKS 协议的最新版本是 SOCKS5,在 SOCKS4 的基础上增加了 UDP、认证 和 IPv6 的支持。因此,后面提到的 SOCKS 都是使用最广泛的 SOCKS5。

先看一下 SOCKS 代理的工作流程。

socks-proxy-process
  1. 1. 协商阶段:客户端与代理建立连接,并进行协商,包括协议版本、认证的方式等等。

  2. 2. 连接阶段:客户端告知代理要连接的目的地址和端口(SOCKS 报文),代理使用报文中的地址和端口与服务端创建连接,并将结果作为状态返回给客户端。

  3. 3. 数据传输阶段:客户端向代理发送数据,代理将数据发送到服务端;然后将服务端返回的数据返回给客户端。

Demo

socks-proxy-demo

还是使用上篇中的例子,在防火墙后有个 TCP 服务端,由于监听在 127.0.0.1:8081 还能在本地访问。同样,使用 Pipy 来模拟这个服务。

pipy().listen('127.0.0.1:8081').replaceData(() => new Data('Hi, TCP!\n'))

接下来,在服务端一侧建立一个 SOCKS 代理。

socks-proxy

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

test-socks-proxy

引用链接

[1] acceptSOCKS 过滤器: https://flomesh.io/pipy/docs/zh/reference/api/Configuration/acceptSOCKS

Pipy 实现 SOCKS 代理相关推荐

  1. SOCKS代理工具EarthWorm、sSoks

    SOCKS代理 常见的网络场景: 服务器在内网中,可以任意访问外部网络 服务器在内网中,可以访问外部用网络,但服务器安装了防火墙来拒绝敏感端口的连接 服务器在内网中,只对外开放了部分端口(例如80端口 ...

  2. autossh配置socks代理

    原理很简单就是用ssh -D建立socks代理,然后把浏览器配置成socks代理就是了.用路由器来做ssh -D的好处是不用在每个设备上(我有一个iphone,两个ipad,一个android手机,n ...

  3. rust 局域网联机_分享自己用 Rust 写的可以直接利用 SOCKS 代理的游戏加速器

    之前分享了一款自己用 Go 写的游戏加速器 IkaGo,但是我也在文章中多次提到,加速器最重要的是线路而不是技术.为了能更好的利用好手上的一些优质的众所周知的 SOCKS 代理,我又开发了一款加速器( ...

  4. 使用代理_工具的使用|MSF搭建socks代理

    目录 搭建代理 添加路由 搭建Socks4a代理 搭建Socks5代理 连接代理 注:通过MSF起的socks代理,经常性的不监听端口,也就导致代理失败.试过好多次都是这样,应该是MSF的一个bug. ...

  5. Android Studio 使用socks代理

    Android Studio 使用socks代理 准备工作 1. 从https://www.privoxy.org/下载Privoxy软件 2. 安装Privoxy 3. 在Privoxy安装目录找到 ...

  6. 代理是什么?(HTTP代理,SOCKS代理)

    本来打算通过UDP53来绕过认证,在准备实现DNS隧道的时候,发现所涉及的内容实在是太多了-(DNS解析原理,域名的原理,隧道技术,代理技术 and so on),每一个知识点都能让我深入去研究一段时 ...

  7. Socks代理是什么意思?有什么用?

    什么是Socks代理 Socks代理:中文名全能代理,就像有很多跳线的转接板,它只是简单地将一端的系统连接到另外一端.支持多种协议,包括http.ftp请求及其它类型的请求.它分socks 4 和so ...

  8. Socks代理是什么?PC端怎么使用Socks5代理?

    之前给大家介绍过代理IP是什么以及它的作用.代理服务器英文全称是Proxy Server,其功能就是代理网络用户去取得网络信息,形象的说:它是网络信息的中转站.最常用的代理莫过于HTTP代理与Sock ...

  9. 内网渗透建立代理通道(如何攻击目标内网机器?)-Socks代理(゚益゚メ) 渗透测试

    文章目录 搭建靶场 配置虚拟机网络 虚拟机 上线目标1(Target1) Socks代理 简介 正向代理 反向代理 FRP 一层代理 二层代理(多层代理) EW 正向代理 反向代理 二层代理流量转发 ...

最新文章

  1. 基于Go语言来理解Tensorflow
  2. vrml场景实例代码_高并发的中断下半部tasklet实例解析
  3. carsim学习笔记3——仿真环境(驾驶员道路环境)
  4. WCF 之 消息契约(MessageContract)
  5. linux循环控制结构,Linux Shell 之 Shell 基本控制结构(二)(循环结构)
  6. poj 1872 A Dicey Problem (bfs+WordFinal题)
  7. 机械表小案例之transform的应用
  8. VMware安装esxi6.7
  9. 《人类简史》笔记——认知革命和农业革命背后的思考
  10. python处理图片去白底-Python实现将蓝底照片转化为白底照片功能完整实例
  11. 插件用法--视频播放video.js
  12. matlab简易画爱心
  13. pigx框架费用_【开源项目】一篇文章搞掂:Pig微服务框架
  14. error: C2338: Type is not registered, please use the Q_DECLARE_METATYPE macro to make it known to Qt
  15. 汽车厂商 API数据接口
  16. 企业物流营销组合模式探讨 (zt)
  17. C#计算两个日期间隔年数、月数、天数
  18. OpenHarmony OpenSl ES音频录制
  19. CSS text-align:justify作用
  20. Origin作图流程

热门文章

  1. Linux -- echo
  2. PAC模式和全局模式的优缺点对比
  3. Unity 导入下载音效出错
  4. 官宣:了解神策数据分析师,这一篇就够了 | 神策招人记
  5. 根据选择区间段,变更DateTime控件值
  6. 北京信息科技大学Linux,北京信息科技大学Linux实验报告3
  7. shell脚本三大文本处理工具
  8. 济强 JLP352 打印机驱动
  9. aspen中再沸器模拟_【单元操作001】再沸器第一波·Aspen Plus中的再沸器设置
  10. gradle学习入门:Gradle是什么?Gradle有什么用?