SukkaW / Koolshare-Clash

:cat: Run Clash Tunnel on Koolshare OpenWrt
https://koolclash.js.org
GNU General Public License v3.0
1.33k stars 241 forks source link

如何对来自IPv6的DNS提供服务 #49

Closed yykhysn closed 5 years ago

yykhysn commented 5 years ago

双栈网络中,客户端会发两个DNS请求,一个发往IPv4的DNS服务器,另一个发向IPv6的DNS服务器。这就需要将V4和V6的DNS请求都定向给Clash,Clash在V4、V6都进行监听。

但Clash的DNS只在0.0.0.0:23453监听,我用IPv6连接Clash所在路由器的23453端口,连接超时,说明Clash的DNS不在IPv6提供服务。 我无法修改listen配置,比如用‘:53’进行尝试,因为Clash会自动修改回0.0.0.0:23453。

客户端会发两个DNS请求,另一个没有到达Clash的域名解析将受到污染,致使时不时就访问不了被墙网站。

如果我将客户端的IPv6 DNS去掉,那么客户端会尝试连接无效的,导致每次客户端DNS解析时间巨长,等待IPv6的DNS超时;写成别的,访问正常网站没问题,但被墙网站时不时上不去,当收到Clash认为是污染的IP。

请求帮助中,真挚的。

SukkaW commented 5 years ago

我很难理解你在说什么。 我觉得你根本没有理解 KoolClash 的工作原理。 推荐阅读以下资料,首先认识 Clash 和 KoolClash 的工作原理:

https://blog.skk.moe/post/what-happend-to-dns-in-proxy/ https://blog.skk.moe/post/alternate-surge-koolclash-as-gateway/

yykhysn commented 5 years ago

双栈网络中,客户端既有IPv4的DNS又有IPv6的上游DNS服务器,但只有IPv4的DNS通过199.18.0.1被重定向给Clash,IPv6的DNS没走到达Clash。我把客户端的IPv6上游DNS服务器设置为装有Clash的旁路由的IPv6地址,重定向至23456,可Clash并不在IPv6的23453端口监听。可能是因为yml配置文件中写的是listen:0.0.0.0:23453,不含IPv6。

xiaomingplus commented 4 years ago

@yykhysn 解决了吗? 我也在尝试使用clash 解析和代理ipv6的请求,好像官方默认配置的一些iptables都只考虑了ipv4, 所以很棘手啊,不知道要改多少配置。。