浅谈DNS

本文最后更新于:2023年11月3日 上午

起因

用校园网访问某 .cn 后缀网站,浏览器报错 链接已重置 ,百思不得其解,明明前几天还能够访问的,随即翻看网络工具的访问记录,排除了网络断开等其他问题,随即用命令行工具对网站域名进行ping的测试。
ping_result

过程

根据报错信息,我又尝试了nslookup,发现校园网的DNS解析不了,但是公共DNS服务器能够解析成ip并且能够成功访问,所以为了解决这个问题就很简单了,但是如果仅仅是为了解决这个问题,这个博客的含金量就太低了🌝,由于我的windows和mac都使用的clash内核的网络工具,有没有方法能够直接通过修改配置文件来统一多端呢?

接下来让我们了解一下Clash DNS的配置,具体请在它的Wiki进行了解,参考资料里列出的博客文章也有对不同情况下DNS解析的介绍,十分详细,如果你和我一样愿意折腾,我也推荐你看看。Clash 的redir-host 模式也因为要进行两次DNS解析,在某个版本后就不再支持了。所以现在较新的Clash内核版本已经不支持redir-host了,因为fake-ip能减少一次dns查询的时间,加快网络访问速度。那么我编辑了我配置文件的dns,然而并没有恢复正常访问。这时候我们就要了解一下Clash工具的分流机制了,实际上,如果你访问的域名是直连的情况,那么他的dns解析都是在本地进行,也并不会根据你配置文件里指定的dns来进行解析(再加上我平时不使用增强模式TUN),只有走PROXY的情况下,才会到远程服务器进行域名解析和访问。我目前遇到的问题就是直连无法访问并且nslookup查询不到ip,但是PROXY下就可以。

所以解决方法有很多:

更换系统DNS

这里以macos为例,Windows的帖子很多。在系统层面更改一个DNS服务器就可,比如223.5.5.5119.29.29.29
DNS_fix
这里换成了阿里和腾讯的公共DNS,解决了问题。(但是之后即便是这种公共DNS也同样遇到了问题,后面讲)

一劳永逸的方法

直接在你的YAML文件里加入

1
- DOMAIN,你本地访问有问题的url,PROXY

虽然我加入了这一条代码暂时解决了问题,但是明明可以直连访问的网站却需要PROXY属实让我不爽,为了明白原因决定继续折腾。

最后一天的发现

经身边朋友测试,和该网站的反馈的得知,确实有部分人的公司网络和我一样无法访问,但是家里就可访问,经过大多数人讨论得出就是DNS的原因,但是我在今天测试时发现大多数公共DNS都无法解析该域名,而且我用两台电脑都直连访问,macos仍然连接重置但是另一台Windows可以正常访问(在同一个局域网下),在AI和其他帖子的帮助下得知可能是本地DNS缓存的原因,果然DNS刷新后再重启就好了。。。
之后继续跟踪是否是这方面的原因,这里贴一下DNS刷新的命令

1
2
sudo dscacheutil -flushcache
sudo killall -HUP mDNSResponder

意外收获

发生这个事之后我同样对Clash的进行了一定程度的了解,之前一直以为filter只能在proxy-providers里使用,但是发现Clash内核已经支持Proxy-Group支持基于正则的filter,方便了自定义地区的策略组了。之后打算更新一期Clash Premium内核的配置文件模版吧,可能也会🐦,就先写到这里了。

参考资料


浅谈DNS
https://jackeyzzz12138.github.io/2023/08/14/折腾记-04/
作者
Jackey
发布于
2023年8月14日
许可协议