为什么透明代理中的 REDIRECT 方式仅支持 TCP,不支持 UDP?

查看 62|回复 3
作者:xiaohusky   
REDIRECT 方式是通过 iptables 规则将流量重定向到代理服务器的本地端口。它是通过修改 IP 层的目标 IP 地址和端口号来实现的。当网络数据包经过 iptables 规则时,它们的目标 IP 地址和端口会被修改为代理服务器的 IP 地址和端口,从而将流量重定向到代理服务器。
然而,这种修改目标 IP 地址和端口的方式只适用于 TCP 协议,因为 TCP 是面向连接的协议,可以通过修改目标 IP 地址和端口来建立连接。而对于 UDP 协议,它是无连接的,没有建立连接的过程,因此无法通过修改目标 IP 地址和端口来实现透明代理。
我搜到的答案是这个,但是小弟理解能力比较差,有大佬解释一下吗?或者给一个例子

端口, TCP, 地址, 代理

kyor0   
tproxy 是支持 udp 的。
我个人更想知道 tproxy 和 REDIRECT 有啥区别,之前倒腾 passwall 的时候查过,但没啥收获
ysc3839   
印象中在哪看过分析,就是因为 Linux 没有实现。好像是因为 TCP 有连接状态,所以 Linux 记下了原始的目标,重定向到代理程序后,程序可以获取到目标。而 UDP 获取不到目标,就不支持。
xiaohusky
OP
  
@ysc3839 我又去搜索了一下,好像就是因为这个原因,UDP 没有记录原始的目标,所以修改后就改不回去了,TCP 记录过原始目标,修改后该可以改回去
您需要登录后才可以回帖 登录 | 立即注册

返回顶部