客户端已通过身份验证,UDP 关联也已放行。回复仍然失败。在 Dante 中,检查处理返回流量的规则方向。

Dante 将发起命令与回复处理分开:

规则命令fromto
connect, bind, udpassociate内部客户端外部目标
bindreply, udpreply外部主机内部客户端

把客户端的子网限制原样复制到两个方向,因此可能在回复规则中匹配到错误的一侧。要检查预期的外部发送方和内部接收方,而不只是 pass 规则中是否出现了 UDP 这个词。

身份验证有一个相关边界。响应 UDP 数据报的外部服务并不是能完成你的用户名/密码交换的 SOCKS 客户端。Dante 的文档说明,回复操作源自客户端先前的 BIND 或 UDP 关联;应当对该发起操作进行身份验证,并应用相应的关联回复策略。

这并不等于允许不受限制的未经请求的入站流量。 UDP 关联、目标策略、中继地址和防火墙路径仍然重要。启用 bindreply 也不会把 UDP 关联变成通用的公网端口转发服务。

要把客户端侧的 SOCKS 交换与实际的 UDP 返回路径分别看清楚。TCP 登录成功既不能验证回复 ACL 的地址方向,也不能验证 UDP 中继端点的可达性。

相关文章