linux下清理dns 缓存

首先我们要了解,dns查询的基本逻辑和缓存的存在位置


dns 查询说明

如图所示,基本逻辑为:
客户端 - 本机器dns解析器(如host,dnsmasq)- 本地dns服务器(比如家庭路由器)- 网络dns服务器

为了加速查询,在解析器和服务器上都有缓存在,一般而言我们要清理的是本机器上的dns缓存

常见的解析器

显然,我们必须首先了解本地机器用的是什么解析器,可以通过看哪个进程占据了53端口来查询,因为53端口是dns服务器端口。
可以通过以下指令:

netstat -tunlp | grep 53
或者是
sudo lsof -i :53 -S

分别会下列结果


image.png

image.png

针对不同的解析器
可以用不同的命令清理
针对system-resolved:

$ sudo systemd-resolve --flush-caches

$ sudo resolvectl flush-caches

$ sudo killall -USR2 systemd-resolved

同时为了验证dns缓存真的被清理了,可以用命令来查看缓存

sudo killall -USR1 systemd-resolved # 把缓存存入systemctl journalctl
sudo journalctl -r -u systemd-resolved #查看
![image.png](https://upload-images.jianshu.io/upload_images/23200524-4f99bda11ce99858.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)


针对dnsmasq:

$ sudo killall -HUP dnsmasq
$ sudo killall -USR1 dnsmasq  # 把缓存大小存入syslog

image.png

参考:
https://devconnected.com/how-to-flush-dns-cache-on-linux/

你可能感兴趣的:(linux下清理dns 缓存)