zfl9 / ipt2socks

将 iptables/nftables 传入的透明代理流量转为 socks5 流量的实用工具
GNU Affero General Public License v3.0
402 stars 94 forks source link

使用TPROXY代理UDP时,上级的SOCKSIP只有为127.0.0.1时能够正常工作 #53

Closed ly-druid closed 3 weeks ago

ly-druid commented 4 weeks ago

2024-05-17 11:19:10 INF: [udp_socks5_context_timeout_cb] context will be released, reason: manual 2024-05-17 11:19:10 INF: [udp_tproxy_recvmsg_cb] recv from 192.170.5.200#61155, nrecv:32 2024-05-17 11:19:10 INF: [udp_tproxy_recvmsg_cb] send to 8.8.8.8#53, nsend:42 2024-05-17 11:19:10 INF: [udp_tproxy_recvmsg_cb] recv from 192.170.5.200#61155, nrecv:32 2024-05-17 11:19:10 INF: [udp_tproxy_recvmsg_cb] send to 8.8.4.4#53, nsend:42 2024-05-17 11:19:11 INF: [udp_tproxy_recvmsg_cb] recv from 192.170.5.200#61157, nrecv:29 2024-05-17 11:19:11 INF: [udp_tproxy_recvmsg_cb] try to connect to 8.27.28.42#12380 ... 2024-05-17 11:19:11 INF: [udp_socks5_connect_cb] connect to 8.27.28.42#12380 succeeded 2024-05-17 11:19:11 INF: [udp_socks5_send_authreq_cb] send to 8.27.28.42#12380, nsend:3 2024-05-17 11:19:11 INF: [udp_socks5_recv_authresp_cb] recv from 8.27.28.42#12380, nrecv:2 2024-05-17 11:19:11 INF: [udp_socks5_recv_authresp_cb] send to 8.27.28.42#12380, nsend:19 2024-05-17 11:19:11 INF: [udp_socks5_recv_usrpwdresp_cb] recv from 8.27.28.42#12380, nrecv:2 2024-05-17 11:19:11 INF: [udp_socks5_recv_usrpwdresp_cb] send to 8.27.28.42#12380, nsend:10 2024-05-17 11:19:12 INF: [udp_socks5_recv_proxyresp_cb] recv from 8.27.28.42#12380, nrecv:10 2024-05-17 11:19:12 ERR: [udp_socks5_recv_proxyresp_cb] response->respcode:0x1(General server failure) is not SUCCEEDED:0

zfl9 commented 4 weeks ago

response->respcode:0x1(General server failure)

应该是上游 socks5 服务器的问题,发送 udp assoc 请求时,服务器响应了 0x01 错误码,所以失败。

zfl9 commented 4 weeks ago

你说的这种场景都是经过测试的,目前我就是(ipt2socks 和 socks5 服务器 在不同的局域网主机上,socks5 服务器是 clash),完全正常运行,因此可以推测,你这个是 socks5 服务器的问题(也许是配置问题,也许是 socks5 udp 实现不符合标准)。

cattyhouse commented 4 weeks ago

还有一种可能的情况就是 socks5 服务器的 ip 没有提前被 iptables RETURN 导致 dead loop

ly-druid commented 3 weeks ago

你说的这种场景都是经过测试的,目前我就是(ipt2socks 和 socks5 服务器 在不同的局域网主机上,socks5 服务器是 clash),完全正常运行,因此可以推测,你这个是 socks5 服务器的问题(也许是配置问题,也许是 socks5 udp 实现不符合标准)。

您使用的clash 带账密吗

zfl9 commented 3 weeks ago

没有。clash 的 socks5 传入应该不支持 password 认证。

ly-druid commented 3 weeks ago

试了不同的局域网是工作的,但是连接公网的socks不工作,使用的是同一种代理工具。。

zfl9 commented 3 weeks ago

那我这边估计也没什么办法,这个要去看上游 socks5 代理服务器的运行日志,看看为什么会给 ipt2socks 返回上述错误码(这个错误码是导致无法正常 UDP 代理的问题所在),ipt2socks 本身没什么问题(因为局域网内使用是正常工作的)。

你不去研究这个 socks5 服务器的日志的话,问题是解决不了的。。

zfl9 commented 3 weeks ago

response->respcode: 0x1 (General server failure)

这个错误码 1 是 socks5 服务器返回的,这是问题所在。