首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SOCKS5没有BND.ADDR或BND.PORT响应吗?

SOCKS5没有BND.ADDR或BND.PORT响应吗?
EN

Stack Overflow用户
提问于 2022-06-25 10:41:04
回答 1查看 53关注 0票数 1

虽然这看起来像一个bug,但一些开发人员认为它是如何完全符合RFC的。

我在Linux上编写了一个简单的C++程序,它连接到HTTP页面并通过Tor读取其内容。我使用以下命令启动tor服务:

代码语言:javascript
复制
tor --ignore-missing-torrc -f / --SocksPort auto --DataDirectory $HOME/tren/tor_0

$HOME/tren只是我作为tmpfs挂载的一个目录(顺便说一句,即使我只运行tor,也会发生同样的情况)。Tor连接成功,我可以使用它的套接字。现在,我的程序与端口协商如下:

我发送{5,1,0}

SOCKS5发送{5,0}

我发送{5,1,0,3,17,www.icanhazip.com,0,80}

SOCKS5发送{5,0,0,1,0,0,0,0,0,0}

此域名地址是逐字节写入的,不需要空条件。为什么我的SOCKS5响应为0地址?如果我使用本地解析的IPv4连接到网站,也会发生同样的情况。我尝试请求HTTP页面,它正确地响应。

我使用的是Arch,我已经安装了正式的tor软件包。

编辑:我删除了我的代码,因为它是不完整的,而且远离“最小”。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-06-25 15:55:09

您的SOCKS5请求非常好,代理正在回复它成功地连接到www.icanhazip.com:80,因此开始根据需要通过现有的代理连接交换HTTP数据。

代理的答复只是告诉您,当它连接到0.0.0.0:0时,它将自己绑定到www.icanhazip.com:80 (或者它选择不告诉您它绑定到的实际IP/端口)。

代码语言:javascript
复制
                       BND.ADDR/BND.PORT
                              |
                              \/
+--------+          +-------+          +--------+
| Client | x <-> p1 | Proxy | p2 <-> y | Target |
+--------+          +-------+          +--------+
                        ^
                        |       +-----+
                        +-----> | DNS |
                                +-----+

您所引用的零位于代理应答的BND.ADDR/BND.PORT字段中。这些字段表示上面的p2 -代理在解析客户端请求的主机名后用于连接目标服务器的出站IP/端口。听起来,您希望这些字段包含y目标服务器的入站IP/端口,但情况并非如此。

您不需要知道目标的IP/端口才能使用连接。您通过代理在您和目标之间有一个功能齐全的隧道,只需在隧道建立后使用- is连接即可。你不可能知道目标的IP/端口。你不能从代理那里得到那个信息。获得它的唯一方法是自己解析主机名(这违背了请求代理为您解析它的目的),或者询问目标本身(如果它有一个用于此目的的脚本)。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72753182

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档