yanchang
yanchang
发布于 2025-04-29 / 25 阅读
0
0

DNS导致的服务器访问不稳定(吐槽MACOS的DNS缓存机制)

问题描述

今天感觉在宿舍的服务器访问很慢很慢,便把服务器上层的路由器重启了一下(每次进行此操作访问速度都会得到明显提升,但是本次出现较大问题),但是今天发现了一些问题(其实平时对服务器的访问就是很不稳定了但是今天尤为离谱),我可以通过浏览器进行访问服务器的服务,但是我无法使用NoMachine对宿舍的设备进行远程操作,或者使用SSH进行远程登录。由于能够使用浏览器进行服务的访问,所以最开始排除了DNS解析的问题,一直对服务器端进行排查,包括并且不限于关闭客户端代理,路由器重启,重写路由器NAT规则。重启服务器,等操作,但是均无效。所以归咎于玄学。

首先明确的事,确实关闭代理能够解决DNS解析错误的问题。但是今天的问题并非代理引起的。

问题排查

1.DNS 解析 IP 不一致

问题发现首先在于在终端中ping了一下我的域名,www.yanchang.xyz ,发现ip还是上一次路由器重启前的ip,明显和阿里云控制台中出现的解析不符合。通常来说出现这种情况是因为各个DNS服务器还没有同步解析更改,所以换一个网络或者等一会就好了。但是今天的问题有点奇怪了,我明明是可以使用浏览器访问服务的,初步猜测,浏览器难道是单独的走的DNS,然后不走系统级DNS吗?所以我做了一个小实验,修改了/etc/hosts 文件让www.baidu.com 指向127.0.0.1
vim /etc/hosts

好吧果然有问题,浏览器是不走系统级DNS的,事实上也可以在浏览器设置界面上找到

但是这里显示的是操作系统默认设置,所以说猜测,浏览器并不会去/etc/hosts下进行解析,并且浏览器此时使用的确实是系统级默认DNS,那么问题是在哪里呢,那么问题应该就在DNS缓存上了,也许此时系统DNS,也就是DNS服务器已经成功的更新解析了,但是系统级DNS缓存没更新,浏览器的DNS缓存已经更新了,所以出现了这个情况,那么此时清理一下DNS缓存也许就没问题,上网查找一下MACOS的DNS缓存策略,和清理命令。果然,DNS缓存时长ios设备长达24小时(真的晕死,为了续航都这样了吗),浏览器DNS缓存大概在1分钟左右

所以说这就造就了浏览器可以访问服务器服务,但是无法ssh远程登录服务器,那么解决这个难题就简单了。手动刷新DNS缓存就好了

sudo dscacheutil -flushcache

好了现在就可以远程进行ssh了

2.手机热点问题

今天是五月一号,还出现了一个问题,我尝试了刷新mac的dns信息已经无法登录,还是上次的IP,那么问题出现在哪里了????经过测试,你还别说是手机热点问题,依旧无法远程登录,怀疑是手机DNS缓存问题??


评论