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

[Super Bad] Windows和Xbox拒绝域名解析得到的IP,无法上网 #47

Closed yykhysn closed 5 years ago

yykhysn commented 5 years ago

Bug 详情

一台电脑双操作系统(Dual Boot),系统一:一切正常,系统二:无论国外还是国内的域名都无法解析。以下全是对有问题的系统二详细描述:

DNS解析有FAKE IP的应答(nslookup 验证),怀疑在这种情况下Clash无法处理Fake IP与真实域名IP的映射——客户端有Fake IP,但服务端(Clash)却告知域名无法解析,因为无法对应。这种DNS无法解析是秒应答的无法解析,不是等待上游DNS服务器回应,而经过一段时间等待后才告知无法解析。

屏幕截图 image

渴望

不知道是目前KoolClash的机制在Dual Boot电脑上DNS解析都有问题(本身功能不足),还是我配置有问题,都希望域名问题能尽快解决,恢复用户的正常使用。

SukkaW commented 5 years ago

尝试通过 curl 发起请求并查看 Clash 日志。如果 Fake IP 和真实域名的映射过期,那么在 Clash 的日志内会表现为请求直接发往 Fake IP、而不是域名。

yykhysn commented 5 years ago

尝试通过 curl 发起请求并查看 Clash 日志。如果 Fake IP 和真实域名的映射过期,那么在 Clash 的日志内会表现为请求直接发往 Fake IP、而不是域名。

Clash日志中没有该设备的连接,应该是客户端拒绝了198的FAKE IP,认为198的IP不可用,判定为查找不到域名。 这不是某个应用程序的问题,而是操作系统上所有浏览器和其他应用程序都无法访问网络。

附该设备是Windows 10电脑,希望尽快找到解决办法。 (其他Win10电脑都正常吗?)

curl执行结果: (6) Could not resolve host nslookup执行结果: 198的Fake IP

@SukkaW @cnzgray

SukkaW commented 5 years ago

所以 nslookup 能获得 198 开头的 Fake IP,即 DNS 已经指向 KoolClash 的 DNS;那么系统的网关是否也指向 KoolClash 所在的设备?

yykhysn commented 5 years ago

所以 nslookup 能获得 198 开头的 Fake IP,即 DNS 已经指向 KoolClash 的 DNS;那么系统的网关是否也指向 KoolClash 所在的设备?

当然,网关是指向KoolClash所在的设备 @SukkaW

SukkaW commented 5 years ago

据我所知,绝大部分浏览器和应用程序都支持域名指向 Fake IP。

经过正确配置以后,设备的网络请求产生的日志如下所示:

image

image

yykhysn commented 5 years ago

据我所知,绝大部分浏览器和应用程序都支持域名指向 Fake IP。

经过正确配置以后,设备的网络请求产生的日志如下所示:

image

image

我不知道怎么配置。其他所有设备都连接正常(包括手机、游戏机、电视机及linux电脑),唯独Windows 10电脑不行。这可能是Windows 10电脑再将解析获得的IP与域名进行检查发现不对,而拒绝连接。求助!绝望中 @SukkaW

yykhysn commented 5 years ago

请求下一版本放开fake-ip-range的控制,用户可自行设置Fake IP范围。

通过网络抓包和借助Chrome的应用程序分析,确认应用程序将DNS请求交给操作系统后,操作系统没将查得的IP返回给应用程序,反之告诉应用程序域名解析不到。

又结合其他用户的报告,判断这可能是198的网段所致。所以请求下版本开放fake-ip-range的控制,可自行设置Fake IP范围。 @SukkaW

yykhysn commented 5 years ago

使用最新的版本Fake-IP lru cache,Windows及Xbox无法解析域名的问题得到解决。期待UDP透明代理也尽快支持。KoolClash is so Awesome!