Dodotry

Results 18 comments of Dodotry

> 用coredns官方的forward插件配置同样的上游DNS先验证下看看是不是能复现这个问题? > > 如果能,说明是网络的确有问题,比如丢包率很高,你可以尝试在高峰时期 `ping 114.114.114.114` 之类的看看丢包率。 > > 我看你用的是UDP协议(原始DNS),可以把协议换成TCP协议,TCP协议在国内的ToS一般高于UDP,高峰时期也许有用。 > > 另外这些常见的DNS地址全部io timeout,我怀疑是不是你的VPS宿主机层面禁用了UDP协议? > > 可以用 `dig @223.5.5.5 baidu.com` 试试看能不能正常响应。 > > `dig @223.5.5.5 +tcp baidu.com` (对应的TCP请求) 十分感谢回复,日志里面我没有开启正常响应的日志,只记录了告警类。ping常见的公共DNS延时正常没有丢包,我尝试使用TCP协议后,统计少了一些timeout,但国外公共DNS没有明显变化。...

> 如果你的是在**国内**的云服务器上请求**国外**的IP的话,应该会很容易导致丢包的(国情),即便TCP也是如此。 我猜测你用coredns官方forward插件请求国外公共DNS也会产生类似的情况,有条件的话你可以验证下看看。 VPS使用境外IP,并有GRE到国内节点上,路由将国内公共DNS指向GRE。用forward会有timeout情况,但很少,不常现。 > 需要你确认下: >> * 请求**国内**公共DNS io timeout是不是会明显减少很多? 国内有明显减少 >> * 请求**国外**公共DNS io timeout是不是会明显增加很多? 不会明显增加,只有1.1.1.1会相对较多超时。

> > VPS使用境外IP,并有GRE到国内节点上,路由将国内公共DNS指向GRE。用forward会有timeout情况,但很少,不常现。 > > 看起来拓扑结构是: End-user request VPS(海外) coredns 分流请求Public DNS(国内/国外) > > 你的意思是VPS coredns-dnsredir Public DNS经常出现io timeout,但是同样的配置换成coredns-forward之后io timeout会减少很多对吗? 对的。 > 另外,GRE是什么东西? VPS → CN Node创建了GRE隧道 到国内DNS走7.7.22.1/30 ![image](https://user-images.githubusercontent.com/48266156/137065119-0a720a1e-d956-49dd-9cb5-db09fea3ee79.png)

> 可以分别贴一下 coredns-dnsredir 和 coredns-forward的配置吗? > > 从第一条评论的日志来看,是海外VPS DNS回溯国内公共DNS(通过GRE隧道到CN node)查询的时候出现了UDP read timeout。 > > 我怀疑可能是GFW动了一些手脚,因为常规的DNS (UDP + TCP)请求都是明文的。 当前的配置是这样的,forward配置的时候没有走分流解析,简单的试了一下海外和国内各两个。没敢多试,有用户体验不好。 ```shell .:53 { errors hosts { fallthrough } forward . 127.0.0.1:5302...

> 我怀疑可能是GFW动了一些手脚,因为常规的DNS (UDP + TCP)请求都是明文的。 不排除这种可能。

> > 没敢多试,有用户体验不好。 > > 另外,如果你有很多用户使用的情况下,也是有可能被GFW盯上的。 > > 当然不排除机器性能跟不上用户请求,导致内核丢包,终端用户看到的就是超时了(UDP)。 还是感觉不太正常,看下面的一段配置,forward直接均衡到了202.130.97.65 8.8.8.8,相当于dnsredir已经空闲,而且去掉了健康检查,这一台是另外一台新VPS,几乎没什么访问量,这是什么原因? ![image](https://user-images.githubusercontent.com/48266156/137292415-3699b65b-da17-4646-9df6-a26454bbc9ea.png) 异常如下: ![image](https://user-images.githubusercontent.com/48266156/137292919-52b32692-d72b-46c6-bb20-4cd82f53bf6a.png)

> 另外看起来需要支持一下 `health_check 0` 去禁用health_check,等有时间我改下.. 我正在抓53端口的报文,空闲等待比较久,想多抓几个数据包供分析。

> > 另外看起来需要支持一下 `health_check 0` 去禁用health_check,等有时间我改下.. > > 我正在抓53端口的报文,空闲等待比较久,想多抓几个数据包供分析。 > 改为 `max_fails 0` 之后正常了吗? 附件是抓的报文,配置`max_fails 0`过后少了很多,是不是没有完全禁掉? [debugdns.zip](https://github.com/leiless/dnsredir/files/7345101/debugdns.zip)

> 另外看起来需要支持一下 `health_check 0` 去禁用health_check,等有时间我改下.. 哈哈,静候大佬佳音~