【发布时间】:2018-03-29 20:09:00
【问题描述】:
我正在尝试根据RFC1928 实现反向 SOCKS5。我有一个中继服务器,它被动地等待来自充当代理的 SOCKS5 客户端的连接,以及想要使用隧道的客户端。
传奇
服务器 (10.211.55.6) = 中继 = PC 1(发送/接收)
Client_1 (10.211.55.10) = 代理(在我网络中的另一台 PC 上运行)
Client_2 (10.211.55.8) = Tunneller(从 MaxThon 浏览器连接(因为它允许 SOCKS5 身份验证))
执行流程
- Client_1 在端口 9444 上连接到服务器
- 服务器找到一个未使用的端口并绑定到它(假设端口 13451 已打开)
- Client_2 在端口 13451 上连接到服务器
- 服务器接受连接,现在中继 Client_1 和 Client_2 之间的流量
- Client_2 将 SOCKS5 协议(根据 RFC1928)请求通过 Server 中继发送到 Client_1
- Client_1 进行身份验证并获得一个 CONNECT 命令到
https://dnsleaktest.com并返回一个status_ok响应 - 收到来自网页的数据包,并加载网页
问题
- Client_2 想要连接到另一个网页(以
https://packetstormsecurity.com为例)。
问题
Client_1 只接收来自 Client_2 的几个数据包,例如 \x17\x3\x3 或 \x17\x3\x3\x1(这些字节代表什么?)。 Client_1 是否必须再次通过 SOCKS5 认证,或者它将如何处理对新网页的请求?
旁注
A) 过了一会儿,Client_2 向 Client_1 请求的页面在浏览器中返回 ERR_TIMED_OUT,因为 Client_2 没有得到任何响应。但如果它期待响应,那么它也假设我知道如何解析它发送的字节,但我不知道它们是什么,因为我在 RFC1928 文档中没有看到它们。
【问题讨论】: