SOCKS5 服务器可以接受 TCP 连接,却仍拒绝访问目标的请求。判断哪个端点失败前,应先按正确阶段读取回复。

首先是方法选择。若选中用户名密码认证,它有自己的结果。之后服务器才返回 CONNECT 或其他 SOCKS 命令的回复。不能用另一个阶段的表格解释某阶段的字节值。

请求回复对应不同故障

回复值在 SOCKS5 请求回复中的含义
0x01一般服务器故障。
0x02规则集不允许连接。
0x03网络不可达。
0x04主机不可达。
0x05连接被拒绝。
0x06TTL 已过期。
0x07不支持该命令。
0x08不支持该地址类型。

例如,请求级拒绝是在已连接 SOCKS 服务后报告的,它不同于操作系统拒绝到该服务的初始 TCP 连接。

地址类型错误可能涉及 IPv4、IPv6 或主机名的表示方式,并不自动意味着整个端点不支持 SOCKS5。同样,UDP 命令不受支持也不能对另一次 TCP CONNECT 请求作出确定判断。

收集能让错误码发挥作用的上下文

编写错误报告时,应将代理地址、命令、目标主机和端口、地址族及 DNS 模式与结果一同记录。如果你管理该端点,服务器端的策略日志也很有用。规则集拒绝意味着应检查适用权限,而不是增大连接超时。

回复是服务器的报告,并非对目标网络完整、独立的诊断。不同客户端的措辞也会不同。可获取时应记录阶段和底层回复,不要只依赖简短的翻译错误信息。

相关文章