首先我們要了解,dns查詢的基本邏輯和緩存的存在位置
dns 查詢說明
如圖所示,基本邏輯為:
客戶端 - 本機器dns解析器(如host,dnsmasq)- 本地dns服務(wù)器(比如家庭路由器)- 網(wǎng)絡(luò)dns服務(wù)器
為了加速查詢,在解析器和服務(wù)器上都有緩存在,一般而言我們要清理的是本機器上的dns緩存
常見的解析器
顯然,我們必須首先了解本地機器用的是什么解析器,可以通過看哪個進(jìn)程占據(jù)了53端口來查詢,因為53端口是dns服務(wù)器端口。
可以通過以下指令:
netstat -tunlp | grep 53
或者是
sudo lsof -i :53 -S
分別會下列結(jié)果
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 #查看

針對dnsmasq:
$ sudo killall -HUP dnsmasq
$ sudo killall -USR1 dnsmasq # 把緩存大小存入syslog
image.png
參考:
https://devconnected.com/how-to-flush-dns-cache-on-linux/