zfl9 / ss-tproxy

搭建 SS/SSR/V2Ray/Trojan/Socks5 透明代理的 Shell 脚本

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

关于v4透明代理下v6解析的处理方式

Bitcion opened this issue · comments

如果只开启v4透明代理的话,那判断生效后送入可信dns解析的ipv6结果也会被舍弃吗?送入上游返回的被污染的v6解析是保留还是舍弃呢?

我的使用是只开启ipv4透明代理,ipv6作为一个直连穿透。如果本地dns没有污染的话一切都正常,估计返回的v6连接也被gfw阻断,可以顺利跳回ipv4代理翻墙
实际有个潜在的风险:就是本地解析返回的是一个被污染的结果,即是只有dns4也包含了ipv6解析。我没经过严谨的测试,但是感觉是这个被污染的v6会更快去直连然后返回一个无法访问的反馈,然后因为v6已经发生了访问,所以流量也不会进入代理。

我的猜测是如果dns一旦寻找到规则,就舍弃所有本地解析的结果,可能就没这问题了?

commented

dns解析 和 ip(地址)走代理 是独立的。
对于只开启ipv4透明代理的情况,v6域名正常解析(反之亦然):

  • 对于global模式,除ignlist.ext外的域名,都是走dns_remote(6)远程上游(走代理),所以拿到的ipv6地址是无污染的
  • 对于gfwlist模式,只要域名在gfwlist.txt/ext列表,就会走dns_remote(6)远程上游(走代理),所以拿到的ipv6地址是无污染的
  • 对于chnroute模式,因为chnroute和chnroute6两个ipset默认存在,而访问远程dns会走代理,所以拿到的ipv6地址是无污染的

但是,这仅仅是拿到了无污染的v6地址,由于ipv6透明代理未启用,所以访问这些v6地址时,走直连

总之,dns解析行为,取决于dns服务的配置,包括你说的丢弃/保留,都是dns服务器的行为,默认不丢弃。

dns解析 和 ip(地址)走代理 是独立的。 对于只开启ipv4透明代理的情况,v6域名正常解析(反之亦然):

  • 对于global模式,除ignlist.ext外的域名,都是走dns_remote(6)远程上游(走代理),所以拿到的ipv6地址是无污染的
  • 对于gfwlist模式,只要域名在gfwlist.txt/ext列表,就会走dns_remote(6)远程上游(走代理),所以拿到的ipv6地址是无污染的
  • 对于chnroute模式,因为chnroute和chnroute6两个ipset默认存在,而访问远程dns会走代理,所以拿到的ipv6地址是无污染的

但是,这仅仅是拿到了无污染的v6地址,由于ipv6透明代理未启用,所以访问这些v6地址时,走直连

总之,dns解析行为,取决于dns服务的配置,包括你说的丢弃/保留,都是dns服务器的行为,默认不丢弃。

我目前的方案是拿ap上放了一个adguard home,当做本地的dns服务器。在考虑究竟是保留v6解析,然后作为无污染本地解析,还是当成舍弃v6作为一个远程解析比较好

另外还有个问题:为了方便控制dns,我的dns6改了个无效的本地ipv6地址,目的是用dns4完成v4+v6解析。这种情况下,tp里预留的本地跟远程dns6设置是不是就会完全不触发

commented

dns_direct6/dns_remote6只在启用ipv6透明代理时使用。